ng2-rest 13.1.2 → 13.1.4

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.
Files changed (64) hide show
  1. package/app.d.ts +1 -1
  2. package/app.js +4 -4
  3. package/browser/esm2020/lib/content-type.mjs +1 -1
  4. package/browser/esm2020/lib/cookie.mjs +1 -1
  5. package/browser/esm2020/lib/helpers.mjs +1 -1
  6. package/browser/esm2020/lib/index.mjs +1 -1
  7. package/browser/esm2020/lib/mapping.mjs +1 -1
  8. package/browser/esm2020/lib/models.mjs +1 -1
  9. package/browser/esm2020/lib/other/simple-resource.mjs +1 -1
  10. package/browser/esm2020/lib/params.mjs +1 -1
  11. package/browser/esm2020/lib/request-cache.mjs +1 -1
  12. package/browser/esm2020/lib/resource.service.mjs +1 -1
  13. package/browser/esm2020/lib/rest-headers.mjs +1 -1
  14. package/browser/esm2020/lib/rest-request.mjs +1 -1
  15. package/browser/esm2020/lib/rest.class.mjs +1 -1
  16. package/browser/fesm2015/ng2-rest.mjs.map +1 -1
  17. package/browser/fesm2020/ng2-rest.mjs.map +1 -1
  18. package/client/esm2020/lib/content-type.mjs +1 -1
  19. package/client/esm2020/lib/cookie.mjs +1 -1
  20. package/client/esm2020/lib/helpers.mjs +1 -1
  21. package/client/esm2020/lib/index.mjs +1 -1
  22. package/client/esm2020/lib/mapping.mjs +1 -1
  23. package/client/esm2020/lib/models.mjs +1 -1
  24. package/client/esm2020/lib/other/simple-resource.mjs +1 -1
  25. package/client/esm2020/lib/params.mjs +1 -1
  26. package/client/esm2020/lib/request-cache.mjs +1 -1
  27. package/client/esm2020/lib/resource.service.mjs +1 -1
  28. package/client/esm2020/lib/rest-headers.mjs +1 -1
  29. package/client/esm2020/lib/rest-request.mjs +1 -1
  30. package/client/esm2020/lib/rest.class.mjs +1 -1
  31. package/client/fesm2015/ng2-rest.mjs.map +1 -1
  32. package/client/fesm2020/ng2-rest.mjs.map +1 -1
  33. package/index.js +1 -1
  34. package/lib/content-type.js +1 -1
  35. package/lib/cookie.js +1 -1
  36. package/lib/helpers.js +1 -1
  37. package/lib/index.js +1 -1
  38. package/lib/mapping.js +1 -1
  39. package/lib/models.js +1 -1
  40. package/lib/other/simple-resource.js +1 -1
  41. package/lib/params.js +1 -1
  42. package/lib/request-cache.js +1 -1
  43. package/lib/resource.service.js +1 -1
  44. package/lib/rest-headers.js +1 -1
  45. package/lib/rest-request.js +1 -1
  46. package/lib/rest.class.js +1 -1
  47. package/package.json +9 -9
  48. package/package.json_tnp.json5 +2 -0
  49. package/tmp-environment.json +163 -163
  50. package/websql/esm2020/lib/content-type.mjs +1 -1
  51. package/websql/esm2020/lib/cookie.mjs +1 -1
  52. package/websql/esm2020/lib/helpers.mjs +1 -1
  53. package/websql/esm2020/lib/index.mjs +1 -1
  54. package/websql/esm2020/lib/mapping.mjs +1 -1
  55. package/websql/esm2020/lib/models.mjs +1 -1
  56. package/websql/esm2020/lib/other/simple-resource.mjs +1 -1
  57. package/websql/esm2020/lib/params.mjs +1 -1
  58. package/websql/esm2020/lib/request-cache.mjs +1 -1
  59. package/websql/esm2020/lib/resource.service.mjs +1 -1
  60. package/websql/esm2020/lib/rest-headers.mjs +1 -1
  61. package/websql/esm2020/lib/rest-request.mjs +1 -1
  62. package/websql/esm2020/lib/rest.class.mjs +1 -1
  63. package/websql/fesm2015/ng2-rest.mjs.map +1 -1
  64. package/websql/fesm2020/ng2-rest.mjs.map +1 -1
@@ -252,4 +252,4 @@ Resource.Cookies = Cookie.Instance;
252
252
  // isArray: true
253
253
  // })
254
254
  // .array.
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvbmcyLXJlc3QvcHJvamVjdHMvbmcyLXJlc3Qvc3JjL2xpYi9yZXNvdXJjZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUN0QyxLQUFLLENBQUMsU0FBUyxDQUNoQixDQUFBO0FBRUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUdsQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFdEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBTzFDLE1BQU0sT0FBTyxRQUFRO0lBaUhuQixZQUFZO0lBRVoscUJBQXFCO0lBQ3JCO1FBQ0UsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRTtnQkFBRSxXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTthQUFFO1lBQUEsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUF0SE0sTUFBTSxLQUFLLFlBQVk7UUFDNUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFD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QUFDO1lBQ3BFLG1FQUFtRTtZQUNuRSw0QkFBNEI7WUFDNUIsOEJBQThCO1lBQzlCLEdBQUcsQ0FBQyxlQUFlLEdBQUcsR0FBRyxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7U0FDaEQ7YUFBTTtZQUNMLEdBQUcsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLENBQUM7U0FDOUI7UUFBQSxDQUFDO1FBRUYsa0RBQWtEO1FBQ2xELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs7QUFsUGdCLHNCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7QUFDbkQsdUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBNEIsQ0FBQztBQVE1RCx1QkFBYyxHQUFZLElBQUksQ0FBQztBQStDOUIsaUJBQVEsR0FBRyxJQUFJLFFBQVEsRUFBb0IsQ0FBQztBQUM1QyxrQkFBUyxHQUFHLEVBQUUsQ0FBQztBQVFmLGdCQUFPLEdBQWdCLElBQUksV0FBVyxFQUFFLENBQUM7QUF3RHhELFlBQVk7QUFFRSxnQkFBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUE4SDFDLGtDQUFrQztBQUNsQyxjQUFjO0FBQ2QsWUFBWTtBQUNaLGlCQUFpQjtBQUNqQixnQkFBZ0I7QUFDaEIsb0JBQW9CO0FBQ3BCLE9BQU87QUFDUCxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIGltcG9ydHNcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvZywgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL2Jyb3dzZXInO1xuY29uc3QgbG9nID0gTG9nLmNyZWF0ZSgncmVzb3VjZS1zZXJ2aWNlJyxcbiAgTGV2ZWwuX19OT1RISU5HXG4pXG5cbmltcG9ydCB7IFJlc3QgfSBmcm9tICcuL3Jlc3QuY2xhc3MnO1xuaW1wb3J0IHsgUmVzdFJlcXVlc3QgfSBmcm9tICcuL3Jlc3QtcmVxdWVzdCc7XG5pbXBvcnQgeyBSZXN0SGVhZGVycyB9IGZyb20gJy4vcmVzdC1oZWFkZXJzJztcbmltcG9ydCB7IENvb2tpZSB9IGZyb20gJy4vY29va2llJztcbmltcG9ydCB7IE1hcHBpbmcgfSBmcm9tICcuL21hcHBpbmcnO1xuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgaW50ZXJwb2xhdGVQYXJhbXNUb1VybCwgaXNWYWxpZCwgY29udGFpbnNNb2RlbHMsIGdldE1vZGVscyB9IGZyb20gJy4vcGFyYW1zJztcbmltcG9ydCB7IENpcmMgfSBmcm9tICdqc29uMTAvYnJvd3Nlcic7XG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAndG5wLWNvcmUvYnJvd3NlcidcbmltcG9ydCB7IENPTlRFTlRfVFlQRSB9IGZyb20gJy4vY29udGVudC10eXBlJztcbi8vI2VuZHJlZ2lvblxuXG5kZWNsYXJlIGNvbnN0IGdsb2JhbDogYW55O1xuXG5cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZTxFLCBULCBUQT4ge1xuICBwcm90ZWN0ZWQgc3RhdGljIF9saXN0ZW5FcnJvcnMgPSBuZXcgU3ViamVjdDxNb2RlbHMuQmFja2VuZEVycm9yPigpO1xuICBwcm90ZWN0ZWQgc3RhdGljIF9saXN0ZW5TdWNjZXNzID0gbmV3IFN1YmplY3Q8TW9kZWxzLkh0dHBSZXNwb25zZTxhbnk+PigpO1xuICBwdWJsaWMgc3RhdGljIGdldCBsaXN0ZW5FcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xpc3RlbkVycm9ycy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGxpc3RlblN1Y2Nlc3NPcGVyYXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9saXN0ZW5TdWNjZXNzLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG4gIHB1YmxpYyBzdGF0aWMgZW5hYmxlV2FybmluZ3M6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8vI3JlZ2lvbiBwcml2YXRlIG10aG9kcyBhbmQgZmllbGRzXG4gIHByaXZhdGUgZ2V0Wm9uZSgpIHtcbiAgICBjb25zdCBpc05vZGUgPSAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgaWYgKGlzTm9kZSkgeyByZXR1cm4gfTtcbiAgICBjb25zdCBuZyA9IHdpbmRvd1snbmcnXTtcbiAgICBjb25zdCBnZXRBbGxBbmd1bGFyUm9vdEVsZW1lbnRzID0gd2luZG93WydnZXRBbGxBbmd1bGFyUm9vdEVsZW1lbnRzJ107XG4gICAgaWYgKCFuZyB8fCAhZ2V0QWxsQW5ndWxhclJvb3RFbGVtZW50cykgeyByZXR1cm47IH1cbiAgICBjb25zdCBwcm9iZSA9IG5nLnByb2JlO1xuICAgIGNvbnN0IGNvcmVUb2tlbnMgPSBuZy5jb3JlVG9rZW5zO1xuICAgIGlmICghY29yZVRva2VucyB8fCAhY29yZVRva2Vucy5OZ1pvbmUpIHsgcmV0dXJuOyB9XG4gICAgY29uc3Qgem9uZUNsYXNzID0gY29yZVRva2Vucy5OZ1pvbmU7XG4gICAgaWYgKCFwcm9iZSB8fCB0eXBlb2YgcHJvYmUgIT09ICdmdW5jdGlvbicgfHwgIWdldEFsbEFuZ3VsYXJSb290RWxlbWVudHMpIHsgcmV0dXJuOyB9XG4gICAgY29uc3QgYW5ndWxhckVsZW1lbnRzOiBhbnlbXSA9IGdldEFsbEFuZ3VsYXJSb290RWxlbWVudHMoKTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYW5ndWxhckVsZW1lbnRzKSB8fCBhbmd1bGFyRWxlbWVudHMubGVuZ3RoID09PSAwKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gbmcucHJvYmUoYW5ndWxhckVsZW1lbnRzWzBdKTtcbiAgICBpZiAoIXJvb3RFbGVtZW50KSB7IHJldHVybjsgfVxuICAgIGNvbnN0IGluamVjdG9yID0gcm9vdEVsZW1lbnQuaW5qZWN0b3I7XG4gICAgaWYgKCFpbmplY3RvciB8fCAhaW5qZWN0b3IuZ2V0IHx8IHR5cGVvZiBpbmplY3Rvci5nZXQgIT09ICdmdW5jdGlvbicpIHsgcmV0dXJuOyB9XG4gICAgY29uc3Qgem9uZSA9IGluamVjdG9yLmdldCh6b25lQ2xhc3MpXG4gICAgcmV0dXJuIHpvbmU7XG4gIH1cblxuXG4gIHB1YmxpYyBzdGF0aWMgaW5pdEFuZ3VsYXJOZ1pvbmUoem9uZSkge1xuICAgIFJlc3RSZXF1ZXN0LnpvbmUgPSB6b25lO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja05lc3RlZE1vZGVscyhtb2RlbDogc3RyaW5nLCBhbGxNb2RlbHM6IE9iamVjdCkge1xuICAgIC8vIGlmIChtb2RlbC5pbmRleE9mKCcvJykgIT09IC0xKSB7IC8vVE9ETyBtYWtlIHRoaXMgYmV0dGVyLCBiZWNvdXNlIG5vdyBJIHVuZWNlc2FyeSBjaGVja2luZyBzaGl0XG4gICAgZm9yIChsZXQgcCBpbiBhbGxNb2RlbHMpIHtcbiAgICAgIGlmIChhbGxNb2RlbHMuaGFzT3duUHJvcGVydHkocCkpIHtcbiAgICAgICAgbGV0IG0gPSBhbGxNb2RlbHNbcF07XG4gICAgICAgIGlmIChpc1ZhbGlkKHApKSB7XG4gICAgICAgICAgbGV0IHVybE1vZGVscyA9IGdldE1vZGVscyhwKTtcbiAgICAgICAgICBpZiAoY29udGFpbnNNb2RlbHMobW9kZWwsIHVybE1vZGVscykpIHtcbiAgICAgICAgICAgIG1vZGVsID0gcDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyB9XG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2UgPSBuZXcgUmVzb3VyY2U8c3RyaW5nLCBhbnksIGFueT4oKTtcbiAgcHJpdmF0ZSBzdGF0aWMgZW5kcG9pbnRzID0ge307XG4gIHB1YmxpYyBzdGF0aWMgZ2V0TW9kZWwoZW5kcG9pbnQ6IHN0cmluZywgbW9kZWw6IHN0cmluZyk6IFJlc3Q8YW55PiB7XG4gICAgbW9kZWwgPSBSZXNvdXJjZS5wcmVwYXJlTW9kZWwobW9kZWwpO1xuICAgIGNvbnN0IGUgPSBSZXNvdXJjZS5lbmRwb2ludHNbZW5kcG9pbnRdO1xuICAgIGlmICghZSkgeyByZXR1cm4gdm9pZCAwOyB9XG4gICAgY29uc3QgciA9IFJlc291cmNlLmVuZHBvaW50c1tlbmRwb2ludF0ubW9kZWxzW21vZGVsXTtcbiAgICByZXR1cm4gUmVzb3VyY2UuZW5kcG9pbnRzW2VuZHBvaW50XS5tb2RlbHNbbW9kZWxdO1xuICB9XG4gIHByaXZhdGUgc3RhdGljIHJlcXVlc3Q6IFJlc3RSZXF1ZXN0ID0gbmV3IFJlc3RSZXF1ZXN0KCk7XG4gIC8vI2VuZHJlZ2lvblxuXG5cbiAgLy8jcmVnaW9uIGNyZWF0ZVxuICBwdWJsaWMgc3RhdGljIGNyZWF0ZTxBLCBUQSA9IEFbXT4oXG4gICAgZTogc3RyaW5nLFxuICAgIG1vZGVsPzogc3RyaW5nLFxuICAgIGVudGl0eU1hcHBpbmc/OiBNYXBwaW5nLk1hcHBpbmcsXG4gICAgY2lyY3VsYXI/OiBDaXJjW10sXG4gICAgY3VzdG9tQ29udGVudFR5cGU/OiBSZXN0SGVhZGVycyxcbiAgKTogTW9kZWxzLlJlc291cmNlTW9kZWw8QSwgVEE+IHtcbiAgICBjb25zdCBiYWRSZXN0UmVnRVggPSBuZXcgUmVnRXhwKCcoKFxcLzopW2Etel0rKSsnLCAnZycpO1xuICAgIGNvbnN0IG1hdGNoQXJyID0gbW9kZWwubWF0Y2goYmFkUmVzdFJlZ0VYKSB8fCBbXTtcbiAgICBjb25zdCBiYWRNb2RlbHNOZXh0VG9FYWNoT3RoZXIgPSBtYXRjaEFyci5qb2luKCk7XG4gICAgY29uc3QgYXRsZWFzMkRvdWJsZURvdHMgPSAoKGJhZE1vZGVsc05leHRUb0VhY2hPdGhlci5tYXRjaChuZXcgUmVnRXhwKCc6JywgJ2cnKSkgfHwgW10pLmxlbmd0aCA+PSAyKTtcbiAgICBpZiAoYXRsZWFzMkRvdWJsZURvdHMgJiYgbW9kZWwuc2VhcmNoKGJhZE1vZGVsc05leHRUb0VhY2hPdGhlcikgIT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFxuXG5CYWQgcmVzdCBtb2RlbDogJHttb2RlbH1cblxuRG8gbm90IGNyZWF0ZSByZXN0IG1vZGVscyBsaWtlIHRoaXM6ICAgIC9ib29rL2F1dGhvci86Ym9va2lkLzphdXRob3JpZFxuSW5zdGVhZCB1c2UgbmVzdGVkIGFwcHJvYWNoOiAgICAgICAgICAgIC9ib29rLzpib29raWQvYXV0aG9yLzphdXRob3JpZFxuICAgICAgICAgICAgYClcbiAgICB9O1xuICAgIFJlc291cmNlLm1hcChlLCBlKTtcbiAgICBSZXNvdXJjZS5pbnN0YW5jZS5hZGQoZSwgbW9kZWwgPyBtb2RlbCA6ICcnLCBlbnRpdHlNYXBwaW5nLCBjaXJjdWxhciwgY3VzdG9tQ29udGVudFR5cGUpO1xuICAgIC8vIGlmIChtb2RlbC5jaGFyQXQobW9kZWwubGVuZ3RoIC0gMSkgIT09ICcvJykgbW9kZWwgPSBgJHttb2RlbH0vYDtcbiAgICByZXR1cm4ge1xuICAgICAgbW9kZWw6IChwYXJhbXM/OiBPYmplY3QpID0+IFJlc291cmNlLmluc3RhbmNlLmFwaShcbiAgICAgICAgZSxcbiAgICAgICAgaW50ZXJwb2xhdGVQYXJhbXNUb1VybChwYXJhbXMsIG1vZGVsKVxuICAgICAgKSxcbiAgICAgIHJlcGxheTogKG1ldGhvZDogTW9kZWxzLkh0dHBNZXRob2QpID0+IHtcbiAgICAgICAgUmVzb3VyY2UuZ2V0TW9kZWwoZSwgbW9kZWwpLnJlcGxheShtZXRob2QpO1xuICAgICAgfSxcbiAgICAgIGdldCBoZWFkZXJzKCkge1xuICAgICAgICByZXR1cm4gUmVzb3VyY2UuZ2V0TW9kZWwoZSwgbW9kZWwpLmhlYWRlcnM7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiByZXNldFxuICBwdWJsaWMgc3RhdGljIHJlc2V0KCkge1xuICAgIFJlc291cmNlLmVuZHBvaW50cyA9IHt9O1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBjb25zdHJ1Y3RvclxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3Qgem9uZSA9IHRoaXMuZ2V0Wm9uZSgpO1xuICAgICAgaWYgKCFSZXN0UmVxdWVzdC56b25lKSB7IFJlc3RSZXF1ZXN0LnpvbmUgPSB6b25lIH07XG4gICAgfSlcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICBwdWJsaWMgc3RhdGljIENvb2tpZXMgPSBDb29raWUuSW5zdGFuY2U7XG5cbiAgLy8jcmVnaW9uIG1hcFxuICBwcml2YXRlIHN0YXRpYyBtYXAoZW5kcG9pbnQ6IHN0cmluZywgdXJsOiBzdHJpbmcpOiBib29sZWFuIHtcblxuICAgIGxvZy5pKCd1cmwnLCB1cmwpXG4gICAgbGV0IHJlZ2V4ID0gLyhodHRwfGh0dHBzKTpcXC9cXC8oXFx3Kzp7MCwxfVxcdyopPyhcXFMrKSg6WzAtOV0rKT8oXFwvfFxcLyhbXFx3IyE6Lj8rPSYlIVxcLVxcL10pKT8vO1xuICAgIGxldCBlID0gZW5kcG9pbnQ7XG4gICAgaWYgKCFyZWdleC50ZXN0KHVybCkpIHtcbiAgICAgIHRocm93IGBVcmwgYWRkcmVzcyBpcyBub3QgY29ycmVjdDogJHt1cmx9YDtcbiAgICB9XG4gICAgaWYgKHVybC5jaGFyQXQodXJsLmxlbmd0aCAtIDEpID09PSAnLycpIHVybCA9IHVybC5zbGljZSgwLCB1cmwubGVuZ3RoIC0gMSk7XG4gICAgbG9nLmkoJ3VybCBhZnRlcicsIHVybClcbiAgICBpZiAoUmVzb3VyY2UuZW5kcG9pbnRzW2VdICE9PSB2b2lkIDApIHtcbiAgICAgIEhlbHBlcnMubG9nKCdDYW5ub3QgdXNlIG1hcCBmdW5jdGlvbiBhdCB0aGUgc2FtZSBBUEkgZW5kcG9pbnQgYWdhaW4gKCdcbiAgICAgICAgKyBSZXNvdXJjZS5lbmRwb2ludHNbZV0udXJsICsgJyknKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgUmVzb3VyY2UuZW5kcG9pbnRzW2VdID0ge1xuICAgICAgdXJsOiB1cmwsXG4gICAgICBtb2RlbHM6IHt9LFxuICAgICAgZW50aXR5OiBudWxsXG4gICAgfTtcbiAgICBsb2cuaSgnZW5wb2ludHMnLCBSZXNvdXJjZS5lbmRwb2ludHMpXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgcHJpdmF0ZSBzdGF0aWMgcHJlcGFyZU1vZGVsKG1vZGVsKSB7XG4gICAgaWYgKG1vZGVsLmNoYXJBdChtb2RlbC5sZW5ndGggLSAxKSA9PT0gJy8nKSBtb2RlbCA9IG1vZGVsLnNsaWNlKDAsIG1vZGVsLmxlbmd0aCAtIDEpO1xuICAgIGlmIChtb2RlbC5jaGFyQXQoMCkgPT09ICcvJykgbW9kZWwgPSBtb2RlbC5zbGljZSgxLCBtb2RlbC5sZW5ndGgpO1xuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG5cbiAgLy8jcmVnaW9uIGFkZFxuICAvKipcbiAgICogQW5kIGVuaXBvaW50IHRvIGFwcGxpY2F0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7RX0gZW5kcG9pbnRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1vZGVsXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgcHJpdmF0ZSBhZGQoZW5kcG9pbnQ6IEUsIG1vZGVsOiBzdHJpbmcsIGVudGl0eTogTWFwcGluZy5NYXBwaW5nLCBjaXJjdWxhcj86IENpcmNbXSwgY3VzdG9tQ29udGVudFR5cGU/OiBSZXN0SGVhZGVycykge1xuICAgIGxvZy5pKGBJIGFtIG1hcGluZyAke21vZGVsfSBvbiAkezxhbnk+ZW5kcG9pbnR9YCk7XG4gICAgbW9kZWwgPSBSZXNvdXJjZS5wcmVwYXJlTW9kZWwobW9kZWwpO1xuXG4gICAgbGV0IGU6IHN0cmluZztcbiAgICBlID0gPHN0cmluZz4oZW5kcG9pbnQpLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAoUmVzb3VyY2UuZW5kcG9pbnRzW2VdID09PSB2b2lkIDApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0VuZHBvaW50IGlzIG5vdCBtYXBwZWQgISBDYW5ub3QgYWRkIG1vZGVsICcgKyBtb2RlbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChSZXNvdXJjZS5lbmRwb2ludHNbZV0ubW9kZWxzW21vZGVsXSAhPT0gdm9pZCAwKSB7XG4gICAgICBpZiAoUmVzb3VyY2UuZW5hYmxlV2FybmluZ3MpIGNvbnNvbGUud2FybihgTW9kZWwgJyR7bW9kZWx9JyBpcyBhbHJlYWR5IGRlZmluZWQgaW4gZW5kcG9pbnQ6IGBcbiAgICAgICAgKyBSZXNvdXJjZS5lbmRwb2ludHNbZV0udXJsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgUmVzb3VyY2UuZW5kcG9pbnRzW2VdLm1vZGVsc1ttb2RlbF0gPVxuICAgICAgbmV3IFJlc3Q8VCwgVEE+KFJlc291cmNlLmVuZHBvaW50c1tlXS51cmxcbiAgICAgICAgKyAnLycgKyBtb2RlbCwgUmVzb3VyY2UucmVxdWVzdCwge1xuICAgICAgICBlbmRwb2ludDogZSxcbiAgICAgICAgcGF0aDogbW9kZWwsXG4gICAgICAgIGVudGl0eSxcbiAgICAgICAgY2lyY3VsYXIsXG4gICAgICB9LCBjdXN0b21Db250ZW50VHlwZSk7IC8vIFRPRE8gcHV0IGN1c3RvbSBjb250ZW50IHR5cGUgaW4gbWV0YSA/XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBhcGlcbiAgLyoqXG4gICAqIEFjY2VzcyBhcGkgdGhyb3VnaHQgZW5kcG9pbnRcbiAgICpcbiAgICogQHBhcmFtIHtFfSBlbmRwb2ludFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kZWxcbiAgICogQHJldHVybnMge1Jlc3Q8VCwgVEE+fVxuICAgKi9cbiAgcHJpdmF0ZSBhcGkoZW5kcG9pbnQ6IEUsIG1vZGVsOiBzdHJpbmcpOiBSZXN0PFQsIFRBPiB7XG4gICAgLy8gbG9nLmkoYFthcGldXG5cbiAgICAvLyBjcmVhdGluZyBmb3IgZW5kcG9pbnQ6IFwiJHtlbmRwb2ludH1cIlxuICAgIC8vIG1vZGVsOiBcIiR7bW9kZWx9XCJcblxuICAgIC8vIGApXG4gICAgaWYgKG1vZGVsLmNoYXJBdCgwKSA9PT0gJy8nKSBtb2RlbCA9IG1vZGVsLnNsaWNlKDEsIG1vZGVsLmxlbmd0aCk7XG4gICAgbGV0IGUgPSA8c3RyaW5nPihlbmRwb2ludCkudG9TdHJpbmcoKTtcbiAgICBpZiAoUmVzb3VyY2UuZW5kcG9pbnRzW2VdID09PSB2b2lkIDApIHtcbiAgICAgIHRocm93IGBFbmRwb2ludDogJHs8YW55PmVuZHBvaW50fSBpcyBub3QgbWFwcGVkICEgQ2Fubm90IGFkZCBtb2RlbDogJHttb2RlbH1gO1xuICAgIH1cbiAgICBsZXQgYWxsTW9kZWxzOiBPYmplY3QgPSBSZXNvdXJjZS5lbmRwb2ludHNbZV0ubW9kZWxzO1xuICAgIGxldCBvcmdNb2RlbCA9IG1vZGVsO1xuICAgIG1vZGVsID0gdGhpcy5jaGVja05lc3RlZE1vZGVscyhtb2RlbCwgYWxsTW9kZWxzKTtcblxuICAgIGlmIChSZXNvdXJjZS5lbmRwb2ludHNbZV0ubW9kZWxzW21vZGVsXSA9PT0gdm9pZCAwKSB7XG4gICAgICAvLyBsb2cuZCgnUmVzb3VyY2UuZW5kcG9pbnRzJywgUmVzb3VyY2UuZW5kcG9pbnRzKTtcbiAgICAgIHRocm93IGBNb2RlbCAnJHttb2RlbH0nIGlzIHVuZGVmaW5lZCBpbiBlbmRwb2ludDogJHtSZXNvdXJjZS5lbmRwb2ludHNbZV0udXJsfSBgO1xuICAgIH1cblxuICAgIGxldCByZXM6IFJlc3Q8VCwgVEE+ID0gUmVzb3VyY2UuZW5kcG9pbnRzWzxzdHJpbmc+KGVuZHBvaW50KS50b1N0cmluZygpXS5tb2RlbHNbbW9kZWxdO1xuXG4gICAgLy8gbG9nLmQoYFxuICAgIC8vIG9yZ01vZGVsOiAke29yZ01vZGVsfVxuICAgIC8vIG1vZGVsOiAke21vZGVsfVxuXG4gICAgLy8gYClcbiAgICBpZiAob3JnTW9kZWwgIT09IG1vZGVsKSB7XG4gICAgICBsZXQgYmFzZVVybCA9IFJlc291cmNlLmVuZHBvaW50c1s8c3RyaW5nPihlbmRwb2ludCkudG9TdHJpbmcoKV0udXJsO1xuICAgICAgLy8gbG9nLmQoJ2Jhc2UnLCBSZXNvdXJjZS5lbmRwb2ludHNbPHN0cmluZz4oZW5kcG9pbnQpLnRvU3RyaW5nKCldKVxuICAgICAgLy8gbG9nLmQoJ2Jhc2VVcmwnLCBiYXNlVXJsKVxuICAgICAgLy8gbG9nLmQoJ29yZ01vZGVsJywgb3JnTW9kZWwpXG4gICAgICByZXMuX19yZXN0X2VuZHBvaW50ID0gYCR7YmFzZVVybH0vJHtvcmdNb2RlbH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMuX19yZXN0X2VuZHBvaW50ID0gdm9pZCAwO1xuICAgIH07XG5cbiAgICAvLyBsb2cuaShgUmVzb3VyY2UuZW5kcG9pbnRzYCwgUmVzb3VyY2UuZW5kcG9pbnRzKVxuICAgIHJldHVybiByZXM7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbn1cblxuXG5cbi8vIGNvbnN0IHJlcyA9IFJlc291cmNlLmNyZWF0ZSgnJylcbi8vIHJlcy5tb2RlbCgpXG4vLyAgIC5tb2NrKHtcbi8vICAgICBjb2RlOiA1MDAsXG4vLyAgICAgZGF0YToge30sXG4vLyAgICAgaXNBcnJheTogdHJ1ZVxuLy8gICB9KVxuLy8gICAuYXJyYXkuXG4iXX0=
255
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvbmcyLXJlc3QvcHJvamVjdHMvbmcyLXJlc3Qvc3JjL2xpYi9yZXNvdXJjZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUN0QyxLQUFLLENBQUMsU0FBUyxDQUNoQixDQUFBO0FBRUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUdsQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFdEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBTzFDLE1BQU0sT0FBTyxRQUFRO0lBaUhuQixZQUFZO0lBRVoscUJBQXFCO0lBQ3JCO1FBQ0UsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRTtnQkFBRSxXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTthQUFFO1lBQUEsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUF0SE0sTUFBTSxLQUFLLFlBQVk7UUFDNUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFTSxNQUFNLEtBQUssdUJBQXVCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBR0QsbUNBQW1DO0lBQzNCLE9BQU87UUFDYixNQUFNLE1BQU0sR0FBRyxDQUFDLE9BQU8sTUFBTSxLQUFLLFdBQVcsQ0FBQyxDQUFBO1FBQzlDLElBQUksTUFBTSxFQUFFO1lBQUUsT0FBTTtTQUFFO1FBQUEsQ0FBQztRQUN2QixNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsTUFBTSx5QkFBeUIsR0FBRyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMseUJBQXlCLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFDbEQsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUN2QixNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFO1lBQUUsT0FBTztTQUFFO1FBQ2xELE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDcEMsSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtZQUFFLE9BQU87U0FBRTtRQUNwRixNQUFNLGVBQWUsR0FBVSx5QkFBeUIsRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQUUsT0FBTztTQUFFO1FBQ2hGLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUFFLE9BQU87U0FBRTtRQUM3QixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLE9BQU8sUUFBUSxDQUFDLEdBQUcsS0FBSyxVQUFVLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFDakYsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNwQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFHTSxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSTtRQUNsQyxXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBYSxFQUFFLFNBQWlCO1FBQ3hELGtHQUFrRztRQUNsRyxLQUFLLElBQUksQ0FBQyxJQUFJLFNBQVMsRUFBRTtZQUN2QixJQUFJLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckIsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ2QsSUFBSSxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM3QixJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEVBQUU7d0JBQ3BDLEtBQUssR0FBRyxDQUFDLENBQUM7d0JBQ1YsTUFBTTtxQkFDUDtpQkFDRjthQUNGO1NBQ0Y7UUFDRCxJQUFJO1FBQ0osT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBSU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFnQixFQUFFLEtBQWE7UUFDcEQsS0FBSyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQUUsT0FBTyxLQUFLLENBQUMsQ0FBQztTQUFFO1FBQzFCLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JELE9BQU8sUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFlBQVk7SUFHWixnQkFBZ0I7SUFDVCxNQUFNLENBQUMsTUFBTSxDQUNsQixDQUFTLEVBQ1QsS0FBYyxFQUNkLGFBQStCLEVBQy9CLFFBQWlCLEVBQ2pCLGlCQUErQjtRQUUvQixNQUFNLFlBQVksR0FBRyxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN2RCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqRCxNQUFNLHdCQUF3QixHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqRCxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JHLElBQUksaUJBQWlCLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3RFLE1BQU0sSUFBSSxLQUFLLENBQUM7O2tCQUVKLEtBQUs7Ozs7YUFJVixDQUFDLENBQUE7U0FDVDtRQUFBLENBQUM7UUFDRixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuQixRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDekYsbUVBQW1FO1FBQ25FLE9BQU87WUFDTCxLQUFLLEVBQUUsQ0FBQyxNQUFlLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUMvQyxDQUFDLEVBQ0Qsc0JBQXNCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUN0QztZQUNELE1BQU0sRUFBRSxDQUFDLE1BQXlCLEVBQUUsRUFBRTtnQkFDcEMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxJQUFJLE9BQU87Z0JBQ1QsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUE7SUFDSCxDQUFDO0lBQ0QsWUFBWTtJQUVaLGVBQWU7SUFDUixNQUFNLENBQUMsS0FBSztRQUNqQixRQUFRLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBY0QsYUFBYTtJQUNMLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBZ0IsRUFBRSxHQUFXO1FBRTlDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQ2pCLElBQUksS0FBSyxHQUFHLDZFQUE2RSxDQUFDO1FBQzFGLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNwQixNQUFNLCtCQUErQixHQUFHLEVBQUUsQ0FBQztTQUM1QztRQUNELElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUc7WUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzRSxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUN2QixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQywwREFBMEQ7a0JBQ2xFLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHO1lBQ3RCLEdBQUcsRUFBRSxHQUFHO1lBQ1IsTUFBTSxFQUFFLEVBQUU7WUFDVixNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUM7UUFDRixHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDckMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsWUFBWTtJQUVKLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSztRQUMvQixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHO1lBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDckYsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUc7WUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUdELGFBQWE7SUFDYjs7Ozs7O09BTUc7SUFDSyxHQUFHLENBQUMsUUFBVyxFQUFFLEtBQWEsRUFBRSxNQUF1QixFQUFFLFFBQWlCLEVBQUUsaUJBQStCO1FBQ2pILEdBQUcsQ0FBQyxDQUFDLENBQUMsZUFBZSxLQUFLLE9BQVksUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNsRCxLQUFLLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyQyxJQUFJLENBQVMsQ0FBQztRQUNkLENBQUMsR0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWxDLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRTtZQUNwQyxPQUFPLENBQUMsS0FBSyxDQUFDLDRDQUE0QyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ3BFLE9BQU87U0FDUjtRQUNELElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDbEQsSUFBSSxRQUFRLENBQUMsY0FBYztnQkFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxvQ0FBb0M7c0JBQ3pGLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0IsT0FBTztTQUNSO1FBQ0QsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQ2pDLElBQUksSUFBSSxDQUFRLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRztrQkFDckMsR0FBRyxHQUFHLEtBQUssRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFO2dCQUNqQyxRQUFRLEVBQUUsQ0FBQztnQkFDWCxJQUFJLEVBQUUsS0FBSztnQkFDWCxNQUFNO2dCQUNOLFFBQVE7YUFDVCxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyx5Q0FBeUM7UUFDbEUsT0FBTztJQUNULENBQUM7SUFDRCxZQUFZO0lBRVosYUFBYTtJQUNiOzs7Ozs7T0FNRztJQUNLLEdBQUcsQ0FBQyxRQUFXLEVBQUUsS0FBYTtRQUNwQyxlQUFlO1FBRWYsdUNBQXVDO1FBQ3ZDLG9CQUFvQjtRQUVwQixLQUFLO1FBQ0wsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUc7WUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxHQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEMsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFO1lBQ3BDLE1BQU0sYUFBa0IsUUFBUSxzQ0FBc0MsS0FBSyxFQUFFLENBQUM7U0FDL0U7UUFDRCxJQUFJLFNBQVMsR0FBVyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNyRCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDckIsS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFakQsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRTtZQUNsRCxtREFBbUQ7WUFDbkQsTUFBTSxVQUFVLEtBQUssK0JBQStCLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7U0FDbEY7UUFFRCxJQUFJLEdBQUcsR0FBZ0IsUUFBUSxDQUFDLFNBQVMsQ0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXZGLFVBQVU7UUFDVix3QkFBd0I7UUFDeEIsa0JBQWtCO1FBRWxCLEtBQUs7UUFDTCxJQUFJLFFBQVEsS0FBSyxLQUFLLEVBQUU7WUFDdEIsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ3BFLG1FQUFtRTtZQUNuRSw0QkFBNEI7WUFDNUIsOEJBQThCO1lBQzlCLEdBQUcsQ0FBQyxlQUFlLEdBQUcsR0FBRyxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7U0FDaEQ7YUFBTTtZQUNMLEdBQUcsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLENBQUM7U0FDOUI7UUFBQSxDQUFDO1FBRUYsa0RBQWtEO1FBQ2xELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs7QUFsUGdCLHNCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7QUFDbkQsdUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBNEIsQ0FBQztBQVE1RCx1QkFBYyxHQUFZLElBQUksQ0FBQztBQStDOUIsaUJBQVEsR0FBRyxJQUFJLFFBQVEsRUFBb0IsQ0FBQztBQUM1QyxrQkFBUyxHQUFHLEVBQUUsQ0FBQztBQVFmLGdCQUFPLEdBQWdCLElBQUksV0FBVyxFQUFFLENBQUM7QUF3RHhELFlBQVk7QUFFRSxnQkFBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUE4SDFDLGtDQUFrQztBQUNsQyxjQUFjO0FBQ2QsWUFBWTtBQUNaLGlCQUFpQjtBQUNqQixnQkFBZ0I7QUFDaEIsb0JBQW9CO0FBQ3BCLE9BQU87QUFDUCxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIGltcG9ydHNcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvZywgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL2Jyb3dzZXInO1xuY29uc3QgbG9nID0gTG9nLmNyZWF0ZSgncmVzb3VjZS1zZXJ2aWNlJyxcbiAgTGV2ZWwuX19OT1RISU5HXG4pXG5cbmltcG9ydCB7IFJlc3QgfSBmcm9tICcuL3Jlc3QuY2xhc3MnO1xuaW1wb3J0IHsgUmVzdFJlcXVlc3QgfSBmcm9tICcuL3Jlc3QtcmVxdWVzdCc7XG5pbXBvcnQgeyBSZXN0SGVhZGVycyB9IGZyb20gJy4vcmVzdC1oZWFkZXJzJztcbmltcG9ydCB7IENvb2tpZSB9IGZyb20gJy4vY29va2llJztcbmltcG9ydCB7IE1hcHBpbmcgfSBmcm9tICcuL21hcHBpbmcnO1xuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgaW50ZXJwb2xhdGVQYXJhbXNUb1VybCwgaXNWYWxpZCwgY29udGFpbnNNb2RlbHMsIGdldE1vZGVscyB9IGZyb20gJy4vcGFyYW1zJztcbmltcG9ydCB7IENpcmMgfSBmcm9tICdqc29uMTAvYnJvd3Nlcic7XG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAndG5wLWNvcmUvYnJvd3NlcidcbmltcG9ydCB7IENPTlRFTlRfVFlQRSB9IGZyb20gJy4vY29udGVudC10eXBlJztcbi8vI2VuZHJlZ2lvblxuXG5kZWNsYXJlIGNvbnN0IGdsb2JhbDogYW55O1xuXG5cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZTxFLCBULCBUQT4ge1xuICBwcm90ZWN0ZWQgc3RhdGljIF9saXN0ZW5FcnJvcnMgPSBuZXcgU3ViamVjdDxNb2RlbHMuQmFja2VuZEVycm9yPigpO1xuICBwcm90ZWN0ZWQgc3RhdGljIF9saXN0ZW5TdWNjZXNzID0gbmV3IFN1YmplY3Q8TW9kZWxzLkh0dHBSZXNwb25zZTxhbnk+PigpO1xuICBwdWJsaWMgc3RhdGljIGdldCBsaXN0ZW5FcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xpc3RlbkVycm9ycy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGxpc3RlblN1Y2Nlc3NPcGVyYXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9saXN0ZW5TdWNjZXNzLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG4gIHB1YmxpYyBzdGF0aWMgZW5hYmxlV2FybmluZ3M6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8vI3JlZ2lvbiBwcml2YXRlIG10aG9kcyBhbmQgZmllbGRzXG4gIHByaXZhdGUgZ2V0Wm9uZSgpIHtcbiAgICBjb25zdCBpc05vZGUgPSAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgaWYgKGlzTm9kZSkgeyByZXR1cm4gfTtcbiAgICBjb25zdCBuZyA9IHdpbmRvd1snbmcnXTtcbiAgICBjb25zdCBnZXRBbGxBbmd1bGFyUm9vdEVsZW1lbnRzID0gd2luZG93WydnZXRBbGxBbmd1bGFyUm9vdEVsZW1lbnRzJ107XG4gICAgaWYgKCFuZyB8fCAhZ2V0QWxsQW5ndWxhclJvb3RFbGVtZW50cykgeyByZXR1cm47IH1cbiAgICBjb25zdCBwcm9iZSA9IG5nLnByb2JlO1xuICAgIGNvbnN0IGNvcmVUb2tlbnMgPSBuZy5jb3JlVG9rZW5zO1xuICAgIGlmICghY29yZVRva2VucyB8fCAhY29yZVRva2Vucy5OZ1pvbmUpIHsgcmV0dXJuOyB9XG4gICAgY29uc3Qgem9uZUNsYXNzID0gY29yZVRva2Vucy5OZ1pvbmU7XG4gICAgaWYgKCFwcm9iZSB8fCB0eXBlb2YgcHJvYmUgIT09ICdmdW5jdGlvbicgfHwgIWdldEFsbEFuZ3VsYXJSb290RWxlbWVudHMpIHsgcmV0dXJuOyB9XG4gICAgY29uc3QgYW5ndWxhckVsZW1lbnRzOiBhbnlbXSA9IGdldEFsbEFuZ3VsYXJSb290RWxlbWVudHMoKTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYW5ndWxhckVsZW1lbnRzKSB8fCBhbmd1bGFyRWxlbWVudHMubGVuZ3RoID09PSAwKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gbmcucHJvYmUoYW5ndWxhckVsZW1lbnRzWzBdKTtcbiAgICBpZiAoIXJvb3RFbGVtZW50KSB7IHJldHVybjsgfVxuICAgIGNvbnN0IGluamVjdG9yID0gcm9vdEVsZW1lbnQuaW5qZWN0b3I7XG4gICAgaWYgKCFpbmplY3RvciB8fCAhaW5qZWN0b3IuZ2V0IHx8IHR5cGVvZiBpbmplY3Rvci5nZXQgIT09ICdmdW5jdGlvbicpIHsgcmV0dXJuOyB9XG4gICAgY29uc3Qgem9uZSA9IGluamVjdG9yLmdldCh6b25lQ2xhc3MpXG4gICAgcmV0dXJuIHpvbmU7XG4gIH1cblxuXG4gIHB1YmxpYyBzdGF0aWMgaW5pdEFuZ3VsYXJOZ1pvbmUoem9uZSkge1xuICAgIFJlc3RSZXF1ZXN0LnpvbmUgPSB6b25lO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja05lc3RlZE1vZGVscyhtb2RlbDogc3RyaW5nLCBhbGxNb2RlbHM6IE9iamVjdCkge1xuICAgIC8vIGlmIChtb2RlbC5pbmRleE9mKCcvJykgIT09IC0xKSB7IC8vVE9ETyBtYWtlIHRoaXMgYmV0dGVyLCBiZWNvdXNlIG5vdyBJIHVuZWNlc2FyeSBjaGVja2luZyBzaGl0XG4gICAgZm9yIChsZXQgcCBpbiBhbGxNb2RlbHMpIHtcbiAgICAgIGlmIChhbGxNb2RlbHMuaGFzT3duUHJvcGVydHkocCkpIHtcbiAgICAgICAgbGV0IG0gPSBhbGxNb2RlbHNbcF07XG4gICAgICAgIGlmIChpc1ZhbGlkKHApKSB7XG4gICAgICAgICAgbGV0IHVybE1vZGVscyA9IGdldE1vZGVscyhwKTtcbiAgICAgICAgICBpZiAoY29udGFpbnNNb2RlbHMobW9kZWwsIHVybE1vZGVscykpIHtcbiAgICAgICAgICAgIG1vZGVsID0gcDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyB9XG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2UgPSBuZXcgUmVzb3VyY2U8c3RyaW5nLCBhbnksIGFueT4oKTtcbiAgcHJpdmF0ZSBzdGF0aWMgZW5kcG9pbnRzID0ge307XG4gIHB1YmxpYyBzdGF0aWMgZ2V0TW9kZWwoZW5kcG9pbnQ6IHN0cmluZywgbW9kZWw6IHN0cmluZyk6IFJlc3Q8YW55PiB7XG4gICAgbW9kZWwgPSBSZXNvdXJjZS5wcmVwYXJlTW9kZWwobW9kZWwpO1xuICAgIGNvbnN0IGUgPSBSZXNvdXJjZS5lbmRwb2ludHNbZW5kcG9pbnRdO1xuICAgIGlmICghZSkgeyByZXR1cm4gdm9pZCAwOyB9XG4gICAgY29uc3QgciA9IFJlc291cmNlLmVuZHBvaW50c1tlbmRwb2ludF0ubW9kZWxzW21vZGVsXTtcbiAgICByZXR1cm4gUmVzb3VyY2UuZW5kcG9pbnRzW2VuZHBvaW50XS5tb2RlbHNbbW9kZWxdO1xuICB9XG4gIHByaXZhdGUgc3RhdGljIHJlcXVlc3Q6IFJlc3RSZXF1ZXN0ID0gbmV3IFJlc3RSZXF1ZXN0KCk7XG4gIC8vI2VuZHJlZ2lvblxuXG5cbiAgLy8jcmVnaW9uIGNyZWF0ZVxuICBwdWJsaWMgc3RhdGljIGNyZWF0ZTxBLCBUQSA9IEFbXT4oXG4gICAgZTogc3RyaW5nLFxuICAgIG1vZGVsPzogc3RyaW5nLFxuICAgIGVudGl0eU1hcHBpbmc/OiBNYXBwaW5nLk1hcHBpbmcsXG4gICAgY2lyY3VsYXI/OiBDaXJjW10sXG4gICAgY3VzdG9tQ29udGVudFR5cGU/OiBSZXN0SGVhZGVycyxcbiAgKTogTW9kZWxzLlJlc291cmNlTW9kZWw8QSwgVEE+IHtcbiAgICBjb25zdCBiYWRSZXN0UmVnRVggPSBuZXcgUmVnRXhwKCcoKFxcLzopW2Etel0rKSsnLCAnZycpO1xuICAgIGNvbnN0IG1hdGNoQXJyID0gbW9kZWwubWF0Y2goYmFkUmVzdFJlZ0VYKSB8fCBbXTtcbiAgICBjb25zdCBiYWRNb2RlbHNOZXh0VG9FYWNoT3RoZXIgPSBtYXRjaEFyci5qb2luKCk7XG4gICAgY29uc3QgYXRsZWFzMkRvdWJsZURvdHMgPSAoKGJhZE1vZGVsc05leHRUb0VhY2hPdGhlci5tYXRjaChuZXcgUmVnRXhwKCc6JywgJ2cnKSkgfHwgW10pLmxlbmd0aCA+PSAyKTtcbiAgICBpZiAoYXRsZWFzMkRvdWJsZURvdHMgJiYgbW9kZWwuc2VhcmNoKGJhZE1vZGVsc05leHRUb0VhY2hPdGhlcikgIT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFxuXG5CYWQgcmVzdCBtb2RlbDogJHttb2RlbH1cblxuRG8gbm90IGNyZWF0ZSByZXN0IG1vZGVscyBsaWtlIHRoaXM6ICAgIC9ib29rL2F1dGhvci86Ym9va2lkLzphdXRob3JpZFxuSW5zdGVhZCB1c2UgbmVzdGVkIGFwcHJvYWNoOiAgICAgICAgICAgIC9ib29rLzpib29raWQvYXV0aG9yLzphdXRob3JpZFxuICAgICAgICAgICAgYClcbiAgICB9O1xuICAgIFJlc291cmNlLm1hcChlLCBlKTtcbiAgICBSZXNvdXJjZS5pbnN0YW5jZS5hZGQoZSwgbW9kZWwgPyBtb2RlbCA6ICcnLCBlbnRpdHlNYXBwaW5nLCBjaXJjdWxhciwgY3VzdG9tQ29udGVudFR5cGUpO1xuICAgIC8vIGlmIChtb2RlbC5jaGFyQXQobW9kZWwubGVuZ3RoIC0gMSkgIT09ICcvJykgbW9kZWwgPSBgJHttb2RlbH0vYDtcbiAgICByZXR1cm4ge1xuICAgICAgbW9kZWw6IChwYXJhbXM/OiBPYmplY3QpID0+IFJlc291cmNlLmluc3RhbmNlLmFwaShcbiAgICAgICAgZSxcbiAgICAgICAgaW50ZXJwb2xhdGVQYXJhbXNUb1VybChwYXJhbXMsIG1vZGVsKVxuICAgICAgKSxcbiAgICAgIHJlcGxheTogKG1ldGhvZDogTW9kZWxzLkh0dHBNZXRob2QpID0+IHtcbiAgICAgICAgUmVzb3VyY2UuZ2V0TW9kZWwoZSwgbW9kZWwpLnJlcGxheShtZXRob2QpO1xuICAgICAgfSxcbiAgICAgIGdldCBoZWFkZXJzKCkge1xuICAgICAgICByZXR1cm4gUmVzb3VyY2UuZ2V0TW9kZWwoZSwgbW9kZWwpLmhlYWRlcnM7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiByZXNldFxuICBwdWJsaWMgc3RhdGljIHJlc2V0KCkge1xuICAgIFJlc291cmNlLmVuZHBvaW50cyA9IHt9O1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBjb25zdHJ1Y3RvclxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3Qgem9uZSA9IHRoaXMuZ2V0Wm9uZSgpO1xuICAgICAgaWYgKCFSZXN0UmVxdWVzdC56b25lKSB7IFJlc3RSZXF1ZXN0LnpvbmUgPSB6b25lIH07XG4gICAgfSlcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICBwdWJsaWMgc3RhdGljIENvb2tpZXMgPSBDb29raWUuSW5zdGFuY2U7XG5cbiAgLy8jcmVnaW9uIG1hcFxuICBwcml2YXRlIHN0YXRpYyBtYXAoZW5kcG9pbnQ6IHN0cmluZywgdXJsOiBzdHJpbmcpOiBib29sZWFuIHtcblxuICAgIGxvZy5pKCd1cmwnLCB1cmwpXG4gICAgbGV0IHJlZ2V4ID0gLyhodHRwfGh0dHBzKTpcXC9cXC8oXFx3Kzp7MCwxfVxcdyopPyhcXFMrKSg6WzAtOV0rKT8oXFwvfFxcLyhbXFx3IyE6Lj8rPSYlIVxcLVxcL10pKT8vO1xuICAgIGxldCBlID0gZW5kcG9pbnQ7XG4gICAgaWYgKCFyZWdleC50ZXN0KHVybCkpIHtcbiAgICAgIHRocm93IGBVcmwgYWRkcmVzcyBpcyBub3QgY29ycmVjdDogJHt1cmx9YDtcbiAgICB9XG4gICAgaWYgKHVybC5jaGFyQXQodXJsLmxlbmd0aCAtIDEpID09PSAnLycpIHVybCA9IHVybC5zbGljZSgwLCB1cmwubGVuZ3RoIC0gMSk7XG4gICAgbG9nLmkoJ3VybCBhZnRlcicsIHVybClcbiAgICBpZiAoUmVzb3VyY2UuZW5kcG9pbnRzW2VdICE9PSB2b2lkIDApIHtcbiAgICAgIEhlbHBlcnMubG9nKCdDYW5ub3QgdXNlIG1hcCBmdW5jdGlvbiBhdCB0aGUgc2FtZSBBUEkgZW5kcG9pbnQgYWdhaW4gKCdcbiAgICAgICAgKyBSZXNvdXJjZS5lbmRwb2ludHNbZV0udXJsICsgJyknKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgUmVzb3VyY2UuZW5kcG9pbnRzW2VdID0ge1xuICAgICAgdXJsOiB1cmwsXG4gICAgICBtb2RlbHM6IHt9LFxuICAgICAgZW50aXR5OiBudWxsXG4gICAgfTtcbiAgICBsb2cuaSgnZW5wb2ludHMnLCBSZXNvdXJjZS5lbmRwb2ludHMpXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgcHJpdmF0ZSBzdGF0aWMgcHJlcGFyZU1vZGVsKG1vZGVsKSB7XG4gICAgaWYgKG1vZGVsLmNoYXJBdChtb2RlbC5sZW5ndGggLSAxKSA9PT0gJy8nKSBtb2RlbCA9IG1vZGVsLnNsaWNlKDAsIG1vZGVsLmxlbmd0aCAtIDEpO1xuICAgIGlmIChtb2RlbC5jaGFyQXQoMCkgPT09ICcvJykgbW9kZWwgPSBtb2RlbC5zbGljZSgxLCBtb2RlbC5sZW5ndGgpO1xuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG5cbiAgLy8jcmVnaW9uIGFkZFxuICAvKipcbiAgICogQW5kIGVuaXBvaW50IHRvIGFwcGxpY2F0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7RX0gZW5kcG9pbnRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1vZGVsXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgcHJpdmF0ZSBhZGQoZW5kcG9pbnQ6IEUsIG1vZGVsOiBzdHJpbmcsIGVudGl0eTogTWFwcGluZy5NYXBwaW5nLCBjaXJjdWxhcj86IENpcmNbXSwgY3VzdG9tQ29udGVudFR5cGU/OiBSZXN0SGVhZGVycykge1xuICAgIGxvZy5pKGBJIGFtIG1hcGluZyAke21vZGVsfSBvbiAkezxhbnk+ZW5kcG9pbnR9YCk7XG4gICAgbW9kZWwgPSBSZXNvdXJjZS5wcmVwYXJlTW9kZWwobW9kZWwpO1xuXG4gICAgbGV0IGU6IHN0cmluZztcbiAgICBlID0gPHN0cmluZz4oZW5kcG9pbnQpLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAoUmVzb3VyY2UuZW5kcG9pbnRzW2VdID09PSB2b2lkIDApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0VuZHBvaW50IGlzIG5vdCBtYXBwZWQgISBDYW5ub3QgYWRkIG1vZGVsICcgKyBtb2RlbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChSZXNvdXJjZS5lbmRwb2ludHNbZV0ubW9kZWxzW21vZGVsXSAhPT0gdm9pZCAwKSB7XG4gICAgICBpZiAoUmVzb3VyY2UuZW5hYmxlV2FybmluZ3MpIGNvbnNvbGUud2FybihgTW9kZWwgJyR7bW9kZWx9JyBpcyBhbHJlYWR5IGRlZmluZWQgaW4gZW5kcG9pbnQ6IGBcbiAgICAgICAgKyBSZXNvdXJjZS5lbmRwb2ludHNbZV0udXJsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgUmVzb3VyY2UuZW5kcG9pbnRzW2VdLm1vZGVsc1ttb2RlbF0gPVxuICAgICAgbmV3IFJlc3Q8VCwgVEE+KFJlc291cmNlLmVuZHBvaW50c1tlXS51cmxcbiAgICAgICAgKyAnLycgKyBtb2RlbCwgUmVzb3VyY2UucmVxdWVzdCwge1xuICAgICAgICBlbmRwb2ludDogZSxcbiAgICAgICAgcGF0aDogbW9kZWwsXG4gICAgICAgIGVudGl0eSxcbiAgICAgICAgY2lyY3VsYXIsXG4gICAgICB9LCBjdXN0b21Db250ZW50VHlwZSk7IC8vIFRPRE8gcHV0IGN1c3RvbSBjb250ZW50IHR5cGUgaW4gbWV0YSA/XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBhcGlcbiAgLyoqXG4gICAqIEFjY2VzcyBhcGkgdGhyb3VnaHQgZW5kcG9pbnRcbiAgICpcbiAgICogQHBhcmFtIHtFfSBlbmRwb2ludFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kZWxcbiAgICogQHJldHVybnMge1Jlc3Q8VCwgVEE+fVxuICAgKi9cbiAgcHJpdmF0ZSBhcGkoZW5kcG9pbnQ6IEUsIG1vZGVsOiBzdHJpbmcpOiBSZXN0PFQsIFRBPiB7XG4gICAgLy8gbG9nLmkoYFthcGldXG5cbiAgICAvLyBjcmVhdGluZyBmb3IgZW5kcG9pbnQ6IFwiJHtlbmRwb2ludH1cIlxuICAgIC8vIG1vZGVsOiBcIiR7bW9kZWx9XCJcblxuICAgIC8vIGApXG4gICAgaWYgKG1vZGVsLmNoYXJBdCgwKSA9PT0gJy8nKSBtb2RlbCA9IG1vZGVsLnNsaWNlKDEsIG1vZGVsLmxlbmd0aCk7XG4gICAgbGV0IGUgPSA8c3RyaW5nPihlbmRwb2ludCkudG9TdHJpbmcoKTtcbiAgICBpZiAoUmVzb3VyY2UuZW5kcG9pbnRzW2VdID09PSB2b2lkIDApIHtcbiAgICAgIHRocm93IGBFbmRwb2ludDogJHs8YW55PmVuZHBvaW50fSBpcyBub3QgbWFwcGVkICEgQ2Fubm90IGFkZCBtb2RlbDogJHttb2RlbH1gO1xuICAgIH1cbiAgICBsZXQgYWxsTW9kZWxzOiBPYmplY3QgPSBSZXNvdXJjZS5lbmRwb2ludHNbZV0ubW9kZWxzO1xuICAgIGxldCBvcmdNb2RlbCA9IG1vZGVsO1xuICAgIG1vZGVsID0gdGhpcy5jaGVja05lc3RlZE1vZGVscyhtb2RlbCwgYWxsTW9kZWxzKTtcblxuICAgIGlmIChSZXNvdXJjZS5lbmRwb2ludHNbZV0ubW9kZWxzW21vZGVsXSA9PT0gdm9pZCAwKSB7XG4gICAgICAvLyBsb2cuZCgnUmVzb3VyY2UuZW5kcG9pbnRzJywgUmVzb3VyY2UuZW5kcG9pbnRzKTtcbiAgICAgIHRocm93IGBNb2RlbCAnJHttb2RlbH0nIGlzIHVuZGVmaW5lZCBpbiBlbmRwb2ludDogJHtSZXNvdXJjZS5lbmRwb2ludHNbZV0udXJsfSBgO1xuICAgIH1cblxuICAgIGxldCByZXM6IFJlc3Q8VCwgVEE+ID0gUmVzb3VyY2UuZW5kcG9pbnRzWzxzdHJpbmc+KGVuZHBvaW50KS50b1N0cmluZygpXS5tb2RlbHNbbW9kZWxdO1xuXG4gICAgLy8gbG9nLmQoYFxuICAgIC8vIG9yZ01vZGVsOiAke29yZ01vZGVsfVxuICAgIC8vIG1vZGVsOiAke21vZGVsfVxuXG4gICAgLy8gYClcbiAgICBpZiAob3JnTW9kZWwgIT09IG1vZGVsKSB7XG4gICAgICBsZXQgYmFzZVVybCA9IFJlc291cmNlLmVuZHBvaW50c1s8c3RyaW5nPihlbmRwb2ludCkudG9TdHJpbmcoKV0udXJsO1xuICAgICAgLy8gbG9nLmQoJ2Jhc2UnLCBSZXNvdXJjZS5lbmRwb2ludHNbPHN0cmluZz4oZW5kcG9pbnQpLnRvU3RyaW5nKCldKVxuICAgICAgLy8gbG9nLmQoJ2Jhc2VVcmwnLCBiYXNlVXJsKVxuICAgICAgLy8gbG9nLmQoJ29yZ01vZGVsJywgb3JnTW9kZWwpXG4gICAgICByZXMuX19yZXN0X2VuZHBvaW50ID0gYCR7YmFzZVVybH0vJHtvcmdNb2RlbH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMuX19yZXN0X2VuZHBvaW50ID0gdm9pZCAwO1xuICAgIH07XG5cbiAgICAvLyBsb2cuaShgUmVzb3VyY2UuZW5kcG9pbnRzYCwgUmVzb3VyY2UuZW5kcG9pbnRzKVxuICAgIHJldHVybiByZXM7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbn1cblxuXG5cbi8vIGNvbnN0IHJlcyA9IFJlc291cmNlLmNyZWF0ZSgnJylcbi8vIHJlcy5tb2RlbCgpXG4vLyAgIC5tb2NrKHtcbi8vICAgICBjb2RlOiA1MDAsXG4vLyAgICAgZGF0YToge30sXG4vLyAgICAgaXNBcnJheTogdHJ1ZVxuLy8gICB9KVxuLy8gICAuYXJyYXkuIl19
@@ -126,4 +126,4 @@ export class RestHeaders {
126
126
  }
127
127
  }
128
128
  }
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1oZWFkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS9uZzItcmVzdC9wcm9qZWN0cy9uZzItcmVzdC9zcmMvbGliL3Jlc3QtaGVhZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLE9BQU8sV0FBVztJQWN0QixZQUFvQixPQUErRDtRQWJuRiw0Q0FBNEM7UUFDNUMsYUFBUSxHQUEwQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzVDLHFEQUFxRDtRQUNyRCxxQkFBZ0IsR0FBd0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQVdoRCxJQUFJLE9BQU8sWUFBWSxXQUFXLEVBQUU7WUFDbEMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQWdCLEVBQUUsSUFBWSxFQUFFLEVBQUU7Z0JBQ2pELE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pELENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUU7Z0JBQzVDLE1BQU0sTUFBTSxHQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFRLENBQUM7Z0JBQ2pHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xCLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pELENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBbkJNLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBNEI7UUFDN0MsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU8sS0FBSyxDQUFDLENBQUM7U0FDZjtRQUNELE9BQU8sSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQWdCRDs7T0FFRztJQUNILE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxhQUFxQjtRQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBRWxDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3ZDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO2dCQUNiLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNsQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDMUI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxJQUFZLEVBQUUsS0FBYTtRQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWpDLElBQUksTUFBTSxLQUFLLElBQUksRUFBRTtZQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN2QjthQUFNO1lBQ0wsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxJQUFZO1FBQ2pCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxPQUFPLENBQUMsRUFBNEU7UUFDbEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQ25CLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUcsQ0FBQyxJQUFZO1FBQ2QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqQyxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUcsQ0FBQyxJQUFZLElBQWEsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFNUU7O09BRUc7SUFDSCxJQUFJLEtBQWUsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV2RTs7T0FFRztJQUNILEdBQUcsQ0FBQyxJQUFZLEVBQUUsS0FBd0I7UUFDeEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTtnQkFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDMUQ7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUNoRDtRQUNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLEtBQWlCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRW5FOztPQUVHO0lBQ0gsaURBQWlEO0lBQ2pELE1BQU07UUFDSixNQUFNLFVBQVUsR0FBaUMsRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLFdBQVc7U0FFWjtRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBZ0IsRUFBRSxJQUFZLEVBQUUsRUFBRTtZQUN2RCxNQUFNLEtBQUssR0FBYSxFQUFFLENBQUM7WUFDM0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRCxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxJQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN2RSxDQUFDO0lBRU8sc0JBQXNCLENBQUMsSUFBWTtRQUN6QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDdEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDekM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJhc2VkIG9uIEhlYWRlcnMgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL2h0dHAvc3JjL2hlYWRlcnMudHNcbiAqL1xuZXhwb3J0IHR5cGUgUmVzdEhlYWRlcnNPcHRpb25zID0gUmVzdEhlYWRlcnMgfCB7IFtuYW1lOiBzdHJpbmddOiAoc3RyaW5nIHwgc3RyaW5nW10pIH1cblxuZXhwb3J0IGNsYXNzIFJlc3RIZWFkZXJzIHtcbiAgLyoqIEBpbnRlcm5hbCBoZWFkZXIgbmFtZXMgYXJlIGxvd2VyIGNhc2UgKi9cbiAgX2hlYWRlcnM6IE1hcDxzdHJpbmcsIHN0cmluZ1tdPiA9IG5ldyBNYXAoKTtcbiAgLyoqIEBpbnRlcm5hbCBtYXAgbG93ZXIgY2FzZSBuYW1lcyB0byBhY3R1YWwgbmFtZXMgKi9cbiAgX25vcm1hbGl6ZWROYW1lczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcblxuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbShoZWFkZXJzPzogUmVzdEhlYWRlcnNPcHRpb25zKSB7XG4gICAgaWYgKCFoZWFkZXJzKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFJlc3RIZWFkZXJzKGhlYWRlcnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihoZWFkZXJzPzogUmVzdEhlYWRlcnMgfCB7IFtuYW1lOiBzdHJpbmddOiAoc3RyaW5nIHwgc3RyaW5nW10pIH0pIHtcbiAgICBpZiAoaGVhZGVycyBpbnN0YW5jZW9mIFJlc3RIZWFkZXJzKSB7XG4gICAgICBoZWFkZXJzLmZvckVhY2goKHZhbHVlczogc3RyaW5nW10sIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICB2YWx1ZXMuZm9yRWFjaCh2YWx1ZSA9PiB0aGlzLnNldChuYW1lLCB2YWx1ZSkpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIE9iamVjdC5rZXlzKGhlYWRlcnMpLmZvckVhY2goKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZXM6IHN0cmluZ1tdID0gKEFycmF5LmlzQXJyYXkoaGVhZGVyc1tuYW1lXSkgPyBoZWFkZXJzW25hbWVdIDogW2hlYWRlcnNbbmFtZV1dKSBhcyBhbnk7XG4gICAgICAgIHRoaXMuZGVsZXRlKG5hbWUpO1xuICAgICAgICB2YWx1ZXMuZm9yRWFjaCh2YWx1ZSA9PiB0aGlzLnNldChuYW1lLCB2YWx1ZSkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBuZXcgUmVzdEhlYWRlcnMgaW5zdGFuY2UgZnJvbSB0aGUgZ2l2ZW4gRE9NU3RyaW5nIG9mIFJlc3BvbnNlIFJlc3RIZWFkZXJzXG4gICAqL1xuICBzdGF0aWMgZnJvbVJlc3BvbnNlSGVhZGVyU3RyaW5nKGhlYWRlcnNTdHJpbmc6IHN0cmluZyk6IFJlc3RIZWFkZXJzIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IFJlc3RIZWFkZXJzKCk7XG5cbiAgICBoZWFkZXJzU3RyaW5nLnNwbGl0KCdcXG4nKS5mb3JFYWNoKGxpbmUgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBsaW5lLmluZGV4T2YoJzonKTtcbiAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IGxpbmUuc2xpY2UoMCwgaW5kZXgpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGxpbmUuc2xpY2UoaW5kZXggKyAxKS50cmltKCk7XG4gICAgICAgIGhlYWRlcnMuc2V0KG5hbWUsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBoZWFkZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGVuZHMgYSBoZWFkZXIgdG8gZXhpc3RpbmcgbGlzdCBvZiBoZWFkZXIgdmFsdWVzIGZvciBhIGdpdmVuIGhlYWRlciBuYW1lLlxuICAgKi9cbiAgYXBwZW5kKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZ2V0QWxsKG5hbWUpO1xuXG4gICAgaWYgKHZhbHVlcyA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5zZXQobmFtZSwgdmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYWxsIGhlYWRlciB2YWx1ZXMgZm9yIHRoZSBnaXZlbiBuYW1lLlxuICAgKi9cbiAgZGVsZXRlKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGxjTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLl9ub3JtYWxpemVkTmFtZXMuZGVsZXRlKGxjTmFtZSk7XG4gICAgdGhpcy5faGVhZGVycy5kZWxldGUobGNOYW1lKTtcbiAgfVxuXG4gIGZvckVhY2goZm46ICh2YWx1ZXM6IHN0cmluZ1tdLCBuYW1lOiBzdHJpbmcsIGhlYWRlcnM6IE1hcDxzdHJpbmcsIHN0cmluZ1tdPikgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX2hlYWRlcnMuZm9yRWFjaChcbiAgICAgICh2YWx1ZXMsIGxjTmFtZSkgPT4gZm4odmFsdWVzLCB0aGlzLl9ub3JtYWxpemVkTmFtZXMuZ2V0KGxjTmFtZSksIHRoaXMuX2hlYWRlcnMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGZpcnN0IGhlYWRlciB0aGF0IG1hdGNoZXMgZ2l2ZW4gbmFtZS5cbiAgICovXG4gIGdldChuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZ2V0QWxsKG5hbWUpO1xuXG4gICAgaWYgKHZhbHVlcyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlcy5sZW5ndGggPiAwID8gdmFsdWVzWzBdIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgZm9yIGV4aXN0ZW5jZSBvZiBoZWFkZXIgYnkgZ2l2ZW4gbmFtZS5cbiAgICovXG4gIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2hlYWRlcnMuaGFzKG5hbWUudG9Mb3dlckNhc2UoKSk7IH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbmFtZXMgb2YgdGhlIGhlYWRlcnNcbiAgICovXG4gIGtleXMoKTogc3RyaW5nW10geyByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9ub3JtYWxpemVkTmFtZXMudmFsdWVzKCkpOyB9XG5cbiAgLyoqXG4gICAqIFNldHMgb3Igb3ZlcnJpZGVzIGhlYWRlciB2YWx1ZSBmb3IgZ2l2ZW4gbmFtZS5cbiAgICovXG4gIHNldChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgaWYgKHZhbHVlLmxlbmd0aCkge1xuICAgICAgICB0aGlzLl9oZWFkZXJzLnNldChuYW1lLnRvTG93ZXJDYXNlKCksIFt2YWx1ZS5qb2luKCcsJyldKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faGVhZGVycy5zZXQobmFtZS50b0xvd2VyQ2FzZSgpLCBbdmFsdWVdKTtcbiAgICB9XG4gICAgdGhpcy5tYXlCZVNldE5vcm1hbGl6ZWROYW1lKG5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdmFsdWVzIG9mIGFsbCBoZWFkZXJzLlxuICAgKi9cbiAgdmFsdWVzKCk6IHN0cmluZ1tdW10geyByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9oZWFkZXJzLnZhbHVlcygpKTsgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHN0cmluZyBvZiBhbGwgaGVhZGVycy5cbiAgICovXG4gIC8vIFRPRE8odmljYik6IHJldHVybnMge1tuYW1lOiBzdHJpbmddOiBzdHJpbmdbXX1cbiAgdG9KU09OKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICBjb25zdCBzZXJpYWxpemVkOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge307XG4gICAgaWYgKCF0aGlzLl9oZWFkZXJzKSB7XG4gICAgICAvLyBkZWJ1Z2dlclxuXG4gICAgfVxuICAgIHRoaXMuX2hlYWRlcnMuZm9yRWFjaCgodmFsdWVzOiBzdHJpbmdbXSwgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBzcGxpdDogc3RyaW5nW10gPSBbXTtcbiAgICAgIHZhbHVlcy5mb3JFYWNoKHYgPT4gc3BsaXQucHVzaCguLi52LnNwbGl0KCcsJykpKTtcbiAgICAgIHNlcmlhbGl6ZWRbdGhpcy5fbm9ybWFsaXplZE5hbWVzLmdldChuYW1lKV0gPSBzcGxpdDtcbiAgICB9KTtcblxuICAgIHJldHVybiBzZXJpYWxpemVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgbGlzdCBvZiBoZWFkZXIgdmFsdWVzIGZvciBhIGdpdmVuIG5hbWUuXG4gICAqL1xuICBnZXRBbGwobmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmhhcyhuYW1lKSA/IHRoaXMuX2hlYWRlcnMuZ2V0KG5hbWUudG9Mb3dlckNhc2UoKSkgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXlCZVNldE5vcm1hbGl6ZWROYW1lKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGxjTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmICghdGhpcy5fbm9ybWFsaXplZE5hbWVzLmhhcyhsY05hbWUpKSB7XG4gICAgICB0aGlzLl9ub3JtYWxpemVkTmFtZXMuc2V0KGxjTmFtZSwgbmFtZSk7XG4gICAgfVxuICB9XG59XG5cbiJdfQ==
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1oZWFkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS9uZzItcmVzdC9wcm9qZWN0cy9uZzItcmVzdC9zcmMvbGliL3Jlc3QtaGVhZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLE9BQU8sV0FBVztJQWN0QixZQUFvQixPQUErRDtRQWJuRiw0Q0FBNEM7UUFDNUMsYUFBUSxHQUEwQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzVDLHFEQUFxRDtRQUNyRCxxQkFBZ0IsR0FBd0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQVdoRCxJQUFJLE9BQU8sWUFBWSxXQUFXLEVBQUU7WUFDbEMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQWdCLEVBQUUsSUFBWSxFQUFFLEVBQUU7Z0JBQ2pELE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pELENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUU7Z0JBQzVDLE1BQU0sTUFBTSxHQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFRLENBQUM7Z0JBQ2pHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xCLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFD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QUVILE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxJQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN2RSxDQUFDO0lBRU8sc0JBQXNCLENBQUMsSUFBWTtRQUN6QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDdEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDekM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJhc2VkIG9uIEhlYWRlcnMgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL2h0dHAvc3JjL2hlYWRlcnMudHNcbiAqL1xuZXhwb3J0IHR5cGUgUmVzdEhlYWRlcnNPcHRpb25zID0gUmVzdEhlYWRlcnMgfCB7IFtuYW1lOiBzdHJpbmddOiAoc3RyaW5nIHwgc3RyaW5nW10pIH1cblxuZXhwb3J0IGNsYXNzIFJlc3RIZWFkZXJzIHtcbiAgLyoqIEBpbnRlcm5hbCBoZWFkZXIgbmFtZXMgYXJlIGxvd2VyIGNhc2UgKi9cbiAgX2hlYWRlcnM6IE1hcDxzdHJpbmcsIHN0cmluZ1tdPiA9IG5ldyBNYXAoKTtcbiAgLyoqIEBpbnRlcm5hbCBtYXAgbG93ZXIgY2FzZSBuYW1lcyB0byBhY3R1YWwgbmFtZXMgKi9cbiAgX25vcm1hbGl6ZWROYW1lczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcblxuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbShoZWFkZXJzPzogUmVzdEhlYWRlcnNPcHRpb25zKSB7XG4gICAgaWYgKCFoZWFkZXJzKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFJlc3RIZWFkZXJzKGhlYWRlcnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihoZWFkZXJzPzogUmVzdEhlYWRlcnMgfCB7IFtuYW1lOiBzdHJpbmddOiAoc3RyaW5nIHwgc3RyaW5nW10pIH0pIHtcbiAgICBpZiAoaGVhZGVycyBpbnN0YW5jZW9mIFJlc3RIZWFkZXJzKSB7XG4gICAgICBoZWFkZXJzLmZvckVhY2goKHZhbHVlczogc3RyaW5nW10sIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICB2YWx1ZXMuZm9yRWFjaCh2YWx1ZSA9PiB0aGlzLnNldChuYW1lLCB2YWx1ZSkpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIE9iamVjdC5rZXlzKGhlYWRlcnMpLmZvckVhY2goKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZXM6IHN0cmluZ1tdID0gKEFycmF5LmlzQXJyYXkoaGVhZGVyc1tuYW1lXSkgPyBoZWFkZXJzW25hbWVdIDogW2hlYWRlcnNbbmFtZV1dKSBhcyBhbnk7XG4gICAgICAgIHRoaXMuZGVsZXRlKG5hbWUpO1xuICAgICAgICB2YWx1ZXMuZm9yRWFjaCh2YWx1ZSA9PiB0aGlzLnNldChuYW1lLCB2YWx1ZSkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBuZXcgUmVzdEhlYWRlcnMgaW5zdGFuY2UgZnJvbSB0aGUgZ2l2ZW4gRE9NU3RyaW5nIG9mIFJlc3BvbnNlIFJlc3RIZWFkZXJzXG4gICAqL1xuICBzdGF0aWMgZnJvbVJlc3BvbnNlSGVhZGVyU3RyaW5nKGhlYWRlcnNTdHJpbmc6IHN0cmluZyk6IFJlc3RIZWFkZXJzIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IFJlc3RIZWFkZXJzKCk7XG5cbiAgICBoZWFkZXJzU3RyaW5nLnNwbGl0KCdcXG4nKS5mb3JFYWNoKGxpbmUgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBsaW5lLmluZGV4T2YoJzonKTtcbiAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IGxpbmUuc2xpY2UoMCwgaW5kZXgpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGxpbmUuc2xpY2UoaW5kZXggKyAxKS50cmltKCk7XG4gICAgICAgIGhlYWRlcnMuc2V0KG5hbWUsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBoZWFkZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGVuZHMgYSBoZWFkZXIgdG8gZXhpc3RpbmcgbGlzdCBvZiBoZWFkZXIgdmFsdWVzIGZvciBhIGdpdmVuIGhlYWRlciBuYW1lLlxuICAgKi9cbiAgYXBwZW5kKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZ2V0QWxsKG5hbWUpO1xuXG4gICAgaWYgKHZhbHVlcyA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5zZXQobmFtZSwgdmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYWxsIGhlYWRlciB2YWx1ZXMgZm9yIHRoZSBnaXZlbiBuYW1lLlxuICAgKi9cbiAgZGVsZXRlKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGxjTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLl9ub3JtYWxpemVkTmFtZXMuZGVsZXRlKGxjTmFtZSk7XG4gICAgdGhpcy5faGVhZGVycy5kZWxldGUobGNOYW1lKTtcbiAgfVxuXG4gIGZvckVhY2goZm46ICh2YWx1ZXM6IHN0cmluZ1tdLCBuYW1lOiBzdHJpbmcsIGhlYWRlcnM6IE1hcDxzdHJpbmcsIHN0cmluZ1tdPikgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX2hlYWRlcnMuZm9yRWFjaChcbiAgICAgICh2YWx1ZXMsIGxjTmFtZSkgPT4gZm4odmFsdWVzLCB0aGlzLl9ub3JtYWxpemVkTmFtZXMuZ2V0KGxjTmFtZSksIHRoaXMuX2hlYWRlcnMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGZpcnN0IGhlYWRlciB0aGF0IG1hdGNoZXMgZ2l2ZW4gbmFtZS5cbiAgICovXG4gIGdldChuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZ2V0QWxsKG5hbWUpO1xuXG4gICAgaWYgKHZhbHVlcyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlcy5sZW5ndGggPiAwID8gdmFsdWVzWzBdIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgZm9yIGV4aXN0ZW5jZSBvZiBoZWFkZXIgYnkgZ2l2ZW4gbmFtZS5cbiAgICovXG4gIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2hlYWRlcnMuaGFzKG5hbWUudG9Mb3dlckNhc2UoKSk7IH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbmFtZXMgb2YgdGhlIGhlYWRlcnNcbiAgICovXG4gIGtleXMoKTogc3RyaW5nW10geyByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9ub3JtYWxpemVkTmFtZXMudmFsdWVzKCkpOyB9XG5cbiAgLyoqXG4gICAqIFNldHMgb3Igb3ZlcnJpZGVzIGhlYWRlciB2YWx1ZSBmb3IgZ2l2ZW4gbmFtZS5cbiAgICovXG4gIHNldChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgaWYgKHZhbHVlLmxlbmd0aCkge1xuICAgICAgICB0aGlzLl9oZWFkZXJzLnNldChuYW1lLnRvTG93ZXJDYXNlKCksIFt2YWx1ZS5qb2luKCcsJyldKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faGVhZGVycy5zZXQobmFtZS50b0xvd2VyQ2FzZSgpLCBbdmFsdWVdKTtcbiAgICB9XG4gICAgdGhpcy5tYXlCZVNldE5vcm1hbGl6ZWROYW1lKG5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdmFsdWVzIG9mIGFsbCBoZWFkZXJzLlxuICAgKi9cbiAgdmFsdWVzKCk6IHN0cmluZ1tdW10geyByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9oZWFkZXJzLnZhbHVlcygpKTsgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHN0cmluZyBvZiBhbGwgaGVhZGVycy5cbiAgICovXG4gIC8vIFRPRE8odmljYik6IHJldHVybnMge1tuYW1lOiBzdHJpbmddOiBzdHJpbmdbXX1cbiAgdG9KU09OKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICBjb25zdCBzZXJpYWxpemVkOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge307XG4gICAgaWYgKCF0aGlzLl9oZWFkZXJzKSB7XG4gICAgICAvLyBkZWJ1Z2dlclxuXG4gICAgfVxuICAgIHRoaXMuX2hlYWRlcnMuZm9yRWFjaCgodmFsdWVzOiBzdHJpbmdbXSwgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBzcGxpdDogc3RyaW5nW10gPSBbXTtcbiAgICAgIHZhbHVlcy5mb3JFYWNoKHYgPT4gc3BsaXQucHVzaCguLi52LnNwbGl0KCcsJykpKTtcbiAgICAgIHNlcmlhbGl6ZWRbdGhpcy5fbm9ybWFsaXplZE5hbWVzLmdldChuYW1lKV0gPSBzcGxpdDtcbiAgICB9KTtcblxuICAgIHJldHVybiBzZXJpYWxpemVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgbGlzdCBvZiBoZWFkZXIgdmFsdWVzIGZvciBhIGdpdmVuIG5hbWUuXG4gICAqL1xuICBnZXRBbGwobmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmhhcyhuYW1lKSA/IHRoaXMuX2hlYWRlcnMuZ2V0KG5hbWUudG9Mb3dlckNhc2UoKSkgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXlCZVNldE5vcm1hbGl6ZWROYW1lKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGxjTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmICghdGhpcy5fbm9ybWFsaXplZE5hbWVzLmhhcyhsY05hbWUpKSB7XG4gICAgICB0aGlzLl9ub3JtYWxpemVkTmFtZXMuc2V0KGxjTmFtZSwgbmFtZSk7XG4gICAgfVxuICB9XG59Il19
@@ -351,4 +351,4 @@ export class RestRequest {
351
351
  }
352
352
  }
353
353
  RestRequest.jobId = 0;
354
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS9uZzItcmVzdC9wcm9qZWN0cy9uZzItcmVzdC9zcmMvbGliL3Jlc3QtcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNDLE9BQU8sS0FBd0IsTUFBTSxPQUFPLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxHQUFHLEVBQVUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsRUFDNUMsS0FBSyxDQUFDLFNBQVMsQ0FDbEIsQ0FBQTtBQUVELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQztBQUN6QixNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUM7QUFDOUIsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDO0FBQzVCLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQztBQUdoQyxzQkFBc0I7QUFDdEIsWUFBWTtBQUVaLE1BQU0sT0FBTyxXQUFXO0lBQXhCO1FBSVUsa0JB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QUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNwQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQzVFLENBQUM7O0FBamJjLGlCQUFLLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuXG5pbXBvcnQgeyBNb2RlbHMgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBSZXN0SGVhZGVycyB9IGZyb20gJy4vcmVzdC1oZWFkZXJzJztcblxuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL2Jyb3dzZXInO1xuaW1wb3J0IGF4aW9zLCB7IEF4aW9zUmVzcG9uc2UgfSBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJy4vcmVzb3VyY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBMb2csIExvZ2dlciB9IGZyb20gJ25nMi1sb2dnZXIvYnJvd3Nlcic7XG5cbmltcG9ydCB7IFJlcXVlc3RDYWNoZSB9IGZyb20gJy4vcmVxdWVzdC1jYWNoZSc7XG5jb25zdCBsb2cgPSBMb2cuY3JlYXRlKCdbbmcyLXJlc3RdIHJlc3QtcmVxdWVzdCdcbiAgLCBMZXZlbC5fX05PVEhJTkdcbilcblxuY29uc3Qgam9iSURrZXkgPSAnam9iSUQnO1xuY29uc3QgY3VzdG9tT2JzID0gJ2N1c3RvbU9icyc7XG5jb25zdCBjYW5jZWxGbiA9ICdjYW5jZWxGbic7XG5jb25zdCBpc0NhbmNlbGVkID0gJ2lzQ2FuY2VsZWQnO1xuZGVjbGFyZSBjb25zdCBnbG9iYWw6IGFueTtcblxuLy8jcmVnaW9uIG1vY2sgcmVxdWVzdFxuLy8jZW5kcmVnaW9uXG5cbmV4cG9ydCBjbGFzcyBSZXN0UmVxdWVzdCB7XG5cbiAgcHVibGljIHN0YXRpYyB6b25lO1xuICBwcml2YXRlIHN0YXRpYyBqb2JJZCA9IDA7XG4gIHByaXZhdGUgc3ViamVjdEludVVzZTogeyBbaWQ6IG51bWJlcl06IFN1YmplY3Q8YW55PiB9ID0ge307XG4gIHByaXZhdGUgbWV0YTogeyBbaWQ6IG51bWJlcl06IE1vZGVscy5NZXRhUmVxdWVzdCB9ID0ge307XG5cblxuICBwcml2YXRlIGhhbmRsZXJSZXN1bHQob3B0aW9uczogTW9kZWxzLkhhbmRsZVJlc3VsdE9wdGlvbnMsXG4gICAgc291cmNlUmVxdWVzdDogTW9kZWxzLkhhbmRsZVJlc3VsdFNvdXJjZVJlcXVlc3RPcHRpb25zKSB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucykpIHtcbiAgICAgIG9wdGlvbnMgPSB7fSBhcyBhbnk7XG4gICAgfVxuICAgIC8vIGxvZy5kKGBIQU5ETEUgUkVTVUxUIChqb2JpZDoke29wdGlvbnMuam9iaWR9KSAke3NvdXJjZVJlcXVlc3QudXJsfWApO1xuICAgIGNvbnN0IHsgcmVzLCBqb2JpZCwgaXNBcnJheSwgbWV0aG9kIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKHR5cGVvZiByZXMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlc3Bvc25zZSBmb3IgcmVxdWVzdC4gJyk7XG4gICAgfVxuXG4gICAgaWYgKEhlbHBlcnMuaXNCcm93c2VyKSB7XG4gICAgICByZXMuaGVhZGVycyA9IFJlc3RIZWFkZXJzLmZyb20ocmVzLmhlYWRlcnMpO1xuICAgIH1cblxuICAgIC8vIGVycm9yIG5vIGludGVybmV0XG4gICAgaWYgKHJlcy5lcnJvcikge1xuICAgICAgdGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXS5lcnJvcihuZXcgTW9kZWxzLkh0dHBSZXNwb25zZUVycm9yKHJlcy5lcnJvciwgcmVzLmRhdGEsIHJlcy5oZWFkZXJzLCByZXMuY29kZSwgam9iaWQpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZW50aXR5ID0gdGhpcy5tZXRhW2pvYmlkXS5lbnRpdHk7XG4gICAgY29uc3QgY2lyY3VsYXIgPSB0aGlzLm1ldGFbam9iaWRdLmNpcmN1bGFyO1xuXG4gICAgY29uc3Qgc3VjY2VzcyA9IChSZXNvdXJjZVsnX2xpc3RlblN1Y2Nlc3MnXSBhcyBTdWJqZWN0PE1vZGVscy5IdHRwUmVzcG9uc2U8YW55Pj4pXG5cbiAgICBjb25zdCByZXFSZXNwID0gbmV3IE1vZGVscy5IdHRwUmVzcG9uc2Uoc291cmNlUmVxdWVzdCwgcmVzLmRhdGEsIHJlcy5oZWFkZXJzLCByZXMuY29kZSwgZW50aXR5LCBjaXJjdWxhciwgam9iaWQsIGlzQXJyYXkpO1xuICAgIHN1Y2Nlc3MubmV4dChyZXFSZXNwKTtcblxuICAgIHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF0ubmV4dChyZXFSZXNwKTtcbiAgICB0aGlzLm1ldGFbam9iaWRdID0gdm9pZCAwO1xuICAgIHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF0uY29tcGxldGUoKTtcbiAgfVxuICBjaGVja0NhY2hlKHNvdXJjZVJlcXVlc3Q6IE1vZGVscy5IYW5kbGVSZXN1bHRTb3VyY2VSZXF1ZXN0T3B0aW9ucywgam9iaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGV4aXN0ZWRJbkNhY2hlID0gUmVxdWVzdENhY2hlLmZpbmRCeShzb3VyY2VSZXF1ZXN0KTtcbiAgICBpZiAoZXhpc3RlZEluQ2FjaGUpIHtcbiAgICAgIGxvZy5pKCdjYWNoZSBleGlzdHMnLCBleGlzdGVkSW5DYWNoZSlcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSAoUmVzb3VyY2VbJ19saXN0ZW5TdWNjZXNzJ10gYXMgU3ViamVjdDxNb2RlbHMuSHR0cFJlc3BvbnNlPGFueT4+KTtcbiAgICAgIHN1Y2Nlc3MubmV4dChleGlzdGVkSW5DYWNoZS5yZXNwb25zZSk7XG4gICAgICB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdLm5leHQoZXhpc3RlZEluQ2FjaGUpO1xuICAgICAgdGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXS5jb21wbGV0ZSgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8vIGxvZy5pKGBjYWNoZSBub3QgZXhpc3RzIGZvciBqb2JpZCAke2pvYmlkfWApXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXEoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgbWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCxcbiAgICBoZWFkZXJzPzogUmVzdEhlYWRlcnMsXG4gICAgYm9keT86IGFueSxcbiAgICBqb2JpZD86IG51bWJlcixcbiAgICBpc0FycmF5ID0gZmFsc2UsXG4gICAgbW9ja0h0dHA/OiBNb2RlbHMuTW9ja0h0dHBcbiAgKSB7XG4gICAgaWYgKHRoaXMuY2hlY2tDYWNoZSh7XG4gICAgICB1cmwsXG4gICAgICBib2R5LFxuICAgICAgaXNBcnJheSxcbiAgICAgIG1ldGhvZFxuICAgIH0sIGpvYmlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IENhbmNlbFRva2VuID0gYXhpb3MuQ2FuY2VsVG9rZW47XG4gICAgY29uc3Qgc291cmNlID0gQ2FuY2VsVG9rZW4uc291cmNlKCk7XG4gICAgdGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXVtjYW5jZWxGbl0gPSBzb3VyY2UuY2FuY2VsO1xuXG4gICAgdmFyIHJlc3BvbnNlOiBBeGlvc1Jlc3BvbnNlPGFueT47XG4gICAgaWYgKG1vY2tIdHRwKSB7XG5cbiAgICAgIGlmICh0eXBlb2YgbW9ja0h0dHAgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJlc3BvbnNlID0ge1xuICAgICAgICAgIGRhdGE6IG1vY2tIdHRwLmRhdGEsXG4gICAgICAgICAgc3RhdHVzOiBtb2NrSHR0cC5jb2RlLFxuICAgICAgICAgIGhlYWRlcnM6IG1vY2tIdHRwLmhlYWRlcnMsXG4gICAgICAgICAgc3RhdHVzVGV4dDogbW9ja0h0dHAuZXJyb3IsXG4gICAgICAgICAgY29uZmlnOiB7fVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBtb2NrSHR0cCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25zdCByID0gbW9ja0h0dHAodXJsLCBtZXRob2QsIGhlYWRlcnMsIGJvZHkpO1xuICAgICAgICByZXNwb25zZSA9IHtcbiAgICAgICAgICBkYXRhOiByLmRhdGEsXG4gICAgICAgICAgc3RhdHVzOiByLmNvZGUsXG4gICAgICAgICAgaGVhZGVyczogci5oZWFkZXJzLFxuICAgICAgICAgIHN0YXR1c1RleHQ6IHIuZXJyb3IsXG4gICAgICAgICAgY29uZmlnOiB7fVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYFske21ldGhvZH1dIChqb2JpZD0ke2pvYmlkfSkgcmVxdWVzdCB0bzogICR7dXJsfWApO1xuXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGhlYWRlcnMudG9KU09OKCkpXG5cbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBkYXRhOiBib2R5LFxuICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMudG9KU09OKCksXG4gICAgICAgICAgY2FuY2VsVG9rZW46IHNvdXJjZS50b2tlbixcbiAgICAgICAgICAvLyB3aXRoQ3JlZGVudGlhbHM6IHRydWUsIC8vIHRoaXMgY2FuIGJlIGRvbmUgbWFudWFsbHlcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGxvZy5kKGBhZnRlciByZXNwb25zZSBvZiBqb2JpZDogJHtqb2JpZH1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF1baXNDYW5jZWxlZF0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhhbmRsZXJSZXN1bHQoe1xuICAgICAgICByZXM6IHtcbiAgICAgICAgICBjb2RlOiByZXNwb25zZS5zdGF0dXMgYXMgYW55LFxuICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmRhdGEpLFxuICAgICAgICAgIGlzQXJyYXksXG4gICAgICAgICAgam9iaWQsXG4gICAgICAgICAgaGVhZGVyczogUmVzdEhlYWRlcnMuZnJvbShyZXNwb25zZS5oZWFkZXJzKVxuICAgICAgICB9LFxuICAgICAgICBtZXRob2QsXG4gICAgICAgIGpvYmlkLFxuICAgICAgICBpc0FycmF5XG4gICAgICB9LCB7XG4gICAgICAgIHVybCxcbiAgICAgICAgYm9keSxcbiAgICAgICAgbWV0aG9kLFxuICAgICAgICBpc0FycmF5LFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoY2F0Y2hlZEVycm9yKSB7XG4gICAgICBpZiAodGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXVtpc0NhbmNlbGVkXSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBjb25zb2xlLmxvZygnRVJST1IgUkVTUE9ORVNFIGNhdGNoZWRFcnJvciB0eXBlb2YgJywgdHlwZW9mIGNhdGNoZWRFcnJvcilcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdFUlJPUiBSRVNQT05FU0UgY2F0Y2hlZEVycm9yJywgY2F0Y2hlZEVycm9yKVxuICAgICAgaWYgKHR5cGVvZiBjYXRjaGVkRXJyb3IgPT09ICdvYmplY3QnICYmIGNhdGNoZWRFcnJvci5yZXNwb25zZSAmJiBjYXRjaGVkRXJyb3IucmVzcG9uc2UuZGF0YSkge1xuICAgICAgICBjb25zdCBlcnIgPSBjYXRjaGVkRXJyb3IucmVzcG9uc2UuZGF0YTtcbiAgICAgICAgY29uc3QgbXNnOiBzdHJpbmcgPSBjYXRjaGVkRXJyb3IucmVzcG9uc2UuZGF0YS5tZXNzYWdlIHx8ICcnO1xuICAgICAgICBsZXQgc3RhY2s6IHN0cmluZ1tdID0gKGVyci5zdGFjayB8fCAnJykuc3BsaXQoJ1xcbicpO1xuXG4gICAgICAgIGNvbnN0IGVyck9icyA9IChSZXNvdXJjZVsnX2xpc3RlbkVycm9ycyddIGFzIFN1YmplY3Q8TW9kZWxzLkJhY2tlbmRFcnJvcj4pO1xuICAgICAgICBlcnJPYnMubmV4dCh7XG4gICAgICAgICAgbXNnLFxuICAgICAgICAgIHN0YWNrLFxuICAgICAgICAgIGRhdGE6IGNhdGNoZWRFcnJvci5yZXNwb25zZS5kYXRhXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgY29uc3QgZXJyb3IgPSAoY2F0Y2hlZEVycm9yICYmIGNhdGNoZWRFcnJvci5yZXNwb25zZSkgPyBgWyR7Y2F0Y2hlZEVycm9yLnJlc3BvbnNlLnN0YXR1c1RleHR9XTogYCA6ICcnO1xuICAgICAgdGhpcy5oYW5kbGVyUmVzdWx0KHtcbiAgICAgICAgcmVzOiB7XG4gICAgICAgICAgY29kZTogKGNhdGNoZWRFcnJvciAmJiBjYXRjaGVkRXJyb3IucmVzcG9uc2UpID8gY2F0Y2hlZEVycm9yLnJlc3BvbnNlLnN0YXR1cyBhcyBhbnkgOiB2b2lkIDAsXG4gICAgICAgICAgZXJyb3I6IGAke2Vycm9yfSR7Y2F0Y2hlZEVycm9yLm1lc3NhZ2V9YCxcbiAgICAgICAgICBkYXRhOiAoY2F0Y2hlZEVycm9yICYmIGNhdGNoZWRFcnJvci5yZXNwb25zZSkgPyBKU09OLnN0cmluZ2lmeShjYXRjaGVkRXJyb3IucmVzcG9uc2UuZGF0YSkgOiB2b2lkIDAsXG4gICAgICAgICAgaXNBcnJheSxcbiAgICAgICAgICBqb2JpZCxcbiAgICAgICAgICBoZWFkZXJzOiBSZXN0SGVhZGVycy5mcm9tKGNhdGNoZWRFcnJvciAmJiBjYXRjaGVkRXJyb3IucmVzcG9uc2UgJiYgY2F0Y2hlZEVycm9yLnJlc3BvbnNlLmhlYWRlcnMpXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZCxcbiAgICAgICAgam9iaWQsXG4gICAgICAgIGlzQXJyYXlcbiAgICAgIH0sIHtcbiAgICAgICAgdXJsLFxuICAgICAgICBib2R5LFxuICAgICAgICBpc0FycmF5LFxuICAgICAgICBtZXRob2RcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVwbGF5KG1ldGhvZDogTW9kZWxzLkh0dHBNZXRob2QsIG1ldGE6IE1vZGVscy5NZXRhUmVxdWVzdCwgb25seUdldExhc3RSZXBsYXlGb3JNZXRob2Q6IGJvb2xlYW4pOiBNb2RlbHMuUmVwbGF5RGF0YSB7XG4gICAgbGV0IHJlcGxheTogTW9kZWxzLlJlcGxheURhdGE7XG5cbiAgICAvLyNyZWdpb24gcHJldmVudCBlbXB0eSB0cmVlXG4gICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5yZXBsYXlTdWJqZWN0c1ttZXRhLmVuZHBvaW50XSkpIHtcbiAgICAgIC8vIGxvZy5pKGAoJHttZXRhLmVuZHBvaW50fSkgYCk7XG4gICAgICB0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdID0ge307XG4gICAgfVxuICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXSkpIHtcbiAgICAgIC8vIGxvZy5pKGAoJHttZXRhLmVuZHBvaW50fSkoJHttZXRhLnBhdGh9KSBgKTtcbiAgICAgIHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXSA9IHt9O1xuICAgIH1cbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdW21ldGEucGF0aF1bbWV0aG9kXSkpIHtcbiAgICAgIC8vIGxvZy5pKGAoJHttZXRhLmVuZHBvaW50fSkoJHttZXRhLnBhdGh9KSBgKTtcbiAgICAgIHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXVttZXRob2RdID0ge307XG4gICAgfVxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgY29uc3Qgb2JqZWN0SURUb0NyZWF0ZU9yTGFzdCA9IChPYmplY3Qua2V5cyh0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdW21ldGEucGF0aF1bbWV0aG9kXSBhcyBPYmplY3QpLmxlbmd0aCkgK1xuICAgICAgKG9ubHlHZXRMYXN0UmVwbGF5Rm9yTWV0aG9kID8gMCA6IDEpO1xuICAgIGlmIChvbmx5R2V0TGFzdFJlcGxheUZvck1ldGhvZCAmJiAob2JqZWN0SURUb0NyZWF0ZU9yTGFzdCA9PT0gMCkpIHtcbiAgICAgIHJldHVybiByZXBsYXk7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5yZXBsYXlTdWJqZWN0c1ttZXRhLmVuZHBvaW50XVttZXRhLnBhdGhdW21ldGhvZF1bb2JqZWN0SURUb0NyZWF0ZU9yTGFzdF0pKSB7XG4gICAgICAvLyBsb2cuaShgKCR7bWV0YS5lbmRwb2ludH0pKCR7bWV0YS5wYXRofSkoJHttZXRob2R9KSBgKTtcbiAgICAgIHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXVttZXRob2RdW29iamVjdElEVG9DcmVhdGVPckxhc3RdID0gPE1vZGVscy5SZXBsYXlEYXRhPntcbiAgICAgICAgc3ViamVjdDogbmV3IFN1YmplY3QoKSxcbiAgICAgICAgZGF0YTogdm9pZCAwLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXBsYXkgPSB0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdW21ldGEucGF0aF1bbWV0aG9kXVtvYmplY3RJRFRvQ3JlYXRlT3JMYXN0XTtcblxuICAgIGlmICghXy5pc051bWJlcihyZXBsYXkuaWQpKSB7XG4gICAgICBpZiAoUmVzdFJlcXVlc3Quam9iSWQgPT09IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgICAgIFJlc3RSZXF1ZXN0LmpvYklkID0gMDtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgam9iaWQ6IG51bWJlciA9IFJlc3RSZXF1ZXN0LmpvYklkKys7XG4gICAgICByZXBsYXkuaWQgPSBqb2JpZDtcbiAgICAgIGNvbnN0IHN1YmplY3Q6IFN1YmplY3Q8YW55PiA9IHJlcGxheS5zdWJqZWN0O1xuICAgICAgc3ViamVjdFtqb2JJRGtleV0gPSBqb2JpZDsgLy8gbW9kaWZ5IGludGVybmFsIHJ4anMgc3ViamVjdCBvYmpcblxuICAgICAgdGhpcy5tZXRhW2pvYmlkXSA9IG1ldGE7XG4gICAgICB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdID0gc3ViamVjdDtcblxuICAgICAgdGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXVtjdXN0b21PYnNdID0gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XG4gICAgICAgIC8vIG9ic2VydmVyLnJlbW92ZSgoKSA9PiB7XG5cbiAgICAgICAgLy8gfSk7XG4gICAgICAgIG9ic2VydmVyLmFkZCgoKSA9PiB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coYGNhbmNlbCBvYnNlcnZhYmxlIGpvYiR7am9iaWR9YClcbiAgICAgICAgICBpZiAoIXRoaXMuc3ViamVjdEludVVzZVtqb2JpZF1baXNDYW5jZWxlZF0pIHtcbiAgICAgICAgICAgIHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF1baXNDYW5jZWxlZF0gPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdW2NhbmNlbEZuXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdW2NhbmNlbEZuXSgnW25nMi1yZXN0XSBvbiBwdXJwb3NlIGNhbmNlbGVkIGh0dHAgcmVxdWVzdCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgc29tZWhvdyBzZWNvbmQgdGltZSBjYW5jZWwgJHtqb2JpZH1gKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgc3ViID0gc3ViamVjdC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IGEgPT4gb2JzZXJ2ZXIubmV4dChhKSxcbiAgICAgICAgICBlcnJvcjogYSA9PiBvYnNlcnZlci5lcnJvcihhKSxcbiAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuXG4gICAgICAvLyNyZWdpb24gRElTUE9TRSAgQFVOQ09NTUVOVCBBRlRFUiBURVNUU1xuICAgICAgLy8gaWYgKG9iamVjdElEVG9DcmVhdGVPckxhc3QgPiAyKSB7XG4gICAgICAvLyAgIGNvbnN0IG9sZFJlcTogTW9kZWxzLlJlcGxheURhdGEgPSB0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdW21ldGEucGF0aF1bbWV0aG9kXVsob2JqZWN0SURUb0NyZWF0ZU9yTGFzdCAtIDIpXTtcbiAgICAgIC8vICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5tZXRhW29sZFJlcS5pZF0pKSB7XG4gICAgICAvLyAgICAgLy8gY2FudCBkZWxldGUgdGhpcyAtIGZvciBjb3VudGVyIHB1cnBvc2VcbiAgICAgIC8vICAgICB0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdW21ldGEucGF0aF1bbWV0aG9kXVsob2JqZWN0SURUb0NyZWF0ZU9yTGFzdCAtIDIpXSA9IHt9O1xuICAgICAgLy8gICAgIGRlbGV0ZSB0aGlzLnN1YmplY3RJbnVVc2Vbb2xkUmVxLmlkXTtcbiAgICAgIC8vICAgICBkZWxldGUgdGhpcy5tZXRhW29sZFJlcS5pZF07XG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH1cbiAgICAgIC8vI2VuZHJlZ2lvblxuICAgIH1cblxuICAgIHJldHVybiByZXBsYXk7XG4gIH1cblxuXG4gIC8vI3JlZ2lvbiBodHRwIG1ldGhvZHNcblxuICBwcml2YXRlIGdlbmVyYWxSZXEoXG4gICAgbWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sXG4gICAgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cCk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+IHtcblxuICAgIGNvbnN0IHJlcGxheTogTW9kZWxzLlJlcGxheURhdGEgPSB0aGlzLmdldFJlcGxheShtZXRob2QsIG1ldGEsIGZhbHNlKTtcbiAgICByZXBsYXkuZGF0YSA9IHsgdXJsLCBib2R5LCBoZWFkZXJzLCBpc0FycmF5IH07XG5cbiAgICAoKHB0aGlzLCBwdXJsLCBwbWV0aG9kLCBwaGVhZGVycywgcGJvZHksIHBpZCwgcGlzQXJyYXksIHBtb2NrSHR0cCkgPT4ge1xuICAgICAgLy8gbG9nLmQoYGZvciAke3B1cmx9IGpvYmlkICR7cGlkfWApO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiBwdGhpcy5yZXEocHVybCwgcG1ldGhvZCwgcGhlYWRlcnMsIHBib2R5LCBwaWQsIHBpc0FycmF5LCBwbW9ja0h0dHApKTtcbiAgICB9KSh0aGlzLCB1cmwsIG1ldGhvZCwgaGVhZGVycywgYm9keSwgcmVwbGF5LmlkLCBpc0FycmF5LCBtb2NrSHR0cClcblxuICAgIGNvbnN0IHJlc3A6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+ID0gZmlyc3RWYWx1ZUZyb20ocmVwbGF5LnN1YmplY3RbY3VzdG9tT2JzXSkgYXMgYW55O1xuICAgIHJlc3Aub2JzZXJ2YWJsZSA9IHJlcGxheS5zdWJqZWN0W2N1c3RvbU9ic107XG4gICAgcmVzcC5jYWNoZSA9IFJlcXVlc3RDYWNoZS5maW5kQnkoe1xuICAgICAgYm9keSxcbiAgICAgIGlzQXJyYXksXG4gICAgICBtZXRob2QsXG4gICAgICB1cmxcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzcDtcbiAgfVxuXG4gIGdldChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sIG1vY2tIdHRwOiBNb2RlbHMuTW9ja0h0dHBcbiAgKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PGFueT4ge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYWxSZXEoJ2dldCcsIHVybCwgYm9keSwgaGVhZGVycywgbWV0YSwgaXNBcnJheSwgbW9ja0h0dHApO1xuICB9XG5cbiAgaGVhZChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sIG1vY2tIdHRwOiBNb2RlbHMuTW9ja0h0dHBcbiAgKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PGFueT4ge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYWxSZXEoJ2hlYWQnLCB1cmwsIGJvZHksIGhlYWRlcnMsIG1ldGEsIGlzQXJyYXksIG1vY2tIdHRwKTtcbiAgfVxuXG4gIGRlbGV0ZShcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sXG4gICAgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cCk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmFsUmVxKCdkZWxldGUnLCB1cmwsIGJvZHksIGhlYWRlcnMsIG1ldGEsIGlzQXJyYXksIG1vY2tIdHRwKTtcbiAgfVxuXG4gIHBvc3QoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogc3RyaW5nLFxuICAgIGhlYWRlcnM6IFJlc3RIZWFkZXJzLFxuICAgIG1ldGE6IE1vZGVscy5NZXRhUmVxdWVzdCxcbiAgICBpc0FycmF5OiBib29sZWFuLFxuICAgIG1vY2tIdHRwOiBNb2RlbHMuTW9ja0h0dHBcbiAgKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PGFueT4ge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYWxSZXEoJ3Bvc3QnLCB1cmwsIGJvZHksIGhlYWRlcnMsIG1ldGEsIGlzQXJyYXksIG1vY2tIdHRwKTtcbiAgfVxuXG4gIHB1dChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sXG4gICAgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cFxuICApOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhbFJlcSgncHV0JywgdXJsLCBib2R5LCBoZWFkZXJzLCBtZXRhLCBpc0FycmF5LCBtb2NrSHR0cCk7XG4gIH1cblxuICBwYXRjaChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sXG4gICAgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cFxuICApOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhbFJlcSgncGF0Y2gnLCB1cmwsIGJvZHksIGhlYWRlcnMsIG1ldGEsIGlzQXJyYXksIG1vY2tIdHRwKTtcbiAgfVxuXG4gIGpzb25wKFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZXN0SGVhZGVycyxcbiAgICBtZXRhOiBNb2RlbHMuTWV0YVJlcXVlc3QsXG4gICAgaXNBcnJheTogYm9vbGVhbixcbiAgICBtb2NrSHR0cDogTW9kZWxzLk1vY2tIdHRwXG4gICk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+IHtcblxuICAgIGNvbnN0IHJlcGxheTogTW9kZWxzLlJlcGxheURhdGEgPSB0aGlzLmdldFJlcGxheSgnanNvbnAnLCBtZXRhLCBmYWxzZSk7XG4gICAgY29uc3Qgam9iaWQgPSByZXBsYXkuaWQ7XG4gICAgY29uc3QgbWV0aG9kID0gJ2pzb25wJ1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHVybC5lbmRzV2l0aCgnLycpKSB1cmwgPSB1cmwuc2xpY2UoMCwgdXJsLmxlbmd0aCAtIDEpXG4gICAgICBsZXQgbnVtID0gTWF0aC5yb3VuZCgxMDAwMCAqIE1hdGgucmFuZG9tKCkpO1xuICAgICAgbGV0IGNhbGxiYWNrTWV0aG9kTmFtZSA9IFwiY2JfXCIgKyBudW07XG4gICAgICB3aW5kb3dbY2FsbGJhY2tNZXRob2ROYW1lXSA9IChkYXRhKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNoZWNrQ2FjaGUoe1xuICAgICAgICAgIHVybCxcbiAgICAgICAgICBib2R5LFxuICAgICAgICAgIGlzQXJyYXksXG4gICAgICAgICAgbWV0aG9kXG4gICAgICAgIH0sIGpvYmlkKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhbmRsZXJSZXN1bHQoe1xuICAgICAgICAgIHJlczoge1xuICAgICAgICAgICAgZGF0YSwgaXNBcnJheVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgIGpvYmlkLFxuICAgICAgICAgIGlzQXJyYXlcbiAgICAgICAgfSwge1xuICAgICAgICAgIHVybCxcbiAgICAgICAgICBib2R5LFxuICAgICAgICAgIGlzQXJyYXksXG4gICAgICAgICAgbWV0aG9kLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgbGV0IHNjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICBzYy5zcmMgPSBgJHt1cmx9P2NhbGxiYWNrPSR7Y2FsbGJhY2tNZXRob2ROYW1lfWA7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjKTtcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoc2MpO1xuICAgIH0pXG5cbiAgICBjb25zdCByZXNwOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8YW55PiA9IGZpcnN0VmFsdWVGcm9tKHJlcGxheS5zdWJqZWN0W2N1c3RvbU9ic10pIGFzIGFueTtcbiAgICByZXNwLm9ic2VydmFibGUgPSByZXBsYXkuc3ViamVjdFtjdXN0b21PYnNdO1xuICAgIGNvbnNvbGUubG9nKCdhc3NpZ2luZyBjdXN0b20gb2JzZXJ2YWJsZScpXG4gICAgcmVzcC5jYWNoZSA9IFJlcXVlc3RDYWNoZS5maW5kQnkoe1xuICAgICAgYm9keSxcbiAgICAgIGlzQXJyYXksXG4gICAgICBtZXRob2QsXG4gICAgICB1cmxcbiAgICB9KVxuICAgIHJldHVybiByZXNwO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuICBwcml2YXRlIHJlcGxheVN1YmplY3RzID0ge307XG4gIHB1YmxpYyByZXBsYXkobWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCwgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0KSB7XG4gICAgY29uc3QgcmVwbGF5OiBNb2RlbHMuUmVwbGF5RGF0YSA9IHRoaXMuZ2V0UmVwbGF5KG1ldGhvZCwgbWV0YSwgdHJ1ZSk7XG4gICAgaWYgKCFyZXBsYXkgfHwgIXJlcGxheS5kYXRhKSB7XG4gICAgICBjb25zb2xlLndhcm4oYENhbm5vIHJlcGxheSBmaXJzdCAke21ldGhvZH0gcmVxdWVzdCBmcm9tICR7bWV0YS5lbmRwb2ludH0vJHttZXRhLnBhdGh9YCk7XG4gICAgICByZXR1cm47XG4gICAgfTtcbiAgICBpZiAocmVwbGF5ICYmIHJlcGxheS5zdWJqZWN0ICYmIEFycmF5LmlzQXJyYXkocmVwbGF5LnN1YmplY3Qub2JzZXJ2ZXJzKSAmJlxuICAgICAgcmVwbGF5LnN1YmplY3Qub2JzZXJ2ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS53YXJuKGBObyBvYnNlcnZhdG9ycyBmb3IgJHttZXRob2R9IHJlcXVlc3QgZnJvbSAke21ldGEuZW5kcG9pbnR9LyR7bWV0YS5wYXRofWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSByZXBsYXkuZGF0YS51cmw7XG4gICAgY29uc3QgaGVhZGVycyA9IHJlcGxheS5kYXRhLmhlYWRlcnM7XG4gICAgY29uc3QgYm9keSA9IHJlcGxheS5kYXRhLmJvZHk7XG4gICAgY29uc3QgaXNBcnJheSA9IHJlcGxheS5kYXRhLmlzQXJyYXk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlcSh1cmwsIG1ldGhvZCwgaGVhZGVycywgYm9keSwgcmVwbGF5LmlkLCBpc0FycmF5KSlcbiAgfVxuXG59XG4iXX0=
354
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS9uZzItcmVzdC9wcm9qZWN0cy9uZzItcmVzdC9zcmMvbGliL3Jlc3QtcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNDLE9BQU8sS0FBd0IsTUFBTSxPQUFPLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxHQUFHLEVBQVUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsRUFDNUMsS0FBSyxDQUFDLFNBQVMsQ0FDbEIsQ0FBQTtBQUVELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQztBQUN6QixNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUM7QUFDOUIsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDO0FBQzVCLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQztBQUdoQyxzQkFBc0I7QUFDdEIsWUFBWTtBQUVaLE1BQU0sT0FBTyxXQUFXO0lBQXhCO1FBSVUsa0JB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QUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNwQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQzVFLENBQUM7O0FBamJjLGlCQUFLLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuXG5pbXBvcnQgeyBNb2RlbHMgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBSZXN0SGVhZGVycyB9IGZyb20gJy4vcmVzdC1oZWFkZXJzJztcblxuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL2Jyb3dzZXInO1xuaW1wb3J0IGF4aW9zLCB7IEF4aW9zUmVzcG9uc2UgfSBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJy4vcmVzb3VyY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBMb2csIExvZ2dlciB9IGZyb20gJ25nMi1sb2dnZXIvYnJvd3Nlcic7XG5cbmltcG9ydCB7IFJlcXVlc3RDYWNoZSB9IGZyb20gJy4vcmVxdWVzdC1jYWNoZSc7XG5jb25zdCBsb2cgPSBMb2cuY3JlYXRlKCdbbmcyLXJlc3RdIHJlc3QtcmVxdWVzdCdcbiAgLCBMZXZlbC5fX05PVEhJTkdcbilcblxuY29uc3Qgam9iSURrZXkgPSAnam9iSUQnO1xuY29uc3QgY3VzdG9tT2JzID0gJ2N1c3RvbU9icyc7XG5jb25zdCBjYW5jZWxGbiA9ICdjYW5jZWxGbic7XG5jb25zdCBpc0NhbmNlbGVkID0gJ2lzQ2FuY2VsZWQnO1xuZGVjbGFyZSBjb25zdCBnbG9iYWw6IGFueTtcblxuLy8jcmVnaW9uIG1vY2sgcmVxdWVzdFxuLy8jZW5kcmVnaW9uXG5cbmV4cG9ydCBjbGFzcyBSZXN0UmVxdWVzdCB7XG5cbiAgcHVibGljIHN0YXRpYyB6b25lO1xuICBwcml2YXRlIHN0YXRpYyBqb2JJZCA9IDA7XG4gIHByaXZhdGUgc3ViamVjdEludVVzZTogeyBbaWQ6IG51bWJlcl06IFN1YmplY3Q8YW55PiB9ID0ge307XG4gIHByaXZhdGUgbWV0YTogeyBbaWQ6IG51bWJlcl06IE1vZGVscy5NZXRhUmVxdWVzdCB9ID0ge307XG5cblxuICBwcml2YXRlIGhhbmRsZXJSZXN1bHQob3B0aW9uczogTW9kZWxzLkhhbmRsZVJlc3VsdE9wdGlvbnMsXG4gICAgc291cmNlUmVxdWVzdDogTW9kZWxzLkhhbmRsZVJlc3VsdFNvdXJjZVJlcXVlc3RPcHRpb25zKSB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucykpIHtcbiAgICAgIG9wdGlvbnMgPSB7fSBhcyBhbnk7XG4gICAgfVxuICAgIC8vIGxvZy5kKGBIQU5ETEUgUkVTVUxUIChqb2JpZDoke29wdGlvbnMuam9iaWR9KSAke3NvdXJjZVJlcXVlc3QudXJsfWApO1xuICAgIGNvbnN0IHsgcmVzLCBqb2JpZCwgaXNBcnJheSwgbWV0aG9kIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKHR5cGVvZiByZXMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlc3Bvc25zZSBmb3IgcmVxdWVzdC4gJyk7XG4gICAgfVxuXG4gICAgaWYgKEhlbHBlcnMuaXNCcm93c2VyKSB7XG4gICAgICByZXMuaGVhZGVycyA9IFJlc3RIZWFkZXJzLmZyb20ocmVzLmhlYWRlcnMpO1xuICAgIH1cblxuICAgIC8vIGVycm9yIG5vIGludGVybmV0XG4gICAgaWYgKHJlcy5lcnJvcikge1xuICAgICAgdGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXS5lcnJvcihuZXcgTW9kZWxzLkh0dHBSZXNwb25zZUVycm9yKHJlcy5lcnJvciwgcmVzLmRhdGEsIHJlcy5oZWFkZXJzLCByZXMuY29kZSwgam9iaWQpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZW50aXR5ID0gdGhpcy5tZXRhW2pvYmlkXS5lbnRpdHk7XG4gICAgY29uc3QgY2lyY3VsYXIgPSB0aGlzLm1ldGFbam9iaWRdLmNpcmN1bGFyO1xuXG4gICAgY29uc3Qgc3VjY2VzcyA9IChSZXNvdXJjZVsnX2xpc3RlblN1Y2Nlc3MnXSBhcyBTdWJqZWN0PE1vZGVscy5IdHRwUmVzcG9uc2U8YW55Pj4pXG5cbiAgICBjb25zdCByZXFSZXNwID0gbmV3IE1vZGVscy5IdHRwUmVzcG9uc2Uoc291cmNlUmVxdWVzdCwgcmVzLmRhdGEsIHJlcy5oZWFkZXJzLCByZXMuY29kZSwgZW50aXR5LCBjaXJjdWxhciwgam9iaWQsIGlzQXJyYXkpO1xuICAgIHN1Y2Nlc3MubmV4dChyZXFSZXNwKTtcblxuICAgIHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF0ubmV4dChyZXFSZXNwKTtcbiAgICB0aGlzLm1ldGFbam9iaWRdID0gdm9pZCAwO1xuICAgIHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF0uY29tcGxldGUoKTtcbiAgfVxuICBjaGVja0NhY2hlKHNvdXJjZVJlcXVlc3Q6IE1vZGVscy5IYW5kbGVSZXN1bHRTb3VyY2VSZXF1ZXN0T3B0aW9ucywgam9iaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGV4aXN0ZWRJbkNhY2hlID0gUmVxdWVzdENhY2hlLmZpbmRCeShzb3VyY2VSZXF1ZXN0KTtcbiAgICBpZiAoZXhpc3RlZEluQ2FjaGUpIHtcbiAgICAgIGxvZy5pKCdjYWNoZSBleGlzdHMnLCBleGlzdGVkSW5DYWNoZSlcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSAoUmVzb3VyY2VbJ19saXN0ZW5TdWNjZXNzJ10gYXMgU3ViamVjdDxNb2RlbHMuSHR0cFJlc3BvbnNlPGFueT4+KTtcbiAgICAgIHN1Y2Nlc3MubmV4dChleGlzdGVkSW5DYWNoZS5yZXNwb25zZSk7XG4gICAgICB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdLm5leHQoZXhpc3RlZEluQ2FjaGUpO1xuICAgICAgdGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXS5jb21wbGV0ZSgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8vIGxvZy5pKGBjYWNoZSBub3QgZXhpc3RzIGZvciBqb2JpZCAke2pvYmlkfWApXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXEoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgbWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCxcbiAgICBoZWFkZXJzPzogUmVzdEhlYWRlcnMsXG4gICAgYm9keT86IGFueSxcbiAgICBqb2JpZD86IG51bWJlcixcbiAgICBpc0FycmF5ID0gZmFsc2UsXG4gICAgbW9ja0h0dHA/OiBNb2RlbHMuTW9ja0h0dHBcbiAgKSB7XG4gICAgaWYgKHRoaXMuY2hlY2tDYWNoZSh7XG4gICAgICB1cmwsXG4gICAgICBib2R5LFxuICAgICAgaXNBcnJheSxcbiAgICAgIG1ldGhvZFxuICAgIH0sIGpvYmlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IENhbmNlbFRva2VuID0gYXhpb3MuQ2FuY2VsVG9rZW47XG4gICAgY29uc3Qgc291cmNlID0gQ2FuY2VsVG9rZW4uc291cmNlKCk7XG4gICAgdGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXVtjYW5jZWxGbl0gPSBzb3VyY2UuY2FuY2VsO1xuXG4gICAgdmFyIHJlc3BvbnNlOiBBeGlvc1Jlc3BvbnNlPGFueT47XG4gICAgaWYgKG1vY2tIdHRwKSB7XG5cbiAgICAgIGlmICh0eXBlb2YgbW9ja0h0dHAgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJlc3BvbnNlID0ge1xuICAgICAgICAgIGRhdGE6IG1vY2tIdHRwLmRhdGEsXG4gICAgICAgICAgc3RhdHVzOiBtb2NrSHR0cC5jb2RlLFxuICAgICAgICAgIGhlYWRlcnM6IG1vY2tIdHRwLmhlYWRlcnMsXG4gICAgICAgICAgc3RhdHVzVGV4dDogbW9ja0h0dHAuZXJyb3IsXG4gICAgICAgICAgY29uZmlnOiB7fVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBtb2NrSHR0cCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25zdCByID0gbW9ja0h0dHAodXJsLCBtZXRob2QsIGhlYWRlcnMsIGJvZHkpO1xuICAgICAgICByZXNwb25zZSA9IHtcbiAgICAgICAgICBkYXRhOiByLmRhdGEsXG4gICAgICAgICAgc3RhdHVzOiByLmNvZGUsXG4gICAgICAgICAgaGVhZGVyczogci5oZWFkZXJzLFxuICAgICAgICAgIHN0YXR1c1RleHQ6IHIuZXJyb3IsXG4gICAgICAgICAgY29uZmlnOiB7fVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYFske21ldGhvZH1dIChqb2JpZD0ke2pvYmlkfSkgcmVxdWVzdCB0bzogICR7dXJsfWApO1xuXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGhlYWRlcnMudG9KU09OKCkpXG5cbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBkYXRhOiBib2R5LFxuICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMudG9KU09OKCksXG4gICAgICAgICAgY2FuY2VsVG9rZW46IHNvdXJjZS50b2tlbixcbiAgICAgICAgICAvLyB3aXRoQ3JlZGVudGlhbHM6IHRydWUsIC8vIHRoaXMgY2FuIGJlIGRvbmUgbWFudWFsbHlcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGxvZy5kKGBhZnRlciByZXNwb25zZSBvZiBqb2JpZDogJHtqb2JpZH1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF1baXNDYW5jZWxlZF0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhhbmRsZXJSZXN1bHQoe1xuICAgICAgICByZXM6IHtcbiAgICAgICAgICBjb2RlOiByZXNwb25zZS5zdGF0dXMgYXMgYW55LFxuICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmRhdGEpLFxuICAgICAgICAgIGlzQXJyYXksXG4gICAgICAgICAgam9iaWQsXG4gICAgICAgICAgaGVhZGVyczogUmVzdEhlYWRlcnMuZnJvbShyZXNwb25zZS5oZWFkZXJzKVxuICAgICAgICB9LFxuICAgICAgICBtZXRob2QsXG4gICAgICAgIGpvYmlkLFxuICAgICAgICBpc0FycmF5XG4gICAgICB9LCB7XG4gICAgICAgIHVybCxcbiAgICAgICAgYm9keSxcbiAgICAgICAgbWV0aG9kLFxuICAgICAgICBpc0FycmF5LFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoY2F0Y2hlZEVycm9yKSB7XG4gICAgICBpZiAodGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXVtpc0NhbmNlbGVkXSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBjb25zb2xlLmxvZygnRVJST1IgUkVTUE9ORVNFIGNhdGNoZWRFcnJvciB0eXBlb2YgJywgdHlwZW9mIGNhdGNoZWRFcnJvcilcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdFUlJPUiBSRVNQT05FU0UgY2F0Y2hlZEVycm9yJywgY2F0Y2hlZEVycm9yKVxuICAgICAgaWYgKHR5cGVvZiBjYXRjaGVkRXJyb3IgPT09ICdvYmplY3QnICYmIGNhdGNoZWRFcnJvci5yZXNwb25zZSAmJiBjYXRjaGVkRXJyb3IucmVzcG9uc2UuZGF0YSkge1xuICAgICAgICBjb25zdCBlcnIgPSBjYXRjaGVkRXJyb3IucmVzcG9uc2UuZGF0YTtcbiAgICAgICAgY29uc3QgbXNnOiBzdHJpbmcgPSBjYXRjaGVkRXJyb3IucmVzcG9uc2UuZGF0YS5tZXNzYWdlIHx8ICcnO1xuICAgICAgICBsZXQgc3RhY2s6IHN0cmluZ1tdID0gKGVyci5zdGFjayB8fCAnJykuc3BsaXQoJ1xcbicpO1xuXG4gICAgICAgIGNvbnN0IGVyck9icyA9IChSZXNvdXJjZVsnX2xpc3RlbkVycm9ycyddIGFzIFN1YmplY3Q8TW9kZWxzLkJhY2tlbmRFcnJvcj4pO1xuICAgICAgICBlcnJPYnMubmV4dCh7XG4gICAgICAgICAgbXNnLFxuICAgICAgICAgIHN0YWNrLFxuICAgICAgICAgIGRhdGE6IGNhdGNoZWRFcnJvci5yZXNwb25zZS5kYXRhXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgY29uc3QgZXJyb3IgPSAoY2F0Y2hlZEVycm9yICYmIGNhdGNoZWRFcnJvci5yZXNwb25zZSkgPyBgWyR7Y2F0Y2hlZEVycm9yLnJlc3BvbnNlLnN0YXR1c1RleHR9XTogYCA6ICcnO1xuICAgICAgdGhpcy5oYW5kbGVyUmVzdWx0KHtcbiAgICAgICAgcmVzOiB7XG4gICAgICAgICAgY29kZTogKGNhdGNoZWRFcnJvciAmJiBjYXRjaGVkRXJyb3IucmVzcG9uc2UpID8gY2F0Y2hlZEVycm9yLnJlc3BvbnNlLnN0YXR1cyBhcyBhbnkgOiB2b2lkIDAsXG4gICAgICAgICAgZXJyb3I6IGAke2Vycm9yfSR7Y2F0Y2hlZEVycm9yLm1lc3NhZ2V9YCxcbiAgICAgICAgICBkYXRhOiAoY2F0Y2hlZEVycm9yICYmIGNhdGNoZWRFcnJvci5yZXNwb25zZSkgPyBKU09OLnN0cmluZ2lmeShjYXRjaGVkRXJyb3IucmVzcG9uc2UuZGF0YSkgOiB2b2lkIDAsXG4gICAgICAgICAgaXNBcnJheSxcbiAgICAgICAgICBqb2JpZCxcbiAgICAgICAgICBoZWFkZXJzOiBSZXN0SGVhZGVycy5mcm9tKGNhdGNoZWRFcnJvciAmJiBjYXRjaGVkRXJyb3IucmVzcG9uc2UgJiYgY2F0Y2hlZEVycm9yLnJlc3BvbnNlLmhlYWRlcnMpXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZCxcbiAgICAgICAgam9iaWQsXG4gICAgICAgIGlzQXJyYXlcbiAgICAgIH0sIHtcbiAgICAgICAgdXJsLFxuICAgICAgICBib2R5LFxuICAgICAgICBpc0FycmF5LFxuICAgICAgICBtZXRob2RcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVwbGF5KG1ldGhvZDogTW9kZWxzLkh0dHBNZXRob2QsIG1ldGE6IE1vZGVscy5NZXRhUmVxdWVzdCwgb25seUdldExhc3RSZXBsYXlGb3JNZXRob2Q6IGJvb2xlYW4pOiBNb2RlbHMuUmVwbGF5RGF0YSB7XG4gICAgbGV0IHJlcGxheTogTW9kZWxzLlJlcGxheURhdGE7XG5cbiAgICAvLyNyZWdpb24gcHJldmVudCBlbXB0eSB0cmVlXG4gICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5yZXBsYXlTdWJqZWN0c1ttZXRhLmVuZHBvaW50XSkpIHtcbiAgICAgIC8vIGxvZy5pKGAoJHttZXRhLmVuZHBvaW50fSkgYCk7XG4gICAgICB0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdID0ge307XG4gICAgfVxuICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXSkpIHtcbiAgICAgIC8vIGxvZy5pKGAoJHttZXRhLmVuZHBvaW50fSkoJHttZXRhLnBhdGh9KSBgKTtcbiAgICAgIHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXSA9IHt9O1xuICAgIH1cbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdW21ldGEucGF0aF1bbWV0aG9kXSkpIHtcbiAgICAgIC8vIGxvZy5pKGAoJHttZXRhLmVuZHBvaW50fSkoJHttZXRhLnBhdGh9KSBgKTtcbiAgICAgIHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXVttZXRob2RdID0ge307XG4gICAgfVxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgY29uc3Qgb2JqZWN0SURUb0NyZWF0ZU9yTGFzdCA9IChPYmplY3Qua2V5cyh0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdW21ldGEucGF0aF1bbWV0aG9kXSBhcyBPYmplY3QpLmxlbmd0aCkgK1xuICAgICAgKG9ubHlHZXRMYXN0UmVwbGF5Rm9yTWV0aG9kID8gMCA6IDEpO1xuICAgIGlmIChvbmx5R2V0TGFzdFJlcGxheUZvck1ldGhvZCAmJiAob2JqZWN0SURUb0NyZWF0ZU9yTGFzdCA9PT0gMCkpIHtcbiAgICAgIHJldHVybiByZXBsYXk7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5yZXBsYXlTdWJqZWN0c1ttZXRhLmVuZHBvaW50XVttZXRhLnBhdGhdW21ldGhvZF1bb2JqZWN0SURUb0NyZWF0ZU9yTGFzdF0pKSB7XG4gICAgICAvLyBsb2cuaShgKCR7bWV0YS5lbmRwb2ludH0pKCR7bWV0YS5wYXRofSkoJHttZXRob2R9KSBgKTtcbiAgICAgIHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXVttZXRob2RdW29iamVjdElEVG9DcmVhdGVPckxhc3RdID0gPE1vZGVscy5SZXBsYXlEYXRhPntcbiAgICAgICAgc3ViamVjdDogbmV3IFN1YmplY3QoKSxcbiAgICAgICAgZGF0YTogdm9pZCAwLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXBsYXkgPSB0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdW21ldGEucGF0aF1bbWV0aG9kXVtvYmplY3RJRFRvQ3JlYXRlT3JMYXN0XTtcblxuICAgIGlmICghXy5pc051bWJlcihyZXBsYXkuaWQpKSB7XG4gICAgICBpZiAoUmVzdFJlcXVlc3Quam9iSWQgPT09IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgICAgIFJlc3RSZXF1ZXN0LmpvYklkID0gMDtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgam9iaWQ6IG51bWJlciA9IFJlc3RSZXF1ZXN0LmpvYklkKys7XG4gICAgICByZXBsYXkuaWQgPSBqb2JpZDtcbiAgICAgIGNvbnN0IHN1YmplY3Q6IFN1YmplY3Q8YW55PiA9IHJlcGxheS5zdWJqZWN0O1xuICAgICAgc3ViamVjdFtqb2JJRGtleV0gPSBqb2JpZDsgLy8gbW9kaWZ5IGludGVybmFsIHJ4anMgc3ViamVjdCBvYmpcblxuICAgICAgdGhpcy5tZXRhW2pvYmlkXSA9IG1ldGE7XG4gICAgICB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdID0gc3ViamVjdDtcblxuICAgICAgdGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXVtjdXN0b21PYnNdID0gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XG4gICAgICAgIC8vIG9ic2VydmVyLnJlbW92ZSgoKSA9PiB7XG5cbiAgICAgICAgLy8gfSk7XG4gICAgICAgIG9ic2VydmVyLmFkZCgoKSA9PiB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coYGNhbmNlbCBvYnNlcnZhYmxlIGpvYiR7am9iaWR9YClcbiAgICAgICAgICBpZiAoIXRoaXMuc3ViamVjdEludVVzZVtqb2JpZF1baXNDYW5jZWxlZF0pIHtcbiAgICAgICAgICAgIHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF1baXNDYW5jZWxlZF0gPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdW2NhbmNlbEZuXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdW2NhbmNlbEZuXSgnW25nMi1yZXN0XSBvbiBwdXJwb3NlIGNhbmNlbGVkIGh0dHAgcmVxdWVzdCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgc29tZWhvdyBzZWNvbmQgdGltZSBjYW5jZWwgJHtqb2JpZH1gKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgc3ViID0gc3ViamVjdC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IGEgPT4gb2JzZXJ2ZXIubmV4dChhKSxcbiAgICAgICAgICBlcnJvcjogYSA9PiBvYnNlcnZlci5lcnJvcihhKSxcbiAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuXG4gICAgICAvLyNyZWdpb24gRElTUE9TRSAgQFVOQ09NTUVOVCBBRlRFUiBURVNUU1xuICAgICAgLy8gaWYgKG9iamVjdElEVG9DcmVhdGVPckxhc3QgPiAyKSB7XG4gICAgICAvLyAgIGNvbnN0IG9sZFJlcTogTW9kZWxzLlJlcGxheURhdGEgPSB0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdW21ldGEucGF0aF1bbWV0aG9kXVsob2JqZWN0SURUb0NyZWF0ZU9yTGFzdCAtIDIpXTtcbiAgICAgIC8vICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5tZXRhW29sZFJlcS5pZF0pKSB7XG4gICAgICAvLyAgICAgLy8gY2FudCBkZWxldGUgdGhpcyAtIGZvciBjb3VudGVyIHB1cnBvc2VcbiAgICAgIC8vICAgICB0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdW21ldGEucGF0aF1bbWV0aG9kXVsob2JqZWN0SURUb0NyZWF0ZU9yTGFzdCAtIDIpXSA9IHt9O1xuICAgICAgLy8gICAgIGRlbGV0ZSB0aGlzLnN1YmplY3RJbnVVc2Vbb2xkUmVxLmlkXTtcbiAgICAgIC8vICAgICBkZWxldGUgdGhpcy5tZXRhW29sZFJlcS5pZF07XG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH1cbiAgICAgIC8vI2VuZHJlZ2lvblxuICAgIH1cblxuICAgIHJldHVybiByZXBsYXk7XG4gIH1cblxuXG4gIC8vI3JlZ2lvbiBodHRwIG1ldGhvZHNcblxuICBwcml2YXRlIGdlbmVyYWxSZXEoXG4gICAgbWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sXG4gICAgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cCk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+IHtcblxuICAgIGNvbnN0IHJlcGxheTogTW9kZWxzLlJlcGxheURhdGEgPSB0aGlzLmdldFJlcGxheShtZXRob2QsIG1ldGEsIGZhbHNlKTtcbiAgICByZXBsYXkuZGF0YSA9IHsgdXJsLCBib2R5LCBoZWFkZXJzLCBpc0FycmF5IH07XG5cbiAgICAoKHB0aGlzLCBwdXJsLCBwbWV0aG9kLCBwaGVhZGVycywgcGJvZHksIHBpZCwgcGlzQXJyYXksIHBtb2NrSHR0cCkgPT4ge1xuICAgICAgLy8gbG9nLmQoYGZvciAke3B1cmx9IGpvYmlkICR7cGlkfWApO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiBwdGhpcy5yZXEocHVybCwgcG1ldGhvZCwgcGhlYWRlcnMsIHBib2R5LCBwaWQsIHBpc0FycmF5LCBwbW9ja0h0dHApKTtcbiAgICB9KSh0aGlzLCB1cmwsIG1ldGhvZCwgaGVhZGVycywgYm9keSwgcmVwbGF5LmlkLCBpc0FycmF5LCBtb2NrSHR0cClcblxuICAgIGNvbnN0IHJlc3A6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+ID0gZmlyc3RWYWx1ZUZyb20ocmVwbGF5LnN1YmplY3RbY3VzdG9tT2JzXSkgYXMgYW55O1xuICAgIHJlc3Aub2JzZXJ2YWJsZSA9IHJlcGxheS5zdWJqZWN0W2N1c3RvbU9ic107XG4gICAgcmVzcC5jYWNoZSA9IFJlcXVlc3RDYWNoZS5maW5kQnkoe1xuICAgICAgYm9keSxcbiAgICAgIGlzQXJyYXksXG4gICAgICBtZXRob2QsXG4gICAgICB1cmxcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzcDtcbiAgfVxuXG4gIGdldChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sIG1vY2tIdHRwOiBNb2RlbHMuTW9ja0h0dHBcbiAgKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PGFueT4ge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYWxSZXEoJ2dldCcsIHVybCwgYm9keSwgaGVhZGVycywgbWV0YSwgaXNBcnJheSwgbW9ja0h0dHApO1xuICB9XG5cbiAgaGVhZChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sIG1vY2tIdHRwOiBNb2RlbHMuTW9ja0h0dHBcbiAgKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PGFueT4ge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYWxSZXEoJ2hlYWQnLCB1cmwsIGJvZHksIGhlYWRlcnMsIG1ldGEsIGlzQXJyYXksIG1vY2tIdHRwKTtcbiAgfVxuXG4gIGRlbGV0ZShcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sXG4gICAgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cCk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmFsUmVxKCdkZWxldGUnLCB1cmwsIGJvZHksIGhlYWRlcnMsIG1ldGEsIGlzQXJyYXksIG1vY2tIdHRwKTtcbiAgfVxuXG4gIHBvc3QoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogc3RyaW5nLFxuICAgIGhlYWRlcnM6IFJlc3RIZWFkZXJzLFxuICAgIG1ldGE6IE1vZGVscy5NZXRhUmVxdWVzdCxcbiAgICBpc0FycmF5OiBib29sZWFuLFxuICAgIG1vY2tIdHRwOiBNb2RlbHMuTW9ja0h0dHBcbiAgKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PGFueT4ge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYWxSZXEoJ3Bvc3QnLCB1cmwsIGJvZHksIGhlYWRlcnMsIG1ldGEsIGlzQXJyYXksIG1vY2tIdHRwKTtcbiAgfVxuXG4gIHB1dChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sXG4gICAgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cFxuICApOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhbFJlcSgncHV0JywgdXJsLCBib2R5LCBoZWFkZXJzLCBtZXRhLCBpc0FycmF5LCBtb2NrSHR0cCk7XG4gIH1cblxuICBwYXRjaChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sXG4gICAgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cFxuICApOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhbFJlcSgncGF0Y2gnLCB1cmwsIGJvZHksIGhlYWRlcnMsIG1ldGEsIGlzQXJyYXksIG1vY2tIdHRwKTtcbiAgfVxuXG4gIGpzb25wKFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZXN0SGVhZGVycyxcbiAgICBtZXRhOiBNb2RlbHMuTWV0YVJlcXVlc3QsXG4gICAgaXNBcnJheTogYm9vbGVhbixcbiAgICBtb2NrSHR0cDogTW9kZWxzLk1vY2tIdHRwXG4gICk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+IHtcblxuICAgIGNvbnN0IHJlcGxheTogTW9kZWxzLlJlcGxheURhdGEgPSB0aGlzLmdldFJlcGxheSgnanNvbnAnLCBtZXRhLCBmYWxzZSk7XG4gICAgY29uc3Qgam9iaWQgPSByZXBsYXkuaWQ7XG4gICAgY29uc3QgbWV0aG9kID0gJ2pzb25wJ1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHVybC5lbmRzV2l0aCgnLycpKSB1cmwgPSB1cmwuc2xpY2UoMCwgdXJsLmxlbmd0aCAtIDEpXG4gICAgICBsZXQgbnVtID0gTWF0aC5yb3VuZCgxMDAwMCAqIE1hdGgucmFuZG9tKCkpO1xuICAgICAgbGV0IGNhbGxiYWNrTWV0aG9kTmFtZSA9IFwiY2JfXCIgKyBudW07XG4gICAgICB3aW5kb3dbY2FsbGJhY2tNZXRob2ROYW1lXSA9IChkYXRhKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNoZWNrQ2FjaGUoe1xuICAgICAgICAgIHVybCxcbiAgICAgICAgICBib2R5LFxuICAgICAgICAgIGlzQXJyYXksXG4gICAgICAgICAgbWV0aG9kXG4gICAgICAgIH0sIGpvYmlkKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhbmRsZXJSZXN1bHQoe1xuICAgICAgICAgIHJlczoge1xuICAgICAgICAgICAgZGF0YSwgaXNBcnJheVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgIGpvYmlkLFxuICAgICAgICAgIGlzQXJyYXlcbiAgICAgICAgfSwge1xuICAgICAgICAgIHVybCxcbiAgICAgICAgICBib2R5LFxuICAgICAgICAgIGlzQXJyYXksXG4gICAgICAgICAgbWV0aG9kLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgbGV0IHNjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICBzYy5zcmMgPSBgJHt1cmx9P2NhbGxiYWNrPSR7Y2FsbGJhY2tNZXRob2ROYW1lfWA7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjKTtcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoc2MpO1xuICAgIH0pXG5cbiAgICBjb25zdCByZXNwOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8YW55PiA9IGZpcnN0VmFsdWVGcm9tKHJlcGxheS5zdWJqZWN0W2N1c3RvbU9ic10pIGFzIGFueTtcbiAgICByZXNwLm9ic2VydmFibGUgPSByZXBsYXkuc3ViamVjdFtjdXN0b21PYnNdO1xuICAgIGNvbnNvbGUubG9nKCdhc3NpZ2luZyBjdXN0b20gb2JzZXJ2YWJsZScpXG4gICAgcmVzcC5jYWNoZSA9IFJlcXVlc3RDYWNoZS5maW5kQnkoe1xuICAgICAgYm9keSxcbiAgICAgIGlzQXJyYXksXG4gICAgICBtZXRob2QsXG4gICAgICB1cmxcbiAgICB9KVxuICAgIHJldHVybiByZXNwO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuICBwcml2YXRlIHJlcGxheVN1YmplY3RzID0ge307XG4gIHB1YmxpYyByZXBsYXkobWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCwgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0KSB7XG4gICAgY29uc3QgcmVwbGF5OiBNb2RlbHMuUmVwbGF5RGF0YSA9IHRoaXMuZ2V0UmVwbGF5KG1ldGhvZCwgbWV0YSwgdHJ1ZSk7XG4gICAgaWYgKCFyZXBsYXkgfHwgIXJlcGxheS5kYXRhKSB7XG4gICAgICBjb25zb2xlLndhcm4oYENhbm5vIHJlcGxheSBmaXJzdCAke21ldGhvZH0gcmVxdWVzdCBmcm9tICR7bWV0YS5lbmRwb2ludH0vJHttZXRhLnBhdGh9YCk7XG4gICAgICByZXR1cm47XG4gICAgfTtcbiAgICBpZiAocmVwbGF5ICYmIHJlcGxheS5zdWJqZWN0ICYmIEFycmF5LmlzQXJyYXkocmVwbGF5LnN1YmplY3Qub2JzZXJ2ZXJzKSAmJlxuICAgICAgcmVwbGF5LnN1YmplY3Qub2JzZXJ2ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS53YXJuKGBObyBvYnNlcnZhdG9ycyBmb3IgJHttZXRob2R9IHJlcXVlc3QgZnJvbSAke21ldGEuZW5kcG9pbnR9LyR7bWV0YS5wYXRofWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSByZXBsYXkuZGF0YS51cmw7XG4gICAgY29uc3QgaGVhZGVycyA9IHJlcGxheS5kYXRhLmhlYWRlcnM7XG4gICAgY29uc3QgYm9keSA9IHJlcGxheS5kYXRhLmJvZHk7XG4gICAgY29uc3QgaXNBcnJheSA9IHJlcGxheS5kYXRhLmlzQXJyYXk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlcSh1cmwsIG1ldGhvZCwgaGVhZGVycywgYm9keSwgcmVwbGF5LmlkLCBpc0FycmF5KSlcbiAgfVxuXG59Il19
@@ -122,4 +122,4 @@ export class Rest {
122
122
  return this.req('jsonp', void 0, params, doNotSerializeParams);
123
123
  }
124
124
  }
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvbmcyLXJlc3QvcHJvamVjdHMvbmcyLXJlc3Qvc3JjL2xpYi9yZXN0LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsWUFBWTtBQUVaLE1BQU0sT0FBTyxJQUFJO0lBaURmLFlBQ0UsUUFBZ0IsRUFDUixPQUFvQixFQUNwQixJQUF3QixFQUN4QixpQkFBOEI7UUFGOUIsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQUNwQixTQUFJLEdBQUosSUFBSSxDQUFvQjtRQUN4QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWE7UUFYeEMsWUFBWTtRQUVaLHNCQUFzQjtRQUNkLGFBQVEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBNERuRSxZQUFZO1FBRVosVUFBSyxHQUFHO1lBQ04sR0FBRyxFQUFFLENBQUMsU0FBNkIsS0FBSyxDQUFDLEVBQUUsb0JBQThCLEVBQXdELEVBQUU7Z0JBQ2pJLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixFQUFFLElBQUksQ0FBUSxDQUFBO1lBQzNFLENBQUM7WUFDRCxJQUFJLEVBQUUsQ0FBQyxTQUE2QixLQUFLLENBQUMsRUFBRSxvQkFBOEIsRUFBd0QsRUFBRTtnQkFDbEksT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxDQUFRLENB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LENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQTJCLEVBQUUsdUJBQWdDLEtBQUs7UUFDdkUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQTJCLEVBQUUsdUJBQWdDLEtBQUs7UUFDdEUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUNqRSxDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gaW1wb3J0XG5pbXBvcnQgeyBMb2csIExldmVsIH0gZnJvbSAnbmcyLWxvZ2dlci9icm93c2VyJztcbi8vIGNvbnN0IGxvZyA9IExvZy5jcmVhdGUoJ3Jlc3QuY2xhc3MnLCBMZXZlbC5fX05PVEhJTkcpXG4vLyBsb2NhbFxuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgZ2V0UmVzdFBhcmFtcywgZ2V0UGFyYW1zVXJsIH0gZnJvbSAnLi9wYXJhbXMnO1xuaW1wb3J0IHsgUmVzdFJlcXVlc3QgfSBmcm9tICcuL3Jlc3QtcmVxdWVzdCc7XG5pbXBvcnQgeyBSZXN0SGVhZGVycyB9IGZyb20gJy4vcmVzdC1oZWFkZXJzJztcbmltcG9ydCB7IENPTlRFTlRfVFlQRSB9IGZyb20gJy4vY29udGVudC10eXBlJztcbi8vI2VuZHJlZ2lvblxuXG5leHBvcnQgY2xhc3MgUmVzdDxULCBUQSA9IFRbXT4gaW1wbGVtZW50cyBNb2RlbHMuRm5NZXRob2RzSHR0cFdpdGhNb2NrPFQsIFRBPiB7XG5cbiAgcHJpdmF0ZSBtb2NrSHR0cDogTW9kZWxzLk1vY2tIdHRwO1xuICBtb2NrKG1vY2s6IE1vZGVscy5Nb2NrSHR0cCk6IE1vZGVscy5Gbk1ldGhvZHNIdHRwPFQsIFRBPiB7XG4gICAgaWYgKCh0eXBlb2YgbW9jayA9PT0gJ2Z1bmN0aW9uJykgfHwgKHR5cGVvZiBtb2NrID09PSAnb2JqZWN0JykpIHtcbiAgICAgIHRoaXMubW9ja0h0dHAgPSBtb2NrO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBgW25nMi1yZXN0XVxuICAgICAgLm1vZGVsKC4uLilcbiAgICAgIC5tb2NrKCA8IEJBRCBNT0NLIERBVEEgPiApXG4gICAgICAuLi5cbiAgICAgIGBcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuXG5cbiAgLy8jcmVnaW9uICBwcml2YXRlIGZpZWxkc1xuICBwcml2YXRlIF9fbWV0YV9lbmRwb2ludDogc3RyaW5nO1xuICBwcml2YXRlIF9lbmRwb2ludFJlc3Q6IHN0cmluZztcbiAgcHJpdmF0ZSBnZXQgZW5kcG9pbnQoKSB7XG4gICAgbGV0IGUgPSB0aGlzLl9fbWV0YV9lbmRwb2ludDtcbiAgICBpZiAodGhpcy5yZXN0UXVlcnlQYXJhbXMgIT09IHZvaWQgMCAmJiB0aGlzLl9lbmRwb2ludFJlc3QgIT09IHZvaWQgMFxuICAgICAgJiYgdHlwZW9mIHRoaXMuX2VuZHBvaW50UmVzdCA9PT0gJ3N0cmluZycgJiYgdGhpcy5fZW5kcG9pbnRSZXN0LnRyaW0oKSAhPT0gJycpIGUgPSB0aGlzLl9lbmRwb2ludFJlc3Q7XG4gICAgcmV0dXJuIGU7XG4gIH1cbiAgcHJpdmF0ZSByZXN0UXVlcnlQYXJhbXM6IE9iamVjdDtcbiAgcHVibGljIHNldCBfX3Jlc3RfZW5kcG9pbnQoZW5kcG9pbnQpIHtcbiAgICB0aGlzLl9lbmRwb2ludFJlc3QgPSBlbmRwb2ludDtcbiAgICBpZiAoZW5kcG9pbnQgPT09IHZvaWQgMCkge1xuICAgICAgdGhpcy5yZXN0UXVlcnlQYXJhbXMgPSB2b2lkIDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzdFF1ZXJ5UGFyYW1zID0gZ2V0UmVzdFBhcmFtcyhlbmRwb2ludCwgdGhpcy5fX21ldGFfZW5kcG9pbnQpO1xuICAgIH1cblxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdFVybChwYXJhbXM6IGFueSwgZG9Ob3RTZXJpYWxpemVQYXJhbXM6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHJldHVybiBgJHt0aGlzLmVuZHBvaW50fSR7Z2V0UGFyYW1zVXJsKHBhcmFtcywgZG9Ob3RTZXJpYWxpemVQYXJhbXMpfWA7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gIGNvbnN0cnVjdG9yXG4gIHByaXZhdGUgX2hlYWRlcnMgPSBSZXN0SGVhZGVycy5mcm9tKENPTlRFTlRfVFlQRS5BUFBMSUNBVElPTl9KU09OKTtcbiAgZ2V0IGhlYWRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2hlYWRlcnM7XG4gIH1cbiAgY29uc3RydWN0b3IoXG4gICAgZW5kcG9pbnQ6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlcXVlc3Q6IFJlc3RSZXF1ZXN0LFxuICAgIHByaXZhdGUgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIHByaXZhdGUgY3VzdG9tQ29udGVudFR5cGU6IFJlc3RIZWFkZXJzLFxuICApIHtcbiAgICB0aGlzLl9fbWV0YV9lbmRwb2ludCA9IGVuZHBvaW50O1xuXG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uICByZXFcblxuICBwcml2YXRlIHJlcShtZXRob2Q6IE1vZGVscy5IdHRwTWV0aG9kLFxuICAgIGl0ZW06IFQsXG4gICAgcGFyYW1zPzogTW9kZWxzLlVybFBhcmFtc1tdLFxuICAgIGRvTm90U2VyaWFsaXplUGFyYW1zOiBib29sZWFuID0gZmFsc2UsXG4gICAgaXNBcnJheTogYm9vbGVhbiA9IGZhbHNlXG4gICkge1xuXG4gICAgY29uc3QgbW9kZWxVcmwgPSB0aGlzLmNyZWF0VXJsKHBhcmFtcywgZG9Ob3RTZXJpYWxpemVQYXJhbXMpO1xuICAgIGNvbnN0IGJvZHkgPSBpdGVtID8gSlNPTi5zdHJpbmdpZnkoaXRlbSkgOiB2b2lkIDA7XG4gICAgLy8gY29uc29sZS5sb2coJ3RoaXMuY3VzdG9tQ29udGVudFR5cGUnLCB0aGlzLmN1c3RvbUNvbnRlbnRUeXBlKVxuICAgIGlmICh0aGlzLmN1c3RvbUNvbnRlbnRUeXBlKSB7XG4gICAgICBjb25zdCBjdXN0b21IZWFkZXJLZXlzID0gdGhpcy5jdXN0b21Db250ZW50VHlwZS5rZXlzKCk7XG4gICAgICBjb25zdCBjdXJyZW50SGVhZGVyS2V5cyA9IHRoaXMuX2hlYWRlcnMua2V5cygpO1xuICAgICAgY3VycmVudEhlYWRlcktleXNcbiAgICAgICAgLmZpbHRlcihrZXkgPT4gIWN1c3RvbUhlYWRlcktleXMuaW5jbHVkZXMoa2V5KSlcbiAgICAgICAgLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICB0aGlzLmN1c3RvbUNvbnRlbnRUeXBlLnNldChrZXksIHRoaXMuX2hlYWRlcnMuZ2V0KGtleSkpO1xuICAgICAgICB9KTtcbiAgICAgIHRoaXMuX2hlYWRlcnMgPSB0aGlzLmN1c3RvbUNvbnRlbnRUeXBlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9oZWFkZXJzID0gUmVzdEhlYWRlcnMuZnJvbShDT05URU5UX1RZUEUuQVBQTElDQVRJT05fSlNPTik7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5yZXF1ZXN0W21ldGhvZC50b0xvd2VyQ2FzZSgpXShcbiAgICAgIG1vZGVsVXJsLFxuICAgICAgYm9keSxcbiAgICAgIHRoaXMuaGVhZGVycyxcbiAgICAgIHRoaXMubWV0YSxcbiAgICAgIGlzQXJyYXksXG4gICAgICB0aGlzLm1vY2tIdHRwXG4gICAgKTtcblxuICAgIHRoaXMubW9ja0h0dHAgPSB2b2lkIDA7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gaHR0cCBtZXRob2RzXG5cbiAgLy8jcmVnaW9uIHJlcGxheVxuICByZXBsYXkobWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCkge1xuICAgIHRoaXMucmVxdWVzdC5yZXBsYXkobWV0aG9kLCB0aGlzLm1ldGEpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIGFycmF5ID0ge1xuICAgIGdldDogKHBhcmFtczogTW9kZWxzLlVybFBhcmFtc1tdID0gdm9pZCAwLCBkb05vdFNlcmlhbGl6ZVBhcmFtcz86IGJvb2xlYW4pOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8TW9kZWxzLkh0dHBSZXNwb25zZTxUQT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnJlcSgnZ2V0Jywgdm9pZCAwLCBwYXJhbXMsIGRvTm90U2VyaWFsaXplUGFyYW1zLCB0cnVlKSBhcyBhbnlcbiAgICB9LFxuICAgIGhlYWQ6IChwYXJhbXM6IE1vZGVscy5VcmxQYXJhbXNbXSA9IHZvaWQgMCwgZG9Ob3RTZXJpYWxpemVQYXJhbXM/OiBib29sZWFuKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PE1vZGVscy5IdHRwUmVzcG9uc2U8VEE+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5yZXEoJ2hlYWQnLCB2b2lkIDAsIHBhcmFtcywgZG9Ob3RTZXJpYWxpemVQYXJhbXMsIHRydWUpIGFzIGFueVxuICAgIH0sXG4gICAgcG9zdDogKGl0ZW06IFRBLCBwYXJhbXM/OiBNb2RlbHMuVXJsUGFyYW1zW10sIGRvTm90U2VyaWFsaXplUGFyYW1zPzogYm9vbGVhbik6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxNb2RlbHMuSHR0cFJlc3BvbnNlPFRBPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMucmVxKCdwb3N0JywgaXRlbSBhcyBhbnksIHBhcmFtcywgZG9Ob3RTZXJpYWxpemVQYXJhbXMsIHRydWUpIGFzIGFueTtcbiAgICB9LFxuICAgIHB1dDogKGl0ZW06IFRBLCBwYXJhbXM/OiBNb2RlbHMuVXJsUGFyYW1zW10sIGRvTm90U2VyaWFsaXplUGFyYW1zPzogYm9vbGVhbik6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxNb2RlbHMuSHR0cFJlc3BvbnNlPFRBPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMucmVxKCdwdXQnLCBpdGVtIGFzIGFueSwgcGFyYW1zLCBkb05vdFNlcmlhbGl6ZVBhcmFtcywgdHJ1ZSkgYXMgYW55O1xuICAgIH0sXG4gICAgcGF0Y2g6IChpdGVtOiBUQSwgcGFyYW1zPzogTW9kZWxzLlVybFBhcmFtc1tdLCBkb05vdFNlcmlhbGl6ZVBhcmFtcz86IGJvb2xlYW4pOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8TW9kZWxzLkh0dHBSZXNwb25zZTxUQT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnJlcSgncGF0Y2gnLCBpdGVtIGFzIGFueSwgcGFyYW1zLCBkb05vdFNlcmlhbGl6ZVBhcmFtcywgdHJ1ZSkgYXMgYW55O1xuICAgIH0sXG4gICAgZGVsZXRlOiAocGFyYW1zPzogTW9kZWxzLlVybFBhcmFtc1tdLCBkb05vdFNlcmlhbGl6ZVBhcmFtcz86IGJvb2xlYW4pOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8TW9kZWxzLkh0dHBSZXNwb25zZTxUQT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnJlcSgnZGVsZXRlJywgdm9pZCAwLCBwYXJhbXMsIGRvTm90U2VyaWFsaXplUGFyYW1zLCB0cnVlKSBhcyBhbnk7XG4gICAgfSxcbiAgICBqc29ucDogKHBhcmFtcz86IE1vZGVscy5VcmxQYXJhbXNbXSwgZG9Ob3RTZXJpYWxpemVQYXJhbXM/OiBib29sZWFuKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PE1vZGVscy5IdHRwUmVzcG9uc2U8VEE+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5yZXEoJ2pzb25wJywgdm9pZCAwLCBwYXJhbXMsIGRvTm90U2VyaWFsaXplUGFyYW1zLCB0cnVlKSBhcyBhbnk7XG4gICAgfVxuICB9XG5cbiAgZ2V0KHBhcmFtcz86IE1vZGVscy5VcmxQYXJhbXNbXSwgZG9Ob3RTZXJpYWxpemVQYXJhbXM6IGJvb2xlYW4gPSBmYWxzZSk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxNb2RlbHMuSHR0cFJlc3BvbnNlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxKCdnZXQnLCB2b2lkIDAsIHBhcmFtcywgZG9Ob3RTZXJpYWxpemVQYXJhbXMpIGFzIGFueTtcbiAgfVxuXG4gIGhlYWQocGFyYW1zPzogTW9kZWxzLlVybFBhcmFtc1tdLCBkb05vdFNlcmlhbGl6ZVBhcmFtczogYm9vbGVhbiA9IGZhbHNlKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PE1vZGVscy5IdHRwUmVzcG9uc2U8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5yZXEoJ2hlYWQnLCB2b2lkIDAsIHBhcmFtcywgZG9Ob3RTZXJpYWxpemVQYXJhbXMpIGFzIGFueTtcbiAgfVxuXG4gIHBvc3QoaXRlbTogVCwgcGFyYW1zPzogTW9kZWxzLlVybFBhcmFtc1tdLCBkb05vdFNlcmlhbGl6ZVBhcmFtczogYm9vbGVhbiA9IGZhbHNlKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PE1vZGVscy5IdHRwUmVzcG9uc2U8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5yZXEoJ3Bvc3QnLCBpdGVtLCBwYXJhbXMsIGRvTm90U2VyaWFsaXplUGFyYW1zKTtcbiAgfVxuXG4gIHB1dChpdGVtOiBULCBwYXJhbXM/OiBNb2RlbHMuVXJsUGFyYW1zW10sIGRvTm90U2VyaWFsaXplUGFyYW1zOiBib29sZWFuID0gZmFsc2UpOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8TW9kZWxzLkh0dHBSZXNwb25zZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLnJlcSgncHV0JywgaXRlbSwgcGFyYW1zLCBkb05vdFNlcmlhbGl6ZVBhcmFtcyk7XG4gIH1cblxuICBwYXRjaChpdGVtOiBULCBwYXJhbXM/OiBNb2RlbHMuVXJsUGFyYW1zW10sIGRvTm90U2VyaWFsaXplUGFyYW1zOiBib29sZWFuID0gZmFsc2UpOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8TW9kZWxzLkh0dHBSZXNwb25zZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLnJlcSgncGF0Y2gnLCBpdGVtLCBwYXJhbXMsIGRvTm90U2VyaWFsaXplUGFyYW1zKTtcbiAgfVxuXG4gIGRlbGV0ZShwYXJhbXM/OiBNb2RlbHMuVXJsUGFyYW1zW10sIGRvTm90U2VyaWFsaXplUGFyYW1zOiBib29sZWFuID0gZmFsc2UpOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8TW9kZWxzLkh0dHBSZXNwb25zZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLnJlcSgnZGVsZXRlJywgdm9pZCAwLCBwYXJhbXMsIGRvTm90U2VyaWFsaXplUGFyYW1zKTtcbiAgfVxuXG4gIGpzb25wKHBhcmFtcz86IE1vZGVscy5VcmxQYXJhbXNbXSwgZG9Ob3RTZXJpYWxpemVQYXJhbXM6IGJvb2xlYW4gPSBmYWxzZSk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxNb2RlbHMuSHR0cFJlc3BvbnNlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxKCdqc29ucCcsIHZvaWQgMCwgcGFyYW1zLCBkb05vdFNlcmlhbGl6ZVBhcmFtcyk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbn1cbiJdfQ==
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvbmcyLXJlc3QvcHJvamVjdHMvbmcyLXJlc3Qvc3JjL2xpYi9yZXN0LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsWUFBWTtBQUVaLE1BQU0sT0FBTyxJQUFJO0lBaURmLFlBQ0UsUUFBZ0IsRUFDUixPQUFvQixFQUNwQixJQUF3QixFQUN4QixpQkFBOEI7UUFGOUIsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQUNwQixTQUFJLEdBQUosSUFBSSxDQUFvQjtRQUN4QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWE7UUFYeEMsWUFBWTtRQUVaLHNCQUFzQjtRQUNkLGFBQVEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBNERuRSxZQUFZO1FBRVosVUFBSyxHQUFHO1lBQ04sR0FBRyxFQUFFLENBQUMsU0FBNkIsS0FBSyxDQUFDLEVBQUUsb0JBQThCLEVBQXdELEVBQUU7Z0JBQ2pJLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixFQUFFLElBQUksQ0FBUSxDQUFBO1lBQzNFLENBQUM7WUFDRCxJQUFJLEVBQUUsQ0FBQyxTQUE2QixLQUFLLENBQUMsRUFBRSxvQkFBOEIsRUFBd0QsRUFBRTtnQkFDbEksT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxDQUFRLENB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LENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQTJCLEVBQUUsdUJBQWdDLEtBQUs7UUFDdkUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQTJCLEVBQUUsdUJBQWdDLEtBQUs7UUFDdEUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUNqRSxDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gaW1wb3J0XG5pbXBvcnQgeyBMb2csIExldmVsIH0gZnJvbSAnbmcyLWxvZ2dlci9icm93c2VyJztcbi8vIGNvbnN0IGxvZyA9IExvZy5jcmVhdGUoJ3Jlc3QuY2xhc3MnLCBMZXZlbC5fX05PVEhJTkcpXG4vLyBsb2NhbFxuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgZ2V0UmVzdFBhcmFtcywgZ2V0UGFyYW1zVXJsIH0gZnJvbSAnLi9wYXJhbXMnO1xuaW1wb3J0IHsgUmVzdFJlcXVlc3QgfSBmcm9tICcuL3Jlc3QtcmVxdWVzdCc7XG5pbXBvcnQgeyBSZXN0SGVhZGVycyB9IGZyb20gJy4vcmVzdC1oZWFkZXJzJztcbmltcG9ydCB7IENPTlRFTlRfVFlQRSB9IGZyb20gJy4vY29udGVudC10eXBlJztcbi8vI2VuZHJlZ2lvblxuXG5leHBvcnQgY2xhc3MgUmVzdDxULCBUQSA9IFRbXT4gaW1wbGVtZW50cyBNb2RlbHMuRm5NZXRob2RzSHR0cFdpdGhNb2NrPFQsIFRBPiB7XG5cbiAgcHJpdmF0ZSBtb2NrSHR0cDogTW9kZWxzLk1vY2tIdHRwO1xuICBtb2NrKG1vY2s6IE1vZGVscy5Nb2NrSHR0cCk6IE1vZGVscy5Gbk1ldGhvZHNIdHRwPFQsIFRBPiB7XG4gICAgaWYgKCh0eXBlb2YgbW9jayA9PT0gJ2Z1bmN0aW9uJykgfHwgKHR5cGVvZiBtb2NrID09PSAnb2JqZWN0JykpIHtcbiAgICAgIHRoaXMubW9ja0h0dHAgPSBtb2NrO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBgW25nMi1yZXN0XVxuICAgICAgLm1vZGVsKC4uLilcbiAgICAgIC5tb2NrKCA8IEJBRCBNT0NLIERBVEEgPiApXG4gICAgICAuLi5cbiAgICAgIGBcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuXG5cbiAgLy8jcmVnaW9uICBwcml2YXRlIGZpZWxkc1xuICBwcml2YXRlIF9fbWV0YV9lbmRwb2ludDogc3RyaW5nO1xuICBwcml2YXRlIF9lbmRwb2ludFJlc3Q6IHN0cmluZztcbiAgcHJpdmF0ZSBnZXQgZW5kcG9pbnQoKSB7XG4gICAgbGV0IGUgPSB0aGlzLl9fbWV0YV9lbmRwb2ludDtcbiAgICBpZiAodGhpcy5yZXN0UXVlcnlQYXJhbXMgIT09IHZvaWQgMCAmJiB0aGlzLl9lbmRwb2ludFJlc3QgIT09IHZvaWQgMFxuICAgICAgJiYgdHlwZW9mIHRoaXMuX2VuZHBvaW50UmVzdCA9PT0gJ3N0cmluZycgJiYgdGhpcy5fZW5kcG9pbnRSZXN0LnRyaW0oKSAhPT0gJycpIGUgPSB0aGlzLl9lbmRwb2ludFJlc3Q7XG4gICAgcmV0dXJuIGU7XG4gIH1cbiAgcHJpdmF0ZSByZXN0UXVlcnlQYXJhbXM6IE9iamVjdDtcbiAgcHVibGljIHNldCBfX3Jlc3RfZW5kcG9pbnQoZW5kcG9pbnQpIHtcbiAgICB0aGlzLl9lbmRwb2ludFJlc3QgPSBlbmRwb2ludDtcbiAgICBpZiAoZW5kcG9pbnQgPT09IHZvaWQgMCkge1xuICAgICAgdGhpcy5yZXN0UXVlcnlQYXJhbXMgPSB2b2lkIDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzdFF1ZXJ5UGFyYW1zID0gZ2V0UmVzdFBhcmFtcyhlbmRwb2ludCwgdGhpcy5fX21ldGFfZW5kcG9pbnQpO1xuICAgIH1cblxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdFVybChwYXJhbXM6IGFueSwgZG9Ob3RTZXJpYWxpemVQYXJhbXM6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHJldHVybiBgJHt0aGlzLmVuZHBvaW50fSR7Z2V0UGFyYW1zVXJsKHBhcmFtcywgZG9Ob3RTZXJpYWxpemVQYXJhbXMpfWA7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gIGNvbnN0cnVjdG9yXG4gIHByaXZhdGUgX2hlYWRlcnMgPSBSZXN0SGVhZGVycy5mcm9tKENPTlRFTlRfVFlQRS5BUFBMSUNBVElPTl9KU09OKTtcbiAgZ2V0IGhlYWRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2hlYWRlcnM7XG4gIH1cbiAgY29uc3RydWN0b3IoXG4gICAgZW5kcG9pbnQ6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlcXVlc3Q6IFJlc3RSZXF1ZXN0LFxuICAgIHByaXZhdGUgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIHByaXZhdGUgY3VzdG9tQ29udGVudFR5cGU6IFJlc3RIZWFkZXJzLFxuICApIHtcbiAgICB0aGlzLl9fbWV0YV9lbmRwb2ludCA9IGVuZHBvaW50O1xuXG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uICByZXFcblxuICBwcml2YXRlIHJlcShtZXRob2Q6IE1vZGVscy5IdHRwTWV0aG9kLFxuICAgIGl0ZW06IFQsXG4gICAgcGFyYW1zPzogTW9kZWxzLlVybFBhcmFtc1tdLFxuICAgIGRvTm90U2VyaWFsaXplUGFyYW1zOiBib29sZWFuID0gZmFsc2UsXG4gICAgaXNBcnJheTogYm9vbGVhbiA9IGZhbHNlXG4gICkge1xuXG4gICAgY29uc3QgbW9kZWxVcmwgPSB0aGlzLmNyZWF0VXJsKHBhcmFtcywgZG9Ob3RTZXJpYWxpemVQYXJhbXMpO1xuICAgIGNvbnN0IGJvZHkgPSBpdGVtID8gSlNPTi5zdHJpbmdpZnkoaXRlbSkgOiB2b2lkIDA7XG4gICAgLy8gY29uc29sZS5sb2coJ3RoaXMuY3VzdG9tQ29udGVudFR5cGUnLCB0aGlzLmN1c3RvbUNvbnRlbnRUeXBlKVxuICAgIGlmICh0aGlzLmN1c3RvbUNvbnRlbnRUeXBlKSB7XG4gICAgICBjb25zdCBjdXN0b21IZWFkZXJLZXlzID0gdGhpcy5jdXN0b21Db250ZW50VHlwZS5rZXlzKCk7XG4gICAgICBjb25zdCBjdXJyZW50SGVhZGVyS2V5cyA9IHRoaXMuX2hlYWRlcnMua2V5cygpO1xuICAgICAgY3VycmVudEhlYWRlcktleXNcbiAgICAgICAgLmZpbHRlcihrZXkgPT4gIWN1c3RvbUhlYWRlcktleXMuaW5jbHVkZXMoa2V5KSlcbiAgICAgICAgLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICB0aGlzLmN1c3RvbUNvbnRlbnRUeXBlLnNldChrZXksIHRoaXMuX2hlYWRlcnMuZ2V0KGtleSkpO1xuICAgICAgICB9KTtcbiAgICAgIHRoaXMuX2hlYWRlcnMgPSB0aGlzLmN1c3RvbUNvbnRlbnRUeXBlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9oZWFkZXJzID0gUmVzdEhlYWRlcnMuZnJvbShDT05URU5UX1RZUEUuQVBQTElDQVRJT05fSlNPTik7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5yZXF1ZXN0W21ldGhvZC50b0xvd2VyQ2FzZSgpXShcbiAgICAgIG1vZGVsVXJsLFxuICAgICAgYm9keSxcbiAgICAgIHRoaXMuaGVhZGVycyxcbiAgICAgIHRoaXMubWV0YSxcbiAgICAgIGlzQXJyYXksXG4gICAgICB0aGlzLm1vY2tIdHRwXG4gICAgKTtcblxuICAgIHRoaXMubW9ja0h0dHAgPSB2b2lkIDA7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gaHR0cCBtZXRob2RzXG5cbiAgLy8jcmVnaW9uIHJlcGxheVxuICByZXBsYXkobWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCkge1xuICAgIHRoaXMucmVxdWVzdC5yZXBsYXkobWV0aG9kLCB0aGlzLm1ldGEpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIGFycmF5ID0ge1xuICAgIGdldDogKHBhcmFtczogTW9kZWxzLlVybFBhcmFtc1tdID0gdm9pZCAwLCBkb05vdFNlcmlhbGl6ZVBhcmFtcz86IGJvb2xlYW4pOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8TW9kZWxzLkh0dHBSZXNwb25zZTxUQT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnJlcSgnZ2V0Jywgdm9pZCAwLCBwYXJhbXMsIGRvTm90U2VyaWFsaXplUGFyYW1zLCB0cnVlKSBhcyBhbnlcbiAgICB9LFxuICAgIGhlYWQ6IChwYXJhbXM6IE1vZGVscy5VcmxQYXJhbXNbXSA9IHZvaWQgMCwgZG9Ob3RTZXJpYWxpemVQYXJhbXM/OiBib29sZWFuKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PE1vZGVscy5IdHRwUmVzcG9uc2U8VEE+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5yZXEoJ2hlYWQnLCB2b2lkIDAsIHBhcmFtcywgZG9Ob3RTZXJpYWxpemVQYXJhbXMsIHRydWUpIGFzIGFueVxuICAgIH0sXG4gICAgcG9zdDogKGl0ZW06IFRBLCBwYXJhbXM/OiBNb2RlbHMuVXJsUGFyYW1zW10sIGRvTm90U2VyaWFsaXplUGFyYW1zPzogYm9vbGVhbik6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxNb2RlbHMuSHR0cFJlc3BvbnNlPFRBPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMucmVxKCdwb3N0JywgaXRlbSBhcyBhbnksIHBhcmFtcywgZG9Ob3RTZXJpYWxpemVQYXJhbXMsIHRydWUpIGFzIGFueTtcbiAgICB9LFxuICAgIHB1dDogKGl0ZW06IFRBLCBwYXJhbXM/OiBNb2RlbHMuVXJsUGFyYW1zW10sIGRvTm90U2VyaWFsaXplUGFyYW1zPzogYm9vbGVhbik6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxNb2RlbHMuSHR0cFJlc3BvbnNlPFRBPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMucmVxKCdwdXQnLCBpdGVtIGFzIGFueSwgcGFyYW1zLCBkb05vdFNlcmlhbGl6ZVBhcmFtcywgdHJ1ZSkgYXMgYW55O1xuICAgIH0sXG4gICAgcGF0Y2g6IChpdGVtOiBUQSwgcGFyYW1zPzogTW9kZWxzLlVybFBhcmFtc1tdLCBkb05vdFNlcmlhbGl6ZVBhcmFtcz86IGJvb2xlYW4pOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8TW9kZWxzLkh0dHBSZXNwb25zZTxUQT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnJlcSgncGF0Y2gnLCBpdGVtIGFzIGFueSwgcGFyYW1zLCBkb05vdFNlcmlhbGl6ZVBhcmFtcywgdHJ1ZSkgYXMgYW55O1xuICAgIH0sXG4gICAgZGVsZXRlOiAocGFyYW1zPzogTW9kZWxzLlVybFBhcmFtc1tdLCBkb05vdFNlcmlhbGl6ZVBhcmFtcz86IGJvb2xlYW4pOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8TW9kZWxzLkh0dHBSZXNwb25zZTxUQT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnJlcSgnZGVsZXRlJywgdm9pZCAwLCBwYXJhbXMsIGRvTm90U2VyaWFsaXplUGFyYW1zLCB0cnVlKSBhcyBhbnk7XG4gICAgfSxcbiAgICBqc29ucDogKHBhcmFtcz86IE1vZGVscy5VcmxQYXJhbXNbXSwgZG9Ob3RTZXJpYWxpemVQYXJhbXM/OiBib29sZWFuKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PE1vZGVscy5IdHRwUmVzcG9uc2U8VEE+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5yZXEoJ2pzb25wJywgdm9pZCAwLCBwYXJhbXMsIGRvTm90U2VyaWFsaXplUGFyYW1zLCB0cnVlKSBhcyBhbnk7XG4gICAgfVxuICB9XG5cbiAgZ2V0KHBhcmFtcz86IE1vZGVscy5VcmxQYXJhbXNbXSwgZG9Ob3RTZXJpYWxpemVQYXJhbXM6IGJvb2xlYW4gPSBmYWxzZSk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxNb2RlbHMuSHR0cFJlc3BvbnNlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxKCdnZXQnLCB2b2lkIDAsIHBhcmFtcywgZG9Ob3RTZXJpYWxpemVQYXJhbXMpIGFzIGFueTtcbiAgfVxuXG4gIGhlYWQocGFyYW1zPzogTW9kZWxzLlVybFBhcmFtc1tdLCBkb05vdFNlcmlhbGl6ZVBhcmFtczogYm9vbGVhbiA9IGZhbHNlKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PE1vZGVscy5IdHRwUmVzcG9uc2U8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5yZXEoJ2hlYWQnLCB2b2lkIDAsIHBhcmFtcywgZG9Ob3RTZXJpYWxpemVQYXJhbXMpIGFzIGFueTtcbiAgfVxuXG4gIHBvc3QoaXRlbTogVCwgcGFyYW1zPzogTW9kZWxzLlVybFBhcmFtc1tdLCBkb05vdFNlcmlhbGl6ZVBhcmFtczogYm9vbGVhbiA9IGZhbHNlKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PE1vZGVscy5IdHRwUmVzcG9uc2U8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5yZXEoJ3Bvc3QnLCBpdGVtLCBwYXJhbXMsIGRvTm90U2VyaWFsaXplUGFyYW1zKTtcbiAgfVxuXG4gIHB1dChpdGVtOiBULCBwYXJhbXM/OiBNb2RlbHMuVXJsUGFyYW1zW10sIGRvTm90U2VyaWFsaXplUGFyYW1zOiBib29sZWFuID0gZmFsc2UpOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8TW9kZWxzLkh0dHBSZXNwb25zZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLnJlcSgncHV0JywgaXRlbSwgcGFyYW1zLCBkb05vdFNlcmlhbGl6ZVBhcmFtcyk7XG4gIH1cblxuICBwYXRjaChpdGVtOiBULCBwYXJhbXM/OiBNb2RlbHMuVXJsUGFyYW1zW10sIGRvTm90U2VyaWFsaXplUGFyYW1zOiBib29sZWFuID0gZmFsc2UpOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8TW9kZWxzLkh0dHBSZXNwb25zZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLnJlcSgncGF0Y2gnLCBpdGVtLCBwYXJhbXMsIGRvTm90U2VyaWFsaXplUGFyYW1zKTtcbiAgfVxuXG4gIGRlbGV0ZShwYXJhbXM/OiBNb2RlbHMuVXJsUGFyYW1zW10sIGRvTm90U2VyaWFsaXplUGFyYW1zOiBib29sZWFuID0gZmFsc2UpOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8TW9kZWxzLkh0dHBSZXNwb25zZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLnJlcSgnZGVsZXRlJywgdm9pZCAwLCBwYXJhbXMsIGRvTm90U2VyaWFsaXplUGFyYW1zKTtcbiAgfVxuXG4gIGpzb25wKHBhcmFtcz86IE1vZGVscy5VcmxQYXJhbXNbXSwgZG9Ob3RTZXJpYWxpemVQYXJhbXM6IGJvb2xlYW4gPSBmYWxzZSk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxNb2RlbHMuSHR0cFJlc3BvbnNlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxKCdqc29ucCcsIHZvaWQgMCwgcGFyYW1zLCBkb05vdFNlcmlhbGl6ZVBhcmFtcyk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbn0iXX0=