@csmart/ngc-smart-core 1.13.11 → 1.13.13

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.
@@ -353,10 +353,12 @@ export class SmartAuthService {
353
353
  return this.query({
354
354
  query: this.findStaffQuery,
355
355
  variables: {
356
- where: {
357
- userName: userName,
358
- activeFlag: true,
359
- },
356
+ input: {
357
+ where: {
358
+ userName: userName,
359
+ activeFlag: true,
360
+ },
361
+ }
360
362
  },
361
363
  }).pipe(take(1), map((result) => {
362
364
  if (isDevMode) {
@@ -500,4 +502,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
500
502
  type: Inject,
501
503
  args: [SMART_DOMAIN_FORMAT]
502
504
  }] }]; } });
503
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3NtYXJ0L25nYy1zbWFydC1jb3JlL3NyYy9saWIvc21hcnQtYXV0aC9zbWFydC1hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR2xELE9BQU8sRUFHTCxzQkFBc0IsRUFDdEIsbUJBQW1CLEdBR3BCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7OztBQUcxRCwyQ0FBMkM7QUFLM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUkzQixZQUNVLElBQWdCLEVBQ2hCLFlBQXlCLEVBQ3pCLFVBQXNCLEVBQ1UsbUJBQW1CLEVBQ3RCLG9CQUE0QjtRQUp6RCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDVSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQUE7UUFDdEIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFRO0lBQ2hFLENBQUM7SUFFRyxhQUFhO1FBQ2xCLElBQUksU0FBUyxFQUFFO1lBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FB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IEluamVjdCwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgZnJvbSwgdGhyb3dFcnJvciwgbGFzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFrZSwgY2F0Y2hFcnJvcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBNc2FsU2VydmljZSB9IGZyb20gJ0BhenVyZS9tc2FsLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7XHJcbiAgTG9naW5TdGFmZixcclxuICBTZWxlY3RlZE9mZmVuZGVyLFxyXG4gIFNNQVJUX0RBVEFfU0VSVklDRV9VUkwsXHJcbiAgU01BUlRfRE9NQUlOX0ZPUk1BVCxcclxuICBSb2xlLFxyXG4gIFBlcm1pc3Npb24sXHJcbn0gZnJvbSAnLi4vc21hcnQtc3RvcmFnZS9zbWFydC1zdG9yYWdlLW1vZGVsJztcclxuaW1wb3J0IHsgWGRtU2VydmljZSB9IGZyb20gJy4uL3NtYXJ0LXN0b3JhZ2UveGRtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbWFydEFjY2Vzc0NvbnRyb2xDb25maWcgfSBmcm9tICcuL3NtYXJ0LWFjY2Vzcy1jb250cm9sLWNvbmZpZyc7XHJcbmltcG9ydCB7IG51bGxTYWZlSXNFcXVpdmFsZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXIvc3JjL291dHB1dC9vdXRwdXRfYXN0JztcclxuLy8gaW1wb3J0IHsgc3RyaW5naWZ5IH0gZnJvbSAncXVlcnlzdHJpbmcnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0QXV0aFNlcnZpY2Uge1xyXG4gIGxvZ2luU3RhZmY6IExvZ2luU3RhZmY7XHJcbiAgc2VsZWN0ZWRPZmZlbmRlcjogU2VsZWN0ZWRPZmZlbmRlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGF1dGhuU2VydmljZTogTXNhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHhkbVNlcnZpY2U6IFhkbVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KFNNQVJUX0RBVEFfU0VSVklDRV9VUkwpIHByaXZhdGUgc21hcnREYXRhU2VydmljZVVybCxcclxuICAgIEBJbmplY3QoU01BUlRfRE9NQUlOX0ZPUk1BVCkgcHJpdmF0ZSBzbWFydERvbWFpbkZvcm1hdFVybDogc3RyaW5nLFxyXG4gICkge31cclxuXHJcbiAgcHVibGljIGdldExvZ2luU3RhZmYoKTogT2JzZXJ2YWJsZTxMb2dpblN0YWZmPiB7XHJcbiAgICBpZiAoaXNEZXZNb2RlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdTbWFydEF1dGhTZXJ2aWNlIC0gZ2V0TG9naW5TdGFmZigpJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzRGV2TW9kZSAmJiB0aGlzLmxvZ2luU3RhZmYpIHtcclxuICAgICAgaWYgKHRoaXMubG9naW5TdGFmZi5zdGFmZklkKSB7XHJcbiAgICAgICAgaWYgKGlzRGV2TW9kZSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgICcjIyMjIyBnZXRMb2dpblN0YWZmKCk6IGdldCBpbnRlcm5hbCBpbnN0YW5jZSBpbiBzZXJ2aWNlJyxcclxuICAgICAgICAgICAgdGhpcy5sb2dpblN0YWZmLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMubG9naW5TdGFmZik7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5sb2dpblN0YWZmLnVzZXJOYW1lKSB7XHJcbiAgICAgICAgaWYgKGlzRGV2TW9kZSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgICcjIyMjIyBnZXRMb2dpblN0YWZmKCk6IGdldCB1c2luZyBwcmVzZXQgdXNlciBuYW1lJyxcclxuICAgICAgICAgICAgdGhpcy5sb2dpblN0YWZmLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RhZmYodGhpcy5sb2dpblN0YWZmLnVzZXJOYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZyb20odGhpcy54ZG1TZXJ2aWNlLmdldExvZ2luU3RhZmYoKSkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKChzdG9yZWRSZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAoc3RvcmVkUmVzdWx0ICYmIHN0b3JlZFJlc3VsdC5zdGFmZklkKSB7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICcjIyMjIyBnZXRMb2dpblN0YWZmKCk6IGdldCBmcm9tIHNlc3Npb24uJyxcclxuICAgICAgICAgICAgICBzdG9yZWRSZXN1bHQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmxvZ2luU3RhZmYgPSBzdG9yZWRSZXN1bHQ7XHJcbiAgICAgICAgICByZXR1cm4gb2Yoc3RvcmVkUmVzdWx0KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHN0b3JlZFJlc3VsdCAmJiBzdG9yZWRSZXN1bHQudXNlck5hbWUpIHtcclxuICAgICAgICAgIGlmIChpc0Rldk1vZGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgICAgJyMjIyMjIGdldExvZ2luU3RhZmYoKTogZ2V0IHVzaW5nIHByZXNldCB1c2VyIG5hbWUnLFxyXG4gICAgICAgICAgICAgIHRoaXMubG9naW5TdGFmZixcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0YWZmKHN0b3JlZFJlc3VsdC51c2VyTmFtZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHVzZXJOYW1lID0gdGhpcy51c2VyTmFtZTtcclxuICAgICAgICAgIGNvbnN0IHN0YWZmTmFtZSA9IHVzZXJOYW1lLnN1YnN0cmluZygwLCB1c2VyTmFtZS5pbmRleE9mKCdAJykpO1xyXG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgICAnIyMjIyMgbG9naW5Mb2dpblN0YWZmKCk6IGdldCB1c2luZyBsb2dpbiBzdGFmZiBuYW1lICcsXHJcbiAgICAgICAgICAgICAgc3RhZmZOYW1lLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RhZmYoc3RhZmZOYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldCB1c2VyTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuYXV0aG5TZXJ2aWNlLmluc3RhbmNlLmdldEFsbEFjY291bnRzKCkubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBhY2NvdW50ID0gdGhpcy5hdXRoblNlcnZpY2UuaW5zdGFuY2UuZ2V0QWxsQWNjb3VudHMoKVswXTtcclxuICAgICAgcmV0dXJuIGFjY291bnQudXNlcm5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUZWFtVXJsKGFwcDogc3RyaW5nLCBhZnRlckhhc2g6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5zbWFydERvbWFpbkZvcm1hdFVybC5yZXBsYWNlKCcke0FQUH0nLCBhcHApICsgYWZ0ZXJIYXNoO1xyXG4gIH1cclxuICBwcml2YXRlIGlzU2FtZUhvc3QodXJsLCBhcHApIHtcclxuICAgIHJldHVybiB0aGlzLnNtYXJ0RG9tYWluRm9ybWF0VXJsLnJlcGxhY2UoJyR7QVBQfScsIGFwcCkgPT09IHVybDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWRpcmVjdFRvVGVhbShsb2dpblN0YWZmOiBMb2dpblN0YWZmKSB7XHJcbiAgICBpZiAobG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgoKHJvbGUpID0+IHJvbGUucm9sZUlkID09PSAnRVVVU1BDJykgPiAtMSkge1xyXG4gICAgICBpZiAoIXRoaXMuaXNTYW1lSG9zdCh3aW5kb3cubG9jYXRpb24ub3JpZ2luLCAnaW52ZXN0aWdhdGlvbicpKSB7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLmdldFRlYW1VcmwoJ2ludmVzdGlnYXRpb24nLCAnL2Fzc2lnbm1lbnQnKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgbG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgoXHJcbiAgICAgICAgKHJvbGUpID0+IHJvbGUucm9sZUlkLnN1YnN0cmluZygwLCAzKSA9PT0gJ1JTQycsXHJcbiAgICAgICkgPiAtMVxyXG4gICAgKSB7XHJcbiAgICAgIGlmICghdGhpcy5pc1NhbWVIb3N0KHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4sICdyc2MnKSkge1xyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdGhpcy5nZXRUZWFtVXJsKCdyc2MnLCAnL29mZmVuZGVyLWxpc3QnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNldFNlbGVjdGVkT2ZmZW5kZXIoc2VsZWN0ZWRPZmZlbmRlcjogU2VsZWN0ZWRPZmZlbmRlcikge1xyXG4gICAgaWYgKCF0aGlzLmxvZ2luU3RhZmYpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzZWxlY3RlZE9mZmVuZGVyKSB7XHJcbiAgICAgIC8vIGlmICghc2VsZWN0ZWRPZmZlbmRlci5hc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkKSB7XHJcbiAgICAgIGNvbnN0IHJlbGF0aW9uID0gYXdhaXQgbGFzdFZhbHVlRnJvbShcclxuICAgICAgICB0aGlzLmdldFN0YWZmT2ZmZW5kZXJSZWxhdGlvbihcclxuICAgICAgICAgIHRoaXMubG9naW5TdGFmZi5zdGFmZklkLFxyXG4gICAgICAgICAgc2VsZWN0ZWRPZmZlbmRlci5vZmZlbmRlcklkLFxyXG4gICAgICAgICksXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChyZWxhdGlvbikge1xyXG4gICAgICAgIHNlbGVjdGVkT2ZmZW5kZXIuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZCA9IHJlbGF0aW9uO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNlbGVjdGVkT2ZmZW5kZXIuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZCA9ICdOT0FTU0lHTic7XHJcbiAgICAgIH1cclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgdGhpcy54ZG1TZXJ2aWNlLnNldFNlbGVjdGVkT2ZmZW5kZXIoc2VsZWN0ZWRPZmZlbmRlcik7XHJcbiAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIgPSBzZWxlY3RlZE9mZmVuZGVyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvZ291dCgpOiB2b2lkIHtcclxuICAgIHRoaXMueGRtU2VydmljZS5jbGVhckFsbCgpO1xyXG4gICAgdGhpcy5hdXRoblNlcnZpY2UubG9nb3V0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2V0UGVybWlzc2lvbihcclxuICAgIGFwcE1vZHVsZUlkOiBzdHJpbmcsXHJcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICApIHtcclxuICAgIGlmICghdGhpcy5sb2dpblN0YWZmKSB7XHJcbiAgICAgIHRoaXMubG9naW5TdGFmZiA9IGF3YWl0IHRoaXMueGRtU2VydmljZS5nZXRMb2dpblN0YWZmKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwZXJtaXNzaW9ucyA9IHRoaXMubG9naW5TdGFmZi5wZXJtaXNzaW9ucztcclxuICAgIGNvbnN0IHJlc291cmNlID1cclxuICAgICAgcm91dGUudXJsICYmIHJvdXRlLnVybC5sZW5ndGggPiAwID8gcm91dGUudXJsWzBdIS5wYXRoIDogJyc7XHJcblxyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkT2ZmZW5kZXIpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID0gYXdhaXQgdGhpcy54ZG1TZXJ2aWNlLmdldFNlbGVjdGVkT2ZmZW5kZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZE9mZmVuZGVyKSB7XHJcbiAgICAgIC8vIGlmICghdGhpcy5zZWxlY3RlZE9mZmVuZGVyLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQpIHtcclxuICAgICAgY29uc3QgcmVsYXRpb24gPSBhd2FpdCB0aGlzLmdldFN0YWZmT2ZmZW5kZXJSZWxhdGlvbihcclxuICAgICAgICB0aGlzLmxvZ2luU3RhZmYuc3RhZmZJZCxcclxuICAgICAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIub2ZmZW5kZXJJZCxcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgICAgaWYgKHJlbGF0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQgPSByZWxhdGlvbjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZCA9ICdOT0FTU0lHTic7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy54ZG1TZXJ2aWNlLnNldFNlbGVjdGVkT2ZmZW5kZXIodGhpcy5zZWxlY3RlZE9mZmVuZGVyKTtcclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQgPVxyXG4gICAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZDtcclxuXHJcbiAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tjbGFzc149XCJzYWMtXCJdJyk7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gL15zYWMtKFxcUyspLShcXFMrKSQvaTtcclxuXHJcbiAgICBBcnJheS5mcm9tKGVsZW1lbnRzKS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgIGxldCBoaWRlO1xyXG4gICAgICBsZXQgZGlzYWJsZTtcclxuICAgICAgZWxlbWVudC5jbGFzc0xpc3QuZm9yRWFjaCgoYykgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBjLm1hdGNoKHBhdHRlcm4pO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xyXG4gICAgICAgIGlmIChyZXN1bHRzICYmIHJlc3VsdHMubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgY29uc3Qgcm9sZUlkID0gcmVzdWx0c1sxXSA/IHJlc3VsdHNbMV0udG9VcHBlckNhc2UoKSA6IG51bGw7XHJcbiAgICAgICAgICBjb25zdCByaWdodCA9IHJlc3VsdHNbMl07XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhyZXN1bHRzWzBdKTtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHJlc3VsdHNbMV0pO1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2cocmVzdWx0c1syXSk7XHJcbiAgICAgICAgICBjb25zdCBwZXJtaXNzaW9uID0gcGVybWlzc2lvbnMuZmluZChmdW5jdGlvbiAocCkge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIHAuYXBwTW9kdWxlSWQgPT09IGFwcE1vZHVsZUlkICYmXHJcbiAgICAgICAgICAgICAgcC5yZXNvdXJjZSA9PT0gcmVzb3VyY2UgJiZcclxuICAgICAgICAgICAgICBwLnJvbGVJZCA9PT0gcm9sZUlkICYmXHJcbiAgICAgICAgICAgICAgcC5hc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkID09PSBhc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIC8qXHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnIyMjIyMgc2V0UGVybWlzc2lvbigpIHJlc291cmNlOiAnLCByZXNvdXJjZSk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnIyMjIyMgc2V0UGVybWlzc2lvbigpIGFwcE1vZHVsZUlkOiAnLCBhcHBNb2R1bGVJZCk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnIyMjIyMgc2V0UGVybWlzc2lvbigpIHJvbGVJZDogJywgcm9sZUlkKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAnIyMjIyMgc2V0UGVybWlzc2lvbigpIGFzc2lnbm1lbnQgcmVsYXRpb246ICcsXHJcbiAgICAgICAgICAgIGFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgKi9cclxuICAgICAgICAgIGNvbnNvbGUubG9nKCcjIyMjIyBNYXRjaGVkIHBlcm1pc3Npb246ICcsIHBlcm1pc3Npb24pO1xyXG5cclxuICAgICAgICAgIGlmIChwZXJtaXNzaW9uKSB7XHJcbiAgICAgICAgICAgIGlmIChyaWdodCA9PT0gJ3JlYWQnKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFwZXJtaXNzaW9uLnJlYWRGbGFnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaGlkZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgICAgaGlkZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGhpZGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgKHJpZ2h0ID09PSAnY3JlYXRlJyAmJiAhcGVybWlzc2lvbi5jcmVhdGVGbGFnKSB8fFxyXG4gICAgICAgICAgICAgIChyaWdodCA9PT0gJ3VwZGF0ZScgJiYgIXBlcm1pc3Npb24udXBkYXRlRmxhZykgfHxcclxuICAgICAgICAgICAgICAocmlnaHQgPT09ICdkZWxldGUnICYmICFwZXJtaXNzaW9uLmRlbGV0ZUZsYWcpIHx8XHJcbiAgICAgICAgICAgICAgKHJpZ2h0ID09PSAnYXNzaWduJyAmJiAhcGVybWlzc2lvbi5hc3NpZ25GbGFnKSB8fFxyXG4gICAgICAgICAgICAgIChyaWdodCA9PT0gJ2Nsb3NlJyAmJiAhcGVybWlzc2lvbi5jbG9zZUZsYWcpIHx8XHJcbiAgICAgICAgICAgICAgKHJpZ2h0ID09PSAnZXhwdW5nZScgJiYgIXBlcm1pc3Npb24uZXhwdW5nZUZsYWcpIHx8XHJcbiAgICAgICAgICAgICAgKHJpZ2h0ID09PSAncmVvcGVuJyAmJiAhcGVybWlzc2lvbi5yZW9wZW5GbGFnKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBpZiAoZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0JVVFRPTicpIHtcclxuICAgICAgICAgICAgICAgIGlmIChoaWRlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgICBoaWRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGRpc2FibGUgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGRpc2FibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0JVVFRPTicpIHtcclxuICAgICAgICAgICAgICAgIGhpZGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZGlzYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHJpZ2h0ID09PSAncmVhZCcpIHtcclxuICAgICAgICAgICAgICBpZiAoaGlkZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIGhpZGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50Lm5vZGVOYW1lID09PSAnQlVUVE9OJykge1xyXG4gICAgICAgICAgICAgIGlmIChoaWRlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgaGlkZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRpc2FibGUgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgZGlzYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBjb25zb2xlLmxvZygnaGlkZTogJywgaGlkZSk7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdkaXNhYmxlOiAnLCBkaXNhYmxlKTtcclxuICAgICAgaWYgKGhpZGUgPT09IHRydWUpIHtcclxuICAgICAgICB0aGlzLmhpZGVIdG1sRWxlbWVudChlbGVtZW50KTtcclxuICAgICAgfSBlbHNlIGlmIChkaXNhYmxlID09PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlSHRtbEVsZW1lbnQoZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoZWNrUGVybWlzc2lvbihhY2Nlc3NDb250cm9sQ29uZmlnOiBTbWFydEFjY2Vzc0NvbnRyb2xDb25maWcpIHtcclxuICAgIGNvbnN0IHNlbERhdGEgPSBhY2Nlc3NDb250cm9sQ29uZmlnLnJvdXRlLmRhdGE7XHJcbiAgICB0aGlzLmxvZ2luU3RhZmYgPSBzZWxEYXRhLmxvZ2luU3RhZmY7XHJcbiAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIgPSBzZWxEYXRhLnNlbGVjdGVkT2ZmZW5kZXI7XHJcbiAgICBsZXQgcm91dGVQYXRoID0gJyc7XHJcbiAgICBpZiAoXHJcbiAgICAgIGFjY2Vzc0NvbnRyb2xDb25maWcucm91dGUudXJsICYmXHJcbiAgICAgIGFjY2Vzc0NvbnRyb2xDb25maWcucm91dGUudXJsLmxlbmd0aCA+IDBcclxuICAgICkge1xyXG4gICAgICByb3V0ZVBhdGggPSBhY2Nlc3NDb250cm9sQ29uZmlnLnJvdXRlLnVybFswXSEucGF0aDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwZXJtaXNzaW9ucyA9IHRoaXMubG9naW5TdGFmZi5wZXJtaXNzaW9ucztcclxuICAgIGNvbnN0IHJlc291cmNlID0gcm91dGVQYXRoO1xyXG4gICAgY29uc3Qgcm9sZUlkID0gYWNjZXNzQ29udHJvbENvbmZpZy5yb2xlSWRcclxuICAgICAgPyBhY2Nlc3NDb250cm9sQ29uZmlnLnJvbGVJZC50b1VwcGVyQ2FzZSgpXHJcbiAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IGFjY2Vzc1R5cGUgPSBhY2Nlc3NDb250cm9sQ29uZmlnLmFjY2Vzc1R5cGU7XHJcbiAgICBjb25zdCBhc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkID0gIXRoaXMuc2VsZWN0ZWRPZmZlbmRlclxyXG4gICAgICAuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZFxyXG4gICAgICA/ICdOL0EnXHJcbiAgICAgIDogdGhpcy5zZWxlY3RlZE9mZmVuZGVyLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQ7XHJcblxyXG4gICAgY29uc3QgcGVybWlzc2lvbiA9IHBlcm1pc3Npb25zLmZpbmQoKHApID0+IHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICBwLmFwcE1vZHVsZUlkID09PSBhY2Nlc3NDb250cm9sQ29uZmlnLmFwcE1vZHVsZUlkICYmXHJcbiAgICAgICAgcC5yZXNvdXJjZSA9PT0gcmVzb3VyY2UgJiZcclxuICAgICAgICAoIXJvbGVJZCB8fCBwLnJvbGVJZCA9PT0gcm9sZUlkKSAmJlxyXG4gICAgICAgIChwLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQgPT09ICdOL0EnIHx8XHJcbiAgICAgICAgICBwLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQgPT09IGFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQpXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAocGVybWlzc2lvbikge1xyXG4gICAgICBpZiAoYWNjZXNzVHlwZSA9PT0gJ3JlYWQnKSB7XHJcbiAgICAgICAgaWYgKCFwZXJtaXNzaW9uLnJlYWRGbGFnKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ2NyZWF0ZScgJiYgIXBlcm1pc3Npb24uY3JlYXRlRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ3VwZGF0ZScgJiYgIXBlcm1pc3Npb24udXBkYXRlRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ2RlbGV0ZScgJiYgIXBlcm1pc3Npb24uZGVsZXRlRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ2Fzc2lnbicgJiYgIXBlcm1pc3Npb24uYXNzaWduRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ2Nsb3NlJyAmJiAhcGVybWlzc2lvbi5jbG9zZUZsYWcpIHx8XHJcbiAgICAgICAgKGFjY2Vzc1R5cGUgPT09ICdleHB1bmdlJyAmJiAhcGVybWlzc2lvbi5leHB1bmdlRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ3Jlb3BlbicgJiYgIXBlcm1pc3Npb24ucmVvcGVuRmxhZylcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoYWNjZXNzVHlwZSA9PT0gJ3JlYWQnKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuQXBwRmVhdHVyZUFjdGl2YXRlKFxyXG4gICAgbG9naW5TdGFmZjogTG9naW5TdGFmZixcclxuICAgIGZlYXR1cmU6IHN0cmluZyxcclxuICAgIGFwcE1vZHVsZUlkID0gbnVsbCxcclxuICApIHtcclxuICAgIC8vIGlmICghdGhpcy5pc0F1dGhFbmFibGUobG9naW5TdGFmZi5yb2xlcywgYXBwTW9kdWxlSWQpKSB7XHJcbiAgICAvLyAgIHJldHVybiB0cnVlO1xyXG4gICAgLy8gfVxyXG4gICAgcmV0dXJuIHRoaXMuaGFzQXBwRmVhdHVyZVBlcm1pc3Npb24oXHJcbiAgICAgIGxvZ2luU3RhZmYucGVybWlzc2lvbnMsXHJcbiAgICAgIGZlYXR1cmUsXHJcbiAgICAgIGFwcE1vZHVsZUlkLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyBpc0F1dGhFbmFibGUocm9sZXM6IFJvbGVbXSwgYXBwTW9kdWxlSWQ6IHN0cmluZykge1xyXG4gIC8vICAgaWYgKHJvbGVzICYmIHJvbGVzLmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgcmV0dXJuIHJvbGVzLm1hcChyID0+IHIucm9sZUlkKS5maW5kSW5kZXgodGhpcy5pc0V4dGVybmFsUm9sZSkgPiAtMSB8fCBhcHBNb2R1bGVJZCA9PT0gJ1JSJztcclxuICAvLyAgIH1cclxuICAvLyAgIHJldHVybiBmYWxzZTtcclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyBoYXNJbnRha2VSb2xlKHJvbGVzOiBSb2xlW10pIHtcclxuICAgIGlmIChyb2xlcyAmJiByb2xlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJldHVybiByb2xlcy5maW5kSW5kZXgodGhpcy5pc0ludGFrZVJvbGUpID4gLTE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc0FwcEZlYXR1cmVQZXJtaXNzaW9uKFxyXG4gICAgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25bXSxcclxuICAgIGZlYXR1cmU6IHN0cmluZyxcclxuICAgIGFwcE1vZHVsZUlkOiBzdHJpbmcsXHJcbiAgKSB7XHJcbiAgICBpZiAocGVybWlzc2lvbnMgJiYgcGVybWlzc2lvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAoYXBwTW9kdWxlSWQpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgcGVybWlzc2lvbnMuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAocCkgPT4gcC5yZXNvdXJjZSA9PT0gZmVhdHVyZSAmJiBwLmFwcE1vZHVsZUlkID09PSBhcHBNb2R1bGVJZCxcclxuICAgICAgICAgICkgPiAtMVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25zLmZpbmRJbmRleCgocCkgPT4gcC5yZXNvdXJjZSA9PT0gZmVhdHVyZSkgPiAtMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNFeHRlcm5hbFJvbGUocm9sZUlkKSB7XHJcbiAgICBzd2l0Y2ggKHJvbGVJZCkge1xyXG4gICAgICBjYXNlICdFVURUTCc6XHJcbiAgICAgIGNhc2UgJ0VVRFVTTSc6XHJcbiAgICAgIGNhc2UgJ0VVSkRHJzpcclxuICAgICAgY2FzZSAnRVVNUEQnOlxyXG4gICAgICBjYXNlICdFVVNPVFYnOlxyXG4gICAgICBjYXNlICdFVVVTQTInOlxyXG4gICAgICBjYXNlICdFVVVTQU8nOlxyXG4gICAgICBjYXNlICdFVVVTUEMnOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNJbnRha2VSb2xlKHJvbGU6IFJvbGUpIHtcclxuICAgIHN3aXRjaCAocm9sZS5yb2xlSWQpIHtcclxuICAgICAgY2FzZSAnT1BBJzpcclxuICAgICAgY2FzZSAnT1BTJzpcclxuICAgICAgY2FzZSAnU09QUyc6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNhYmxlSHRtbEVsZW1lbnQoZWxlbWVudDogRWxlbWVudCk6IHZvaWQge1xyXG4gICAgLy8gY29uc29sZS5sb2coZWxlbWVudCk7XHJcbiAgICBzd2l0Y2ggKGVsZW1lbnQubm9kZU5hbWUpIHtcclxuICAgICAgY2FzZSAnQSc6XHJcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoXHJcbiAgICAgICAgICAnc3R5bGUnLFxyXG4gICAgICAgICAgJ3BvaW50ZXItZXZlbnRzOiBub25lO2N1cnNvcjogbm90LWFsbG93ZWQ7JyxcclxuICAgICAgICApO1xyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCd0YWJJbmRleCcsICctMScpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoaWRlSHRtbEVsZW1lbnQoZWxlbWVudDogRWxlbWVudCk6IHZvaWQge1xyXG4gICAgLy8gZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsICdoaWRkZW4nKTtcclxuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdzdHlsZScsICdkaXNwbGF5OiBub25lOycpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTdGFmZih1c2VyTmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxMb2dpblN0YWZmPiB7XHJcbiAgICByZXR1cm4gdGhpcy5xdWVyeTxhbnk+KHtcclxuICAgICAgcXVlcnk6IHRoaXMuZmluZFN0YWZmUXVlcnksXHJcbiAgICAgIHZhcmlhYmxlczoge1xyXG4gICAgICAgIHdoZXJlOiB7XHJcbiAgICAgICAgICB1c2VyTmFtZTogdXNlck5hbWUsXHJcbiAgICAgICAgICBhY3RpdmVGbGFnOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KS5waXBlKFxyXG4gICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgbWFwKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIGlmIChpc0Rldk1vZGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJyMjIyMjIGdldFN0YWZmKCkgZnJvbSBzZXJ2aWNlICcsIHJlc3VsdCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzdWx0LmZpbmR2U3RhZmZzLmRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gcmVzdWx0LmZpbmR2U3RhZmZzLmRhdGFbMF07XHJcbiAgICAgICAgICAgIHRoaXMueGRtU2VydmljZS5zZXRMb2dpblN0YWZmKGRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2luU3RhZmYgPSBkYXRhO1xyXG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yICcgKyBlcnJvcik7XHJcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHF1ZXJ5PFQ+KG9wdGlvbnM6IHtcclxuICAgIHF1ZXJ5OiBzdHJpbmc7XHJcbiAgICB2YXJpYWJsZXM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xyXG4gIH0pOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8eyBkYXRhOiBUIH0+KFxyXG4gICAgICAgIHRoaXMuc21hcnREYXRhU2VydmljZVVybCxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBxdWVyeTogb3B0aW9ucy5xdWVyeSxcclxuICAgICAgICAgIHZhcmlhYmxlczogb3B0aW9ucy52YXJpYWJsZXMsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgICAgICAnTm8tQXV0aCc6ICdUcnVlJyxcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgfVxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKG1hcCgoZCkgPT4gZC5kYXRhKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBmaW5kU3RhZmZRdWVyeSgpe1xyXG4gICAgcmV0dXJuIGBcclxuICAgICBxdWVyeSBmaW5kdlN0YWZmcygkaW5wdXQ6IHZTdGFmZk11bHRpSW5wdXQpIHtcclxuICAgICAgICBmaW5kdlN0YWZmcyhpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgICAgICB0b3RhbENvdW50XHJcbiAgICAgICAgICBtZXNzYWdlXHJcbiAgICAgICAgICBkYXRhIHtcclxuICAgICAgICAgICAgc3RhZmZJZFxyXG4gICAgICAgICAgICB1c2VyTmFtZVxyXG4gICAgICAgICAgICBsYXN0TmFtZVxyXG4gICAgICAgICAgICBmaXJzdE5hbWVcclxuICAgICAgICAgICAgcGhvbmVcclxuICAgICAgICAgICAgZW1haWxcclxuICAgICAgICAgICAgcm9sZXMge1xyXG4gICAgICAgICAgICAgIHJvbGVJZFxyXG4gICAgICAgICAgICAgIHJvbGVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwZXJtaXNzaW9ucyB7XHJcbiAgICAgICAgICAgICAgcm9sZUlkXHJcbiAgICAgICAgICAgICAgYXBwTW9kdWxlSWRcclxuICAgICAgICAgICAgICByZXNvdXJjZVxyXG4gICAgICAgICAgICAgIGFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWRcclxuICAgICAgICAgICAgICByZWFkRmxhZ1xyXG4gICAgICAgICAgICAgIGNyZWF0ZUZsYWdcclxuICAgICAgICAgICAgICB1cGRhdGVGbGFnXHJcbiAgICAgICAgICAgICAgZGVsZXRlRmxhZ1xyXG4gICAgICAgICAgICAgIGFzc2lnbkZsYWdcclxuICAgICAgICAgICAgICByZW9wZW5GbGFnXHJcbiAgICAgICAgICAgICAgY2xvc2VGbGFnXHJcbiAgICAgICAgICAgICAgZXhwdW5nZUZsYWdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcHRpb25zIHtcclxuICAgICAgICAgICAgICBvZmZlbmRlckxpc3RPcHRpb25JZFxyXG4gICAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgICBzZXJ2aWNlQXBpRmllbGROYW1lXHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRGbGFnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIGA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFN0YWZmT2ZmZW5kZXJSZWxhdGlvbihcclxuICAgIHN0YWZmSWQ6IG51bWJlcixcclxuICAgIG9mZmVuZGVySWQ6IG51bWJlcixcclxuICApOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBgXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBmaW5kdlN0YWZmT2ZmZW5kZXJSZWxhdGlvbnMoaW5wdXQ6IHt3aGVyZToge3N0YWZmSWQ6ICR7c3RhZmZJZH0sIG9mZmVuZGVySWQ6ICR7b2ZmZW5kZXJJZH19fSkge1xyXG4gICAgICAgICAgICAgICAgZGF0YSB7XHJcbiAgICAgICAgICAgICAgICAgIGFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1gO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55Pih0aGlzLnNtYXJ0RGF0YVNlcnZpY2VVcmwsIHsgcXVlcnk6IHF1ZXJ5U3RyaW5nIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgbWFwKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIGlmIChpc0Rldk1vZGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgICAgJyMjIyMjIGdldFN0YWZmT2ZmZW5kZXJSZWxhdGlvbigpIGZyb20gc2VydmljZSAnLFxyXG4gICAgICAgICAgICAgIHJlc3VsdCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXN1bHQuZGF0YS5maW5kdlN0YWZmT2ZmZW5kZXJSZWxhdGlvbnMuZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSByZXN1bHQuZGF0YS5maW5kdlN0YWZmT2ZmZW5kZXJSZWxhdGlvbnMuZGF0YVswXTtcclxuICAgICAgICAgICAgcmV0dXJuIGRhdGEuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAvLyByZXR1cm4gdGhyb3dFcnJvcignTm8gYWNjZXNzIHJpZ2h0LicpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3IgJyArIGVycm9yKTtcclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSb2xlUGVybWlzc2lvbnMoXHJcbiAgICBhcHBNb2R1bGVJZDogc3RyaW5nLFxyXG4gICAgcmVzb3VyY2U6IHN0cmluZyxcclxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gYFxyXG4gICAgICAgICAgIHF1ZXJ5IGZpbmR2Um9sZVBlcm1pc3Npb25QaXZvdHN7XHJcbiAgICAgICAgICAgIGZpbmR2Um9sZVBlcm1pc3Npb25QaXZvdHMoaW5wdXQ6IHt3aGVyZToge2FwcE1vZHVsZUlkOiAke2FwcE1vZHVsZUlkfSwgcmVzb3VyY2U6ICR7cmVzb3VyY2V9fX0pe1xyXG4gICAgICAgICAgICAgIHRvdGFsQ291bnRcclxuICAgICAgICAgICAgICBtZXNzYWdlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1gO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55Pih0aGlzLnNtYXJ0RGF0YVNlcnZpY2VVcmwsIHsgcXVlcnk6IHF1ZXJ5U3RyaW5nIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgbWFwKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIGlmIChpc0Rldk1vZGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgICAgJyMjIyMjIGZpbmR2Um9sZVBlcm1pc3Npb25QaXZvdHMoKSBmcm9tIHNlcnZpY2UgJyxcclxuICAgICAgICAgICAgICByZXN1bHQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzdWx0LmRhdGEuZmluZHZSb2xlUGVybWlzc2lvblBpdm90cy50b3RhbENvdW50ID4gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgLy8gcmV0dXJuIHRocm93RXJyb3IoJ05vIGFjY2VzcyByaWdodC4nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3IgJyArIGVycm9yKTtcclxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcbn1cclxuIl19
505
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3NtYXJ0L25nYy1zbWFydC1jb3JlL3NyYy9saWIvc21hcnQtYXV0aC9zbWFydC1hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR2xELE9BQU8sRUFHTCxzQkFBc0IsRUFDdEIsbUJBQW1CLEdBR3BCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7OztBQUcxRCwyQ0FBMkM7QUFLM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUkzQixZQUNVLElBQWdCLEVBQ2hCLFlBQXlCLEVBQ3pCLFVBQXNCLEVBQ1UsbUJBQW1CLEVBQ3RCLG9CQUE0QjtRQUp6RCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDVSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQUE7UUFDdEIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFRO0lBQ2hFLENBQUM7SUFFRyxhQUFhO1FBQ2xCLElBQUksU0FBUyxFQUFFO1lBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FB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WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIGZyb20sIHRocm93RXJyb3IsIGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAsIHRha2UsIGNhdGNoRXJyb3J9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTXNhbFNlcnZpY2UgfSBmcm9tICdAYXp1cmUvbXNhbC1hbmd1bGFyJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQge1xyXG4gIExvZ2luU3RhZmYsXHJcbiAgU2VsZWN0ZWRPZmZlbmRlcixcclxuICBTTUFSVF9EQVRBX1NFUlZJQ0VfVVJMLFxyXG4gIFNNQVJUX0RPTUFJTl9GT1JNQVQsXHJcbiAgUm9sZSxcclxuICBQZXJtaXNzaW9uLFxyXG59IGZyb20gJy4uL3NtYXJ0LXN0b3JhZ2Uvc21hcnQtc3RvcmFnZS1tb2RlbCc7XHJcbmltcG9ydCB7IFhkbVNlcnZpY2UgfSBmcm9tICcuLi9zbWFydC1zdG9yYWdlL3hkbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU21hcnRBY2Nlc3NDb250cm9sQ29uZmlnIH0gZnJvbSAnLi9zbWFydC1hY2Nlc3MtY29udHJvbC1jb25maWcnO1xyXG5pbXBvcnQgeyBudWxsU2FmZUlzRXF1aXZhbGVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyL3NyYy9vdXRwdXQvb3V0cHV0X2FzdCc7XHJcbi8vIGltcG9ydCB7IHN0cmluZ2lmeSB9IGZyb20gJ3F1ZXJ5c3RyaW5nJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydEF1dGhTZXJ2aWNlIHtcclxuICBsb2dpblN0YWZmOiBMb2dpblN0YWZmO1xyXG4gIHNlbGVjdGVkT2ZmZW5kZXI6IFNlbGVjdGVkT2ZmZW5kZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBhdXRoblNlcnZpY2U6IE1zYWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB4ZG1TZXJ2aWNlOiBYZG1TZXJ2aWNlLFxyXG4gICAgQEluamVjdChTTUFSVF9EQVRBX1NFUlZJQ0VfVVJMKSBwcml2YXRlIHNtYXJ0RGF0YVNlcnZpY2VVcmwsXHJcbiAgICBASW5qZWN0KFNNQVJUX0RPTUFJTl9GT1JNQVQpIHByaXZhdGUgc21hcnREb21haW5Gb3JtYXRVcmw6IHN0cmluZyxcclxuICApIHt9XHJcblxyXG4gIHB1YmxpYyBnZXRMb2dpblN0YWZmKCk6IE9ic2VydmFibGU8TG9naW5TdGFmZj4ge1xyXG4gICAgaWYgKGlzRGV2TW9kZSkge1xyXG4gICAgICBjb25zb2xlLmxvZygnU21hcnRBdXRoU2VydmljZSAtIGdldExvZ2luU3RhZmYoKScpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpc0Rldk1vZGUgJiYgdGhpcy5sb2dpblN0YWZmKSB7XHJcbiAgICAgIGlmICh0aGlzLmxvZ2luU3RhZmYuc3RhZmZJZCkge1xyXG4gICAgICAgIGlmIChpc0Rldk1vZGUpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAnIyMjIyMgZ2V0TG9naW5TdGFmZigpOiBnZXQgaW50ZXJuYWwgaW5zdGFuY2UgaW4gc2VydmljZScsXHJcbiAgICAgICAgICAgIHRoaXMubG9naW5TdGFmZixcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvZih0aGlzLmxvZ2luU3RhZmYpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMubG9naW5TdGFmZi51c2VyTmFtZSkge1xyXG4gICAgICAgIGlmIChpc0Rldk1vZGUpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAnIyMjIyMgZ2V0TG9naW5TdGFmZigpOiBnZXQgdXNpbmcgcHJlc2V0IHVzZXIgbmFtZScsXHJcbiAgICAgICAgICAgIHRoaXMubG9naW5TdGFmZixcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0YWZmKHRoaXMubG9naW5TdGFmZi51c2VyTmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmcm9tKHRoaXMueGRtU2VydmljZS5nZXRMb2dpblN0YWZmKCkpLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgoc3RvcmVkUmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHN0b3JlZFJlc3VsdCAmJiBzdG9yZWRSZXN1bHQuc3RhZmZJZCkge1xyXG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgICAnIyMjIyMgZ2V0TG9naW5TdGFmZigpOiBnZXQgZnJvbSBzZXNzaW9uLicsXHJcbiAgICAgICAgICAgICAgc3RvcmVkUmVzdWx0LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5sb2dpblN0YWZmID0gc3RvcmVkUmVzdWx0O1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHN0b3JlZFJlc3VsdCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzdG9yZWRSZXN1bHQgJiYgc3RvcmVkUmVzdWx0LnVzZXJOYW1lKSB7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICcjIyMjIyBnZXRMb2dpblN0YWZmKCk6IGdldCB1c2luZyBwcmVzZXQgdXNlciBuYW1lJyxcclxuICAgICAgICAgICAgICB0aGlzLmxvZ2luU3RhZmYsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGFmZihzdG9yZWRSZXN1bHQudXNlck5hbWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCB1c2VyTmFtZSA9IHRoaXMudXNlck5hbWU7XHJcbiAgICAgICAgICBjb25zdCBzdGFmZk5hbWUgPSB1c2VyTmFtZS5zdWJzdHJpbmcoMCwgdXNlck5hbWUuaW5kZXhPZignQCcpKTtcclxuICAgICAgICAgIGlmIChpc0Rldk1vZGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgICAgJyMjIyMjIGxvZ2luTG9naW5TdGFmZigpOiBnZXQgdXNpbmcgbG9naW4gc3RhZmYgbmFtZSAnLFxyXG4gICAgICAgICAgICAgIHN0YWZmTmFtZSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0YWZmKHN0YWZmTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXQgdXNlck5hbWUoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmF1dGhuU2VydmljZS5pbnN0YW5jZS5nZXRBbGxBY2NvdW50cygpLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgYWNjb3VudCA9IHRoaXMuYXV0aG5TZXJ2aWNlLmluc3RhbmNlLmdldEFsbEFjY291bnRzKClbMF07XHJcbiAgICAgIHJldHVybiBhY2NvdW50LnVzZXJuYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VGVhbVVybChhcHA6IHN0cmluZywgYWZ0ZXJIYXNoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuc21hcnREb21haW5Gb3JtYXRVcmwucmVwbGFjZSgnJHtBUFB9JywgYXBwKSArIGFmdGVySGFzaDtcclxuICB9XHJcbiAgcHJpdmF0ZSBpc1NhbWVIb3N0KHVybCwgYXBwKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zbWFydERvbWFpbkZvcm1hdFVybC5yZXBsYWNlKCcke0FQUH0nLCBhcHApID09PSB1cmw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVkaXJlY3RUb1RlYW0obG9naW5TdGFmZjogTG9naW5TdGFmZikge1xyXG4gICAgaWYgKGxvZ2luU3RhZmYucm9sZXMuZmluZEluZGV4KChyb2xlKSA9PiByb2xlLnJvbGVJZCA9PT0gJ0VVVVNQQycpID4gLTEpIHtcclxuICAgICAgaWYgKCF0aGlzLmlzU2FtZUhvc3Qod2luZG93LmxvY2F0aW9uLm9yaWdpbiwgJ2ludmVzdGlnYXRpb24nKSkge1xyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdGhpcy5nZXRUZWFtVXJsKCdpbnZlc3RpZ2F0aW9uJywgJy9hc3NpZ25tZW50Jyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIGxvZ2luU3RhZmYucm9sZXMuZmluZEluZGV4KFxyXG4gICAgICAgIChyb2xlKSA9PiByb2xlLnJvbGVJZC5zdWJzdHJpbmcoMCwgMykgPT09ICdSU0MnLFxyXG4gICAgICApID4gLTFcclxuICAgICkge1xyXG4gICAgICBpZiAoIXRoaXMuaXNTYW1lSG9zdCh3aW5kb3cubG9jYXRpb24ub3JpZ2luLCAncnNjJykpIHtcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRoaXMuZ2V0VGVhbVVybCgncnNjJywgJy9vZmZlbmRlci1saXN0Jyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzZXRTZWxlY3RlZE9mZmVuZGVyKHNlbGVjdGVkT2ZmZW5kZXI6IFNlbGVjdGVkT2ZmZW5kZXIpIHtcclxuICAgIGlmICghdGhpcy5sb2dpblN0YWZmKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2VsZWN0ZWRPZmZlbmRlcikge1xyXG4gICAgICAvLyBpZiAoIXNlbGVjdGVkT2ZmZW5kZXIuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZCkge1xyXG4gICAgICBjb25zdCByZWxhdGlvbiA9IGF3YWl0IGxhc3RWYWx1ZUZyb20oXHJcbiAgICAgICAgdGhpcy5nZXRTdGFmZk9mZmVuZGVyUmVsYXRpb24oXHJcbiAgICAgICAgICB0aGlzLmxvZ2luU3RhZmYuc3RhZmZJZCxcclxuICAgICAgICAgIHNlbGVjdGVkT2ZmZW5kZXIub2ZmZW5kZXJJZCxcclxuICAgICAgICApLFxyXG4gICAgICApO1xyXG4gICAgICBpZiAocmVsYXRpb24pIHtcclxuICAgICAgICBzZWxlY3RlZE9mZmVuZGVyLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQgPSByZWxhdGlvbjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZWxlY3RlZE9mZmVuZGVyLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQgPSAnTk9BU1NJR04nO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICAgIHRoaXMueGRtU2VydmljZS5zZXRTZWxlY3RlZE9mZmVuZGVyKHNlbGVjdGVkT2ZmZW5kZXIpO1xyXG4gICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID0gc2VsZWN0ZWRPZmZlbmRlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2dvdXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnhkbVNlcnZpY2UuY2xlYXJBbGwoKTtcclxuICAgIHRoaXMuYXV0aG5TZXJ2aWNlLmxvZ291dCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNldFBlcm1pc3Npb24oXHJcbiAgICBhcHBNb2R1bGVJZDogc3RyaW5nLFxyXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgKSB7XHJcbiAgICBpZiAoIXRoaXMubG9naW5TdGFmZikge1xyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgPSBhd2FpdCB0aGlzLnhkbVNlcnZpY2UuZ2V0TG9naW5TdGFmZigpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcGVybWlzc2lvbnMgPSB0aGlzLmxvZ2luU3RhZmYucGVybWlzc2lvbnM7XHJcbiAgICBjb25zdCByZXNvdXJjZSA9XHJcbiAgICAgIHJvdXRlLnVybCAmJiByb3V0ZS51cmwubGVuZ3RoID4gMCA/IHJvdXRlLnVybFswXSEucGF0aCA6ICcnO1xyXG5cclxuICAgIGlmICghdGhpcy5zZWxlY3RlZE9mZmVuZGVyKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPZmZlbmRlciA9IGF3YWl0IHRoaXMueGRtU2VydmljZS5nZXRTZWxlY3RlZE9mZmVuZGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRPZmZlbmRlcikge1xyXG4gICAgICAvLyBpZiAoIXRoaXMuc2VsZWN0ZWRPZmZlbmRlci5hc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkKSB7XHJcbiAgICAgIGNvbnN0IHJlbGF0aW9uID0gYXdhaXQgdGhpcy5nZXRTdGFmZk9mZmVuZGVyUmVsYXRpb24oXHJcbiAgICAgICAgdGhpcy5sb2dpblN0YWZmLnN0YWZmSWQsXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyLm9mZmVuZGVySWQsXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgICAgIGlmIChyZWxhdGlvbikge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPZmZlbmRlci5hc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkID0gcmVsYXRpb247XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQgPSAnTk9BU1NJR04nO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMueGRtU2VydmljZS5zZXRTZWxlY3RlZE9mZmVuZGVyKHRoaXMuc2VsZWN0ZWRPZmZlbmRlcik7XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkID1cclxuICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQ7XHJcblxyXG4gICAgY29uc3QgZWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbY2xhc3NePVwic2FjLVwiXScpO1xyXG4gICAgY29uc3QgcGF0dGVybiA9IC9ec2FjLShcXFMrKS0oXFxTKykkL2k7XHJcblxyXG4gICAgQXJyYXkuZnJvbShlbGVtZW50cykuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICBsZXQgaGlkZTtcclxuICAgICAgbGV0IGRpc2FibGU7XHJcbiAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmZvckVhY2goKGMpID0+IHtcclxuICAgICAgICBjb25zdCByZXN1bHRzID0gYy5tYXRjaChwYXR0ZXJuKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhyZXN1bHRzKTtcclxuICAgICAgICBpZiAocmVzdWx0cyAmJiByZXN1bHRzLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICAgIGNvbnN0IHJvbGVJZCA9IHJlc3VsdHNbMV0gPyByZXN1bHRzWzFdLnRvVXBwZXJDYXNlKCkgOiBudWxsO1xyXG4gICAgICAgICAgY29uc3QgcmlnaHQgPSByZXN1bHRzWzJdO1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2cocmVzdWx0c1swXSk7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhyZXN1bHRzWzFdKTtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHJlc3VsdHNbMl0pO1xyXG4gICAgICAgICAgY29uc3QgcGVybWlzc2lvbiA9IHBlcm1pc3Npb25zLmZpbmQoZnVuY3Rpb24gKHApIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICBwLmFwcE1vZHVsZUlkID09PSBhcHBNb2R1bGVJZCAmJlxyXG4gICAgICAgICAgICAgIHAucmVzb3VyY2UgPT09IHJlc291cmNlICYmXHJcbiAgICAgICAgICAgICAgcC5yb2xlSWQgPT09IHJvbGVJZCAmJlxyXG4gICAgICAgICAgICAgIHAuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZCA9PT0gYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICAvKlxyXG4gICAgICAgICAgY29uc29sZS5sb2coJyMjIyMjIHNldFBlcm1pc3Npb24oKSByZXNvdXJjZTogJywgcmVzb3VyY2UpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJyMjIyMjIHNldFBlcm1pc3Npb24oKSBhcHBNb2R1bGVJZDogJywgYXBwTW9kdWxlSWQpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJyMjIyMjIHNldFBlcm1pc3Npb24oKSByb2xlSWQ6ICcsIHJvbGVJZCk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgJyMjIyMjIHNldFBlcm1pc3Npb24oKSBhc3NpZ25tZW50IHJlbGF0aW9uOiAnLFxyXG4gICAgICAgICAgICBhc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgICovXHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnIyMjIyMgTWF0Y2hlZCBwZXJtaXNzaW9uOiAnLCBwZXJtaXNzaW9uKTtcclxuXHJcbiAgICAgICAgICBpZiAocGVybWlzc2lvbikge1xyXG4gICAgICAgICAgICBpZiAocmlnaHQgPT09ICdyZWFkJykge1xyXG4gICAgICAgICAgICAgIGlmICghcGVybWlzc2lvbi5yZWFkRmxhZykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGhpZGUgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGhpZGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBoaWRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgIChyaWdodCA9PT0gJ2NyZWF0ZScgJiYgIXBlcm1pc3Npb24uY3JlYXRlRmxhZykgfHxcclxuICAgICAgICAgICAgICAocmlnaHQgPT09ICd1cGRhdGUnICYmICFwZXJtaXNzaW9uLnVwZGF0ZUZsYWcpIHx8XHJcbiAgICAgICAgICAgICAgKHJpZ2h0ID09PSAnZGVsZXRlJyAmJiAhcGVybWlzc2lvbi5kZWxldGVGbGFnKSB8fFxyXG4gICAgICAgICAgICAgIChyaWdodCA9PT0gJ2Fzc2lnbicgJiYgIXBlcm1pc3Npb24uYXNzaWduRmxhZykgfHxcclxuICAgICAgICAgICAgICAocmlnaHQgPT09ICdjbG9zZScgJiYgIXBlcm1pc3Npb24uY2xvc2VGbGFnKSB8fFxyXG4gICAgICAgICAgICAgIChyaWdodCA9PT0gJ2V4cHVuZ2UnICYmICFwZXJtaXNzaW9uLmV4cHVuZ2VGbGFnKSB8fFxyXG4gICAgICAgICAgICAgIChyaWdodCA9PT0gJ3Jlb3BlbicgJiYgIXBlcm1pc3Npb24ucmVvcGVuRmxhZylcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGVsZW1lbnQubm9kZU5hbWUgPT09ICdCVVRUT04nKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaGlkZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgICAgaGlkZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChkaXNhYmxlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKGVsZW1lbnQubm9kZU5hbWUgPT09ICdCVVRUT04nKSB7XHJcbiAgICAgICAgICAgICAgICBoaWRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRpc2FibGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChyaWdodCA9PT0gJ3JlYWQnKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGhpZGUgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICBoaWRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0JVVFRPTicpIHtcclxuICAgICAgICAgICAgICBpZiAoaGlkZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIGhpZGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChkaXNhYmxlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgIGRpc2FibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgY29uc29sZS5sb2coJ2hpZGU6ICcsIGhpZGUpO1xyXG4gICAgICBjb25zb2xlLmxvZygnZGlzYWJsZTogJywgZGlzYWJsZSk7XHJcbiAgICAgIGlmIChoaWRlID09PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5oaWRlSHRtbEVsZW1lbnQoZWxlbWVudCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZGlzYWJsZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZUh0bWxFbGVtZW50KGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGVja1Blcm1pc3Npb24oYWNjZXNzQ29udHJvbENvbmZpZzogU21hcnRBY2Nlc3NDb250cm9sQ29uZmlnKSB7XHJcbiAgICBjb25zdCBzZWxEYXRhID0gYWNjZXNzQ29udHJvbENvbmZpZy5yb3V0ZS5kYXRhO1xyXG4gICAgdGhpcy5sb2dpblN0YWZmID0gc2VsRGF0YS5sb2dpblN0YWZmO1xyXG4gICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID0gc2VsRGF0YS5zZWxlY3RlZE9mZmVuZGVyO1xyXG4gICAgbGV0IHJvdXRlUGF0aCA9ICcnO1xyXG4gICAgaWYgKFxyXG4gICAgICBhY2Nlc3NDb250cm9sQ29uZmlnLnJvdXRlLnVybCAmJlxyXG4gICAgICBhY2Nlc3NDb250cm9sQ29uZmlnLnJvdXRlLnVybC5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgcm91dGVQYXRoID0gYWNjZXNzQ29udHJvbENvbmZpZy5yb3V0ZS51cmxbMF0hLnBhdGg7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGVybWlzc2lvbnMgPSB0aGlzLmxvZ2luU3RhZmYucGVybWlzc2lvbnM7XHJcbiAgICBjb25zdCByZXNvdXJjZSA9IHJvdXRlUGF0aDtcclxuICAgIGNvbnN0IHJvbGVJZCA9IGFjY2Vzc0NvbnRyb2xDb25maWcucm9sZUlkXHJcbiAgICAgID8gYWNjZXNzQ29udHJvbENvbmZpZy5yb2xlSWQudG9VcHBlckNhc2UoKVxyXG4gICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBhY2Nlc3NUeXBlID0gYWNjZXNzQ29udHJvbENvbmZpZy5hY2Nlc3NUeXBlO1xyXG4gICAgY29uc3QgYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZCA9ICF0aGlzLnNlbGVjdGVkT2ZmZW5kZXJcclxuICAgICAgLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWRcclxuICAgICAgPyAnTi9BJ1xyXG4gICAgICA6IHRoaXMuc2VsZWN0ZWRPZmZlbmRlci5hc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkO1xyXG5cclxuICAgIGNvbnN0IHBlcm1pc3Npb24gPSBwZXJtaXNzaW9ucy5maW5kKChwKSA9PiB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgcC5hcHBNb2R1bGVJZCA9PT0gYWNjZXNzQ29udHJvbENvbmZpZy5hcHBNb2R1bGVJZCAmJlxyXG4gICAgICAgIHAucmVzb3VyY2UgPT09IHJlc291cmNlICYmXHJcbiAgICAgICAgKCFyb2xlSWQgfHwgcC5yb2xlSWQgPT09IHJvbGVJZCkgJiZcclxuICAgICAgICAocC5hc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkID09PSAnTi9BJyB8fFxyXG4gICAgICAgICAgcC5hc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkID09PSBhc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkKVxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHBlcm1pc3Npb24pIHtcclxuICAgICAgaWYgKGFjY2Vzc1R5cGUgPT09ICdyZWFkJykge1xyXG4gICAgICAgIGlmICghcGVybWlzc2lvbi5yZWFkRmxhZykge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgKGFjY2Vzc1R5cGUgPT09ICdjcmVhdGUnICYmICFwZXJtaXNzaW9uLmNyZWF0ZUZsYWcpIHx8XHJcbiAgICAgICAgKGFjY2Vzc1R5cGUgPT09ICd1cGRhdGUnICYmICFwZXJtaXNzaW9uLnVwZGF0ZUZsYWcpIHx8XHJcbiAgICAgICAgKGFjY2Vzc1R5cGUgPT09ICdkZWxldGUnICYmICFwZXJtaXNzaW9uLmRlbGV0ZUZsYWcpIHx8XHJcbiAgICAgICAgKGFjY2Vzc1R5cGUgPT09ICdhc3NpZ24nICYmICFwZXJtaXNzaW9uLmFzc2lnbkZsYWcpIHx8XHJcbiAgICAgICAgKGFjY2Vzc1R5cGUgPT09ICdjbG9zZScgJiYgIXBlcm1pc3Npb24uY2xvc2VGbGFnKSB8fFxyXG4gICAgICAgIChhY2Nlc3NUeXBlID09PSAnZXhwdW5nZScgJiYgIXBlcm1pc3Npb24uZXhwdW5nZUZsYWcpIHx8XHJcbiAgICAgICAgKGFjY2Vzc1R5cGUgPT09ICdyZW9wZW4nICYmICFwZXJtaXNzaW9uLnJlb3BlbkZsYWcpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGFjY2Vzc1R5cGUgPT09ICdyZWFkJykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbkFwcEZlYXR1cmVBY3RpdmF0ZShcclxuICAgIGxvZ2luU3RhZmY6IExvZ2luU3RhZmYsXHJcbiAgICBmZWF0dXJlOiBzdHJpbmcsXHJcbiAgICBhcHBNb2R1bGVJZCA9IG51bGwsXHJcbiAgKSB7XHJcbiAgICAvLyBpZiAoIXRoaXMuaXNBdXRoRW5hYmxlKGxvZ2luU3RhZmYucm9sZXMsIGFwcE1vZHVsZUlkKSkge1xyXG4gICAgLy8gICByZXR1cm4gdHJ1ZTtcclxuICAgIC8vIH1cclxuICAgIHJldHVybiB0aGlzLmhhc0FwcEZlYXR1cmVQZXJtaXNzaW9uKFxyXG4gICAgICBsb2dpblN0YWZmLnBlcm1pc3Npb25zLFxyXG4gICAgICBmZWF0dXJlLFxyXG4gICAgICBhcHBNb2R1bGVJZCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBwdWJsaWMgaXNBdXRoRW5hYmxlKHJvbGVzOiBSb2xlW10sIGFwcE1vZHVsZUlkOiBzdHJpbmcpIHtcclxuICAvLyAgIGlmIChyb2xlcyAmJiByb2xlcy5sZW5ndGggPiAwKSB7XHJcbiAgLy8gICAgIHJldHVybiByb2xlcy5tYXAociA9PiByLnJvbGVJZCkuZmluZEluZGV4KHRoaXMuaXNFeHRlcm5hbFJvbGUpID4gLTEgfHwgYXBwTW9kdWxlSWQgPT09ICdSUic7XHJcbiAgLy8gICB9XHJcbiAgLy8gICByZXR1cm4gZmFsc2U7XHJcbiAgLy8gfVxyXG5cclxuICBwdWJsaWMgaGFzSW50YWtlUm9sZShyb2xlczogUm9sZVtdKSB7XHJcbiAgICBpZiAocm9sZXMgJiYgcm9sZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICByZXR1cm4gcm9sZXMuZmluZEluZGV4KHRoaXMuaXNJbnRha2VSb2xlKSA+IC0xO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNBcHBGZWF0dXJlUGVybWlzc2lvbihcclxuICAgIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9uW10sXHJcbiAgICBmZWF0dXJlOiBzdHJpbmcsXHJcbiAgICBhcHBNb2R1bGVJZDogc3RyaW5nLFxyXG4gICkge1xyXG4gICAgaWYgKHBlcm1pc3Npb25zICYmIHBlcm1pc3Npb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKGFwcE1vZHVsZUlkKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIHBlcm1pc3Npb25zLmZpbmRJbmRleChcclxuICAgICAgICAgICAgKHApID0+IHAucmVzb3VyY2UgPT09IGZlYXR1cmUgJiYgcC5hcHBNb2R1bGVJZCA9PT0gYXBwTW9kdWxlSWQsXHJcbiAgICAgICAgICApID4gLTFcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBwZXJtaXNzaW9ucy5maW5kSW5kZXgoKHApID0+IHAucmVzb3VyY2UgPT09IGZlYXR1cmUpID4gLTE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzRXh0ZXJuYWxSb2xlKHJvbGVJZCkge1xyXG4gICAgc3dpdGNoIChyb2xlSWQpIHtcclxuICAgICAgY2FzZSAnRVVEVEwnOlxyXG4gICAgICBjYXNlICdFVURVU00nOlxyXG4gICAgICBjYXNlICdFVUpERyc6XHJcbiAgICAgIGNhc2UgJ0VVTVBEJzpcclxuICAgICAgY2FzZSAnRVVTT1RWJzpcclxuICAgICAgY2FzZSAnRVVVU0EyJzpcclxuICAgICAgY2FzZSAnRVVVU0FPJzpcclxuICAgICAgY2FzZSAnRVVVU1BDJzpcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzSW50YWtlUm9sZShyb2xlOiBSb2xlKSB7XHJcbiAgICBzd2l0Y2ggKHJvbGUucm9sZUlkKSB7XHJcbiAgICAgIGNhc2UgJ09QQSc6XHJcbiAgICAgIGNhc2UgJ09QUyc6XHJcbiAgICAgIGNhc2UgJ1NPUFMnOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGlzYWJsZUh0bWxFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQpOiB2b2lkIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKGVsZW1lbnQpO1xyXG4gICAgc3dpdGNoIChlbGVtZW50Lm5vZGVOYW1lKSB7XHJcbiAgICAgIGNhc2UgJ0EnOlxyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKFxyXG4gICAgICAgICAgJ3N0eWxlJyxcclxuICAgICAgICAgICdwb2ludGVyLWV2ZW50czogbm9uZTtjdXJzb3I6IG5vdC1hbGxvd2VkOycsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgndGFiSW5kZXgnLCAnLTEnKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGlkZUh0bWxFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQpOiB2b2lkIHtcclxuICAgIC8vIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdoaWRkZW4nLCAnaGlkZGVuJyk7XHJcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZGlzcGxheTogbm9uZTsnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U3RhZmYodXNlck5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8TG9naW5TdGFmZj4ge1xyXG4gICAgcmV0dXJuIHRoaXMucXVlcnk8YW55Pih7XHJcbiAgICAgIHF1ZXJ5OiB0aGlzLmZpbmRTdGFmZlF1ZXJ5LFxyXG4gICAgICB2YXJpYWJsZXM6IHtcclxuICAgICAgICBpbnB1dDoge1xyXG4gICAgICAgICAgd2hlcmU6IHtcclxuICAgICAgICAgICAgdXNlck5hbWU6IHVzZXJOYW1lLFxyXG4gICAgICAgICAgICBhY3RpdmVGbGFnOiB0cnVlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KS5waXBlKFxyXG4gICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgbWFwKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIGlmIChpc0Rldk1vZGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJyMjIyMjIGdldFN0YWZmKCkgZnJvbSBzZXJ2aWNlICcsIHJlc3VsdCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzdWx0LmZpbmR2U3RhZmZzLmRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gcmVzdWx0LmZpbmR2U3RhZmZzLmRhdGFbMF07XHJcbiAgICAgICAgICAgIHRoaXMueGRtU2VydmljZS5zZXRMb2dpblN0YWZmKGRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2luU3RhZmYgPSBkYXRhO1xyXG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yICcgKyBlcnJvcik7XHJcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHF1ZXJ5PFQ+KG9wdGlvbnM6IHtcclxuICAgIHF1ZXJ5OiBzdHJpbmc7XHJcbiAgICB2YXJpYWJsZXM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xyXG4gIH0pOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8eyBkYXRhOiBUIH0+KFxyXG4gICAgICAgIHRoaXMuc21hcnREYXRhU2VydmljZVVybCxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBxdWVyeTogb3B0aW9ucy5xdWVyeSxcclxuICAgICAgICAgIHZhcmlhYmxlczogb3B0aW9ucy52YXJpYWJsZXMsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgICAgICAnTm8tQXV0aCc6ICdUcnVlJyxcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgfVxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKG1hcCgoZCkgPT4gZC5kYXRhKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBmaW5kU3RhZmZRdWVyeSgpe1xyXG4gICAgcmV0dXJuIGBcclxuICAgICBxdWVyeSBmaW5kdlN0YWZmcygkaW5wdXQ6IHZTdGFmZk11bHRpSW5wdXQpIHtcclxuICAgICAgICBmaW5kdlN0YWZmcyhpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgICAgICB0b3RhbENvdW50XHJcbiAgICAgICAgICBtZXNzYWdlXHJcbiAgICAgICAgICBkYXRhIHtcclxuICAgICAgICAgICAgc3RhZmZJZFxyXG4gICAgICAgICAgICB1c2VyTmFtZVxyXG4gICAgICAgICAgICBsYXN0TmFtZVxyXG4gICAgICAgICAgICBmaXJzdE5hbWVcclxuICAgICAgICAgICAgcGhvbmVcclxuICAgICAgICAgICAgZW1haWxcclxuICAgICAgICAgICAgcm9sZXMge1xyXG4gICAgICAgICAgICAgIHJvbGVJZFxyXG4gICAgICAgICAgICAgIHJvbGVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwZXJtaXNzaW9ucyB7XHJcbiAgICAgICAgICAgICAgcm9sZUlkXHJcbiAgICAgICAgICAgICAgYXBwTW9kdWxlSWRcclxuICAgICAgICAgICAgICByZXNvdXJjZVxyXG4gICAgICAgICAgICAgIGFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWRcclxuICAgICAgICAgICAgICByZWFkRmxhZ1xyXG4gICAgICAgICAgICAgIGNyZWF0ZUZsYWdcclxuICAgICAgICAgICAgICB1cGRhdGVGbGFnXHJcbiAgICAgICAgICAgICAgZGVsZXRlRmxhZ1xyXG4gICAgICAgICAgICAgIGFzc2lnbkZsYWdcclxuICAgICAgICAgICAgICByZW9wZW5GbGFnXHJcbiAgICAgICAgICAgICAgY2xvc2VGbGFnXHJcbiAgICAgICAgICAgICAgZXhwdW5nZUZsYWdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcHRpb25zIHtcclxuICAgICAgICAgICAgICBvZmZlbmRlckxpc3RPcHRpb25JZFxyXG4gICAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgICBzZXJ2aWNlQXBpRmllbGROYW1lXHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRGbGFnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIGA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFN0YWZmT2ZmZW5kZXJSZWxhdGlvbihcclxuICAgIHN0YWZmSWQ6IG51bWJlcixcclxuICAgIG9mZmVuZGVySWQ6IG51bWJlcixcclxuICApOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBgXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBmaW5kdlN0YWZmT2ZmZW5kZXJSZWxhdGlvbnMoaW5wdXQ6IHt3aGVyZToge3N0YWZmSWQ6ICR7c3RhZmZJZH0sIG9mZmVuZGVySWQ6ICR7b2ZmZW5kZXJJZH19fSkge1xyXG4gICAgICAgICAgICAgICAgZGF0YSB7XHJcbiAgICAgICAgICAgICAgICAgIGFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1gO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55Pih0aGlzLnNtYXJ0RGF0YVNlcnZpY2VVcmwsIHsgcXVlcnk6IHF1ZXJ5U3RyaW5nIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgbWFwKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIGlmIChpc0Rldk1vZGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgICAgJyMjIyMjIGdldFN0YWZmT2ZmZW5kZXJSZWxhdGlvbigpIGZyb20gc2VydmljZSAnLFxyXG4gICAgICAgICAgICAgIHJlc3VsdCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXN1bHQuZGF0YS5maW5kdlN0YWZmT2ZmZW5kZXJSZWxhdGlvbnMuZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSByZXN1bHQuZGF0YS5maW5kdlN0YWZmT2ZmZW5kZXJSZWxhdGlvbnMuZGF0YVswXTtcclxuICAgICAgICAgICAgcmV0dXJuIGRhdGEuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAvLyByZXR1cm4gdGhyb3dFcnJvcignTm8gYWNjZXNzIHJpZ2h0LicpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3IgJyArIGVycm9yKTtcclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSb2xlUGVybWlzc2lvbnMoXHJcbiAgICBhcHBNb2R1bGVJZDogc3RyaW5nLFxyXG4gICAgcmVzb3VyY2U6IHN0cmluZyxcclxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gYFxyXG4gICAgICAgICAgIHF1ZXJ5IGZpbmR2Um9sZVBlcm1pc3Npb25QaXZvdHN7XHJcbiAgICAgICAgICAgIGZpbmR2Um9sZVBlcm1pc3Npb25QaXZvdHMoaW5wdXQ6IHt3aGVyZToge2FwcE1vZHVsZUlkOiAke2FwcE1vZHVsZUlkfSwgcmVzb3VyY2U6ICR7cmVzb3VyY2V9fX0pe1xyXG4gICAgICAgICAgICAgIHRvdGFsQ291bnRcclxuICAgICAgICAgICAgICBtZXNzYWdlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1gO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55Pih0aGlzLnNtYXJ0RGF0YVNlcnZpY2VVcmwsIHsgcXVlcnk6IHF1ZXJ5U3RyaW5nIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgbWFwKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIGlmIChpc0Rldk1vZGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgICAgJyMjIyMjIGZpbmR2Um9sZVBlcm1pc3Npb25QaXZvdHMoKSBmcm9tIHNlcnZpY2UgJyxcclxuICAgICAgICAgICAgICByZXN1bHQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzdWx0LmRhdGEuZmluZHZSb2xlUGVybWlzc2lvblBpdm90cy50b3RhbENvdW50ID4gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgLy8gcmV0dXJuIHRocm93RXJyb3IoJ05vIGFjY2VzcyByaWdodC4nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3IgJyArIGVycm9yKTtcclxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcbn1cclxuIl19
@@ -112,7 +112,7 @@ export class SmartNavbarComponent {
112
112
  return false;
113
113
  }
114
114
  isDVIPRole(role) {
115
- if (role.roleId == 'TSD' || role.roleId == 'TAD') {
115
+ if (role.roleId == 'TSD' || role.roleId == 'TAD' || role.roleId == 'STSD' || role.roleId == 'BC') {
116
116
  return true;
117
117
  }
118
118
  return false;
@@ -163,4 +163,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
163
163
  type: ViewChild,
164
164
  args: ['tabs']
165
165
  }] } });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtbmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NzbWFydC9uZ2Mtc21hcnQtY29yZS9zcmMvbGliL3NtYXJ0LW5hdmJhci9zbWFydC1uYXZiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3NtYXJ0L25nYy1zbWFydC1jb3JlL3NyYy9saWIvc21hcnQtbmF2YmFyL3NtYXJ0LW5hdmJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUlULEtBQUssRUFFTCxTQUFTLEVBRVQsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7OztBQWMxRCxNQUFNLE9BQU8sb0JBQW9CO0lBWS9CLFlBQ1UsbUJBQXVDLEVBQ3ZDLFVBQXNCO0lBQzlCLHdCQUF3QjtJQUNoQixZQUF5QjtRQUh6Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFFdEIsaUJBQVksR0FBWixZQUFZLENBQWE7UUFkMUIsZ0JBQVcsR0FBRyxPQUFPLENBQUM7SUFlNUIsQ0FBQztJQUVKLFdBQVc7UUFDVDs7Ozs7VUFLRTtJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDOUQsSUFBSSxDQUFDLGdCQUFnQjtnQkFDbkIs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QVM7K0JBQ0Usa0JBQWtCLGlCQUdiLGlCQUFpQixDQUFDLElBQUk7NEpBRzVCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDYSxRQUFRO3NCQUExQixTQUFTO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBJbnB1dCxcclxuICBOZ1pvbmUsXHJcbiAgVmlld0NoaWxkLFxyXG4gIGlzRGV2TW9kZSxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0VGFiR3JvdXAgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcclxuaW1wb3J0IHsgTXNhbFNlcnZpY2UgfSBmcm9tICdAYXp1cmUvbXNhbC1hbmd1bGFyJztcclxuaW1wb3J0IHsgU21hcnROYXZiYXJDb25maWcgfSBmcm9tICcuL3NtYXJ0LW5hdmJhci1jb25maWcnO1xyXG5pbXBvcnQgeyBTbWFydE5hdmJhclNlcnZpY2UgfSBmcm9tICcuL3NtYXJ0LW5hdmJhci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgWGRtU2VydmljZSB9IGZyb20gJy4uL3NtYXJ0LXN0b3JhZ2UveGRtLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIFNlbGVjdGVkT2ZmZW5kZXIsXHJcbiAgTG9naW5TdGFmZixcclxuICBSb2xlLFxyXG59IGZyb20gJy4uL3NtYXJ0LXN0b3JhZ2Uvc21hcnQtc3RvcmFnZS1tb2RlbCc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc21hcnQtbmF2YmFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc21hcnQtbmF2YmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zbWFydC1uYXZiYXIuY29tcG9uZW50LmNzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydE5hdmJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHNlcnZpY2VBcGlVcmw6IHN0cmluZztcclxuICBASW5wdXQoKSBhcHBNb2R1bGVJZCA9ICdTTUFSVCc7XHJcbiAgQFZpZXdDaGlsZCgndGFicycpIHRhYkdyb3VwOiBNYXRUYWJHcm91cDtcclxuICBzZWxlY3RlZE9mZmVuZGVyOiBTZWxlY3RlZE9mZmVuZGVyO1xyXG4gIGxvZ2luU3RhZmY6IExvZ2luU3RhZmY7XHJcbiAgb2ZmZW5kZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBzdGFmZlN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIC8vIGlzQXV0aGVudGljYXRlZCA9IGZhbHNlO1xyXG5cclxuICBuYXZiYXJDb25maWdzOiBTbWFydE5hdmJhckNvbmZpZ1tdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbmF2YmFyQ29uZmlnU2VydmljZTogU21hcnROYXZiYXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB4ZG1TZXJ2aWNlOiBYZG1TZXJ2aWNlLFxyXG4gICAgLy8gcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXHJcbiAgICBwcml2YXRlIGF1dGhuU2VydmljZTogTXNhbFNlcnZpY2UsXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIC8qXHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnNlbGVjdGVkVGFiKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSB0aGlzLnNlbGVjdGVkVGFiO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgICAqL1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnhkbVNlcnZpY2UuZ2V0U2VsZWN0ZWRPZmZlbmRlcigpLnRoZW4oKHNlbGVjdGVkT2ZmZW5kZXIpID0+IHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID1cclxuICAgICAgICBzZWxlY3RlZE9mZmVuZGVyICYmIHNlbGVjdGVkT2ZmZW5kZXIub2ZmZW5kZXJJZFxyXG4gICAgICAgICAgPyBzZWxlY3RlZE9mZmVuZGVyXHJcbiAgICAgICAgICA6IG51bGw7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnhkbVNlcnZpY2UuZ2V0TG9naW5TdGFmZigpLnRoZW4oKGxvZ2luU3RhZmYpID0+IHtcclxuICAgICAgLy8gdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9naW5TdGFmZiA9IGxvZ2luU3RhZmYgPyBsb2dpblN0YWZmIDogbnVsbDtcclxuICAgICAgLy8gfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLm9mZmVuZGVyU3Vic2NyaXB0aW9uID0gdGhpcy54ZG1TZXJ2aWNlXHJcbiAgICAgIC5nZXRPZmZlbmRlclVwZGF0ZSgpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHNlbGVjdGVkT2ZmZW5kZXIpID0+IHtcclxuICAgICAgICAvLyB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIgPSBzZWxlY3RlZE9mZmVuZGVyO1xyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnN0YWZmU3Vic2NyaXB0aW9uID0gdGhpcy54ZG1TZXJ2aWNlXHJcbiAgICAgIC5nZXRTdGFmZlVwZGF0ZSgpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGxvZ2luU3RhZmYpID0+IHtcclxuICAgICAgICAvLyB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLmxvZ2luU3RhZmYgPSBsb2dpblN0YWZmO1xyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLm5hdmJhckNvbmZpZ1NlcnZpY2VcclxuICAgICAgLmdldE5hdmJhckNvbmZpZ3ModGhpcy5zZXJ2aWNlQXBpVXJsKVxyXG4gICAgICAuc3Vic2NyaWJlKChjb25maWdzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5uYXZiYXJDb25maWdzID0gY29uZmlncy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICBpZiAoYS5kaXNwbGF5T3JkZXIgPCBiLmRpc3BsYXlPcmRlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGEuZGlzcGxheU9yZGVyID4gYi5kaXNwbGF5T3JkZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8gdGhpcy5pc0F1dGhlbnRpY2F0ZWQgPSB0aGlzLmF1dGhuU2VydmljZS5nZXRBY2NvdW50KCkgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMub2ZmZW5kZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuc3RhZmZTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2dvdXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnhkbVNlcnZpY2UuY2xlYXJBbGwoKTtcclxuICAgIHRoaXMuYXV0aG5TZXJ2aWNlLmxvZ291dCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzQXV0aGVudGljYXRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmF1dGhuU2VydmljZS5pbnN0YW5jZS5nZXRBbGxBY2NvdW50cygpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0QXBwTW9kdWxlVXJsKGNvbmZpZzogU21hcnROYXZiYXJDb25maWcpIHtcclxuICAgIHJldHVybiBjb25maWcgJiYgdGhpcy5zZWxlY3RlZE9mZmVuZGVyICYmIGNvbmZpZy5hcHBNb2R1bGVJZCA9PT0gJ1BQTUFTJ1xyXG4gICAgICA/IGAke2NvbmZpZy51cmx9P3NraXBBcHBNZXRhZGF0YT10cnVlJk9mZmVuZGVySWQ9JHt0aGlzLnNlbGVjdGVkT2ZmZW5kZXIub2ZmZW5kZXJJZH1gXHJcbiAgICAgIDogY29uZmlnLnVybDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYXNBcHBNb2R1bGVQZXJtaXNzaW9uKGFwcE1vZHVsZUlkKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZiAmJlxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYucGVybWlzc2lvbnMgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnBlcm1pc3Npb25zLmxlbmd0aCA+IDBcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIHRoaXMubG9naW5TdGFmZi5wZXJtaXNzaW9ucy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAocCkgPT4gcC5hcHBNb2R1bGVJZCA9PT0gYXBwTW9kdWxlSWQsXHJcbiAgICAgICAgKSA+IC0xXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBoYXNFeHRlcm5hbFVzZXJSb2xlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnJvbGVzICYmXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZi5yb2xlcy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgodGhpcy5pc0V4dGVybmFsUm9sZSkgPiAtMTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGVja0RWSVBQZXJtaXNzaW9uKGNvbmZpZzogU21hcnROYXZiYXJDb25maWcpIDogYm9vbGVhbntcclxuICAgIHJldHVybiAoKGNvbmZpZy5hcHBNb2R1bGVJZCAhPT0gJ0RWSVAnKSB8fCAoY29uZmlnLmFwcE1vZHVsZUlkID09PSBcIkRWSVBcIiAmJiB0aGlzLmhhc0RWSVBSb2xlKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGhhc0RWSVBSb2xlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnJvbGVzICYmXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZi5yb2xlcy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgodGhpcy5pc0RWSVBSb2xlKSA+IC0xO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0RWSVBSb2xlKHJvbGU6IFJvbGUpe1xyXG4gICAgaWYocm9sZS5yb2xlSWQgPT0gJ1RTRCcgfHwgcm9sZS5yb2xlSWQgPT0gJ1RBRCcpe1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoZWNrVmljdGltUGVybWlzc2lvbihjb25maWc6IFNtYXJ0TmF2YmFyQ29uZmlnKSA6IGJvb2xlYW57XHJcbiAgICByZXR1cm4gKChjb25maWcuYXBwTW9kdWxlSWQgIT09ICdWSUNUSU0nKSB8fCAoY29uZmlnLmFwcE1vZHVsZUlkID09PSBcIlZJQ1RJTVwiICYmIHRoaXMuaGFzVmljdGltUm9sZSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBoYXNWaWN0aW1Sb2xlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnJvbGVzICYmXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZi5yb2xlcy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgodGhpcy5pc1ZpY3RpbVJvbGUpID4gLTE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzVmljdGltUm9sZShyb2xlOiBSb2xlKXtcclxuICAgIGlmKHJvbGUucm9sZUlkID09ICdCQycgfHwgcm9sZS5yb2xlSWQgPT0gJ1ZTUCcpe1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0V4dGVybmFsUm9sZShyb2xlOiBSb2xlKSB7XHJcbiAgICBzd2l0Y2ggKHJvbGUucm9sZUlkKSB7XHJcbiAgICAgIGNhc2UgJ0VVRFRMJzpcclxuICAgICAgY2FzZSAnRVVEVVNNJzpcclxuICAgICAgY2FzZSAnRVVKREcnOlxyXG4gICAgICBjYXNlICdFVU1QRCc6XHJcbiAgICAgIGNhc2UgJ0VVU09UVic6XHJcbiAgICAgIGNhc2UgJ0VVVVNBMic6XHJcbiAgICAgIGNhc2UgJ0VVVVNBTyc6XHJcbiAgICAgIGNhc2UgJ0VVVVNQQyc6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gRVVEVExcclxuLy8gRVVEVVNNXHJcbi8vIEVVSkRHXHJcblxyXG4vLyBFVU1QRFxyXG4vLyBFVVNPVFZcclxuLy8gRVVVU0EyXHJcblxyXG4vLyBFVVVTQU9cclxuLy8gRVVVU1BDXHJcbiIsIjwhLS1cclxuPGEgY2xhc3M9XCJzbWFydC1uYXZiYXItdG9nZ2xlIG9wZW5cIiBocmVmPVwiI25hdlwiPlxyXG4gIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5tZW51PC9pPlxyXG48L2E+XHJcblxyXG48bmF2IGlkPVwibmF2XCIgcm9sZT1cIm5hdmlnYXRpb25cIiBjbGFzcz1cInNtYXJ0LW5hdmJhci1jb250YWluZXJcIj5cclxuICA8YSBjbGFzcz1cInNtYXJ0LW5hdmJhci10b2dnbGUgY2xvc2VcIiBocmVmPVwiI1wiPlxyXG4gICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmNsb3NlPC9pPlxyXG4gIDwvYT5cclxuXHJcbiAgPHNwYW4gKm5nRm9yPVwibGV0IGNvbmZpZyBvZiBuYXZiYXJDb25maWdzXCI+XHJcbiAgICA8YSBtYXQtYnV0dG9uIGNsYXNzPVwic21hcnQtbmF2YmFyLWl0ZW1cIiBcclxuICAgICAgKm5nSWY9XCIoY29uZmlnLm9mZmVuZGVyU3BlY2lmaWNGbGFnID09PSBmYWxzZSB8fCBzZWxlY3RlZE9mZmVuZGVyKSAmJiBpc0F1dGhlbnRpY2F0ZWQgJiYgbG9naW5TdGFmZlwiIGhyZWY9XCJ7e2NvbmZpZy51cmx9fVwiPnt7Y29uZmlnLm5hbWV9fTwvYT5cclxuICA8L3NwYW4+XHJcblxyXG4gIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cInNtYXJ0LW5hdmJhci1pdGVtXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVUaGVtZVwiPlNldCBUaGVtZTwvYnV0dG9uPlxyXG4gIDxtYXQtbWVudSAjbWVudVRoZW1lPVwibWF0TWVudVwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvblNldFRoZW1lKCdibHVlLXRoZW1lJylcIj5CbHVlPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uU2V0VGhlbWUoJ3JlZC10aGVtZScpXCI+UmVkPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uU2V0VGhlbWUoJ2dyZWVuLXRoZW1lJylcIj5HcmVlbjwvYnV0dG9uPlxyXG4gIDwvbWF0LW1lbnU+XHJcbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwic21hcnQtbmF2YmFyLWl0ZW0gc21hcnQtbmF2YmFyLWxhc3QtaXRlbVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcclxuICAgICpuZ0lmPVwiaXNBdXRoZW50aWNhdGVkICYmIGxvZ2luU3RhZmZcIj57e2xvZ2luU3RhZmYuZmlyc3ROYW1lICsgJyAnICsgbG9naW5TdGFmZi5sYXN0TmFtZX19PC9idXR0b24+XHJcbiAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtPlByb2ZpbGU8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwibG9nb3V0KClcIj5TaWduIE91dDwvYnV0dG9uPlxyXG4gIDwvbWF0LW1lbnU+XHJcbjwvbmF2PlxyXG4tLT5cclxuXHJcbjwhLS0gPG5hdiBtYXQtdGFiLW5hdi1iYXI+XHJcbiAgPGEgbWF0LXRhYi1saW5rIG1hdC1mbGF0LWJ1dHRvbiAqbmdGb3I9XCJsZXQgY29uZmlnIG9mIG5hdmJhckNvbmZpZ3NcIiBbYWN0aXZlXT1cImFwcE1vZHVsZUlkID09IGNvbmZpZy5hcHBNb2R1bGVJZFwiIGhyZWY9XCJ7e2NvbmZpZy51cmx9fVwiPnt7Y29uZmlnLm5hbWV9fTwvYT5cclxuPC9uYXY+IC0tPlxyXG5cclxuPG1hdC10YWItZ3JvdXAgY2xhc3M9XCJuYXYtdGFiLWdyb3VwXCIgW3NlbGVjdGVkSW5kZXhdPVwibnVsbFwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbmZpZyBvZiBuYXZiYXJDb25maWdzXCI+XHJcbiAgICA8bWF0LXRhYlxyXG4gICAgICAqbmdJZj1cIlxyXG4gICAgICAgICgoaGFzRXh0ZXJuYWxVc2VyUm9sZSAmJiBoYXNBcHBNb2R1bGVQZXJtaXNzaW9uKGNvbmZpZy5hcHBNb2R1bGVJZCkpIHx8XHJcbiAgICAgICAgKCFoYXNFeHRlcm5hbFVzZXJSb2xlICYmIFxyXG4gICAgICAgIChjb25maWcub2ZmZW5kZXJTcGVjaWZpY0ZsYWcgPT09IGZhbHNlIHx8IHNlbGVjdGVkT2ZmZW5kZXIpKSkgJiZcclxuICAgICAgICBjaGVja1ZpY3RpbVBlcm1pc3Npb24oY29uZmlnKSAmJlxyXG4gICAgICAgIGNoZWNrRFZJUFBlcm1pc3Npb24oY29uZmlnKSAmJlxyXG4gICAgICAgIGlzQXV0aGVudGljYXRlZCAmJlxyXG4gICAgICAgIGxvZ2luU3RhZmYgXHJcbiAgICAgIFwiXHJcbiAgICAgIGxhYmVsPVwiY29uZmlnLm5hbWVcIlxyXG4gICAgPlxyXG4gICAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cclxuICAgICAgICA8YVxyXG4gICAgICAgICAgbWF0LWZsYXQtYnV0dG9uXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdtYWluLW1lbnUtYWN0aXZlJzogYXBwTW9kdWxlSWQgPT0gY29uZmlnLmFwcE1vZHVsZUlkIH1cIlxyXG4gICAgICAgICAgW2hyZWZdPVwiZ2V0QXBwTW9kdWxlVXJsKGNvbmZpZylcIlxyXG4gICAgICAgICAgPnt7IGNvbmZpZy5uYW1lIH19PC9hXHJcbiAgICAgICAgPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9tYXQtdGFiPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L21hdC10YWItZ3JvdXA+XHJcbiJdfQ==
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtbmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NzbWFydC9uZ2Mtc21hcnQtY29yZS9zcmMvbGliL3NtYXJ0LW5hdmJhci9zbWFydC1uYXZiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3NtYXJ0L25nYy1zbWFydC1jb3JlL3NyYy9saWIvc21hcnQtbmF2YmFyL3NtYXJ0LW5hdmJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUlULEtBQUssRUFFTCxTQUFTLEVBRVQsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7OztBQWMxRCxNQUFNLE9BQU8sb0JBQW9CO0lBWS9CLFlBQ1UsbUJBQXVDLEVBQ3ZDLFVBQXNCO0lBQzlCLHdCQUF3QjtJQUNoQixZQUF5QjtRQUh6Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFFdEIsaUJBQVksR0FBWixZQUFZLENBQWE7UUFkMUIsZ0JBQVcsR0FBRyxPQUFPLENBQUM7SUFlNUIsQ0FBQztJQUVKLFdBQVc7UUFDVDs7Ozs7VUFLRTtJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDOUQsSUFBSSxDQUFDLGdCQUFnQjtnQkFDbkIs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b0JBQW9COzJJQUFwQixvQkFBb0IsdVBDN0JqQyx5N0VBMkRBOzJGRDlCYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0Usa0JBQWtCLGlCQUdiLGlCQUFpQixDQUFDLElBQUk7NEpBRzVCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDYSxRQUFRO3NCQUExQixTQUFTO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBJbnB1dCxcclxuICBOZ1pvbmUsXHJcbiAgVmlld0NoaWxkLFxyXG4gIGlzRGV2TW9kZSxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0VGFiR3JvdXAgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcclxuaW1wb3J0IHsgTXNhbFNlcnZpY2UgfSBmcm9tICdAYXp1cmUvbXNhbC1hbmd1bGFyJztcclxuaW1wb3J0IHsgU21hcnROYXZiYXJDb25maWcgfSBmcm9tICcuL3NtYXJ0LW5hdmJhci1jb25maWcnO1xyXG5pbXBvcnQgeyBTbWFydE5hdmJhclNlcnZpY2UgfSBmcm9tICcuL3NtYXJ0LW5hdmJhci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgWGRtU2VydmljZSB9IGZyb20gJy4uL3NtYXJ0LXN0b3JhZ2UveGRtLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIFNlbGVjdGVkT2ZmZW5kZXIsXHJcbiAgTG9naW5TdGFmZixcclxuICBSb2xlLFxyXG59IGZyb20gJy4uL3NtYXJ0LXN0b3JhZ2Uvc21hcnQtc3RvcmFnZS1tb2RlbCc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc21hcnQtbmF2YmFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc21hcnQtbmF2YmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zbWFydC1uYXZiYXIuY29tcG9uZW50LmNzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydE5hdmJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHNlcnZpY2VBcGlVcmw6IHN0cmluZztcclxuICBASW5wdXQoKSBhcHBNb2R1bGVJZCA9ICdTTUFSVCc7XHJcbiAgQFZpZXdDaGlsZCgndGFicycpIHRhYkdyb3VwOiBNYXRUYWJHcm91cDtcclxuICBzZWxlY3RlZE9mZmVuZGVyOiBTZWxlY3RlZE9mZmVuZGVyO1xyXG4gIGxvZ2luU3RhZmY6IExvZ2luU3RhZmY7XHJcbiAgb2ZmZW5kZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBzdGFmZlN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIC8vIGlzQXV0aGVudGljYXRlZCA9IGZhbHNlO1xyXG5cclxuICBuYXZiYXJDb25maWdzOiBTbWFydE5hdmJhckNvbmZpZ1tdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbmF2YmFyQ29uZmlnU2VydmljZTogU21hcnROYXZiYXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB4ZG1TZXJ2aWNlOiBYZG1TZXJ2aWNlLFxyXG4gICAgLy8gcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXHJcbiAgICBwcml2YXRlIGF1dGhuU2VydmljZTogTXNhbFNlcnZpY2UsXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIC8qXHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnNlbGVjdGVkVGFiKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSB0aGlzLnNlbGVjdGVkVGFiO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgICAqL1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnhkbVNlcnZpY2UuZ2V0U2VsZWN0ZWRPZmZlbmRlcigpLnRoZW4oKHNlbGVjdGVkT2ZmZW5kZXIpID0+IHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID1cclxuICAgICAgICBzZWxlY3RlZE9mZmVuZGVyICYmIHNlbGVjdGVkT2ZmZW5kZXIub2ZmZW5kZXJJZFxyXG4gICAgICAgICAgPyBzZWxlY3RlZE9mZmVuZGVyXHJcbiAgICAgICAgICA6IG51bGw7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnhkbVNlcnZpY2UuZ2V0TG9naW5TdGFmZigpLnRoZW4oKGxvZ2luU3RhZmYpID0+IHtcclxuICAgICAgLy8gdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9naW5TdGFmZiA9IGxvZ2luU3RhZmYgPyBsb2dpblN0YWZmIDogbnVsbDtcclxuICAgICAgLy8gfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLm9mZmVuZGVyU3Vic2NyaXB0aW9uID0gdGhpcy54ZG1TZXJ2aWNlXHJcbiAgICAgIC5nZXRPZmZlbmRlclVwZGF0ZSgpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHNlbGVjdGVkT2ZmZW5kZXIpID0+IHtcclxuICAgICAgICAvLyB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIgPSBzZWxlY3RlZE9mZmVuZGVyO1xyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnN0YWZmU3Vic2NyaXB0aW9uID0gdGhpcy54ZG1TZXJ2aWNlXHJcbiAgICAgIC5nZXRTdGFmZlVwZGF0ZSgpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGxvZ2luU3RhZmYpID0+IHtcclxuICAgICAgICAvLyB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLmxvZ2luU3RhZmYgPSBsb2dpblN0YWZmO1xyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLm5hdmJhckNvbmZpZ1NlcnZpY2VcclxuICAgICAgLmdldE5hdmJhckNvbmZpZ3ModGhpcy5zZXJ2aWNlQXBpVXJsKVxyXG4gICAgICAuc3Vic2NyaWJlKChjb25maWdzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5uYXZiYXJDb25maWdzID0gY29uZmlncy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICBpZiAoYS5kaXNwbGF5T3JkZXIgPCBiLmRpc3BsYXlPcmRlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGEuZGlzcGxheU9yZGVyID4gYi5kaXNwbGF5T3JkZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8gdGhpcy5pc0F1dGhlbnRpY2F0ZWQgPSB0aGlzLmF1dGhuU2VydmljZS5nZXRBY2NvdW50KCkgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMub2ZmZW5kZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuc3RhZmZTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2dvdXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnhkbVNlcnZpY2UuY2xlYXJBbGwoKTtcclxuICAgIHRoaXMuYXV0aG5TZXJ2aWNlLmxvZ291dCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzQXV0aGVudGljYXRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmF1dGhuU2VydmljZS5pbnN0YW5jZS5nZXRBbGxBY2NvdW50cygpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0QXBwTW9kdWxlVXJsKGNvbmZpZzogU21hcnROYXZiYXJDb25maWcpIHtcclxuICAgIHJldHVybiBjb25maWcgJiYgdGhpcy5zZWxlY3RlZE9mZmVuZGVyICYmIGNvbmZpZy5hcHBNb2R1bGVJZCA9PT0gJ1BQTUFTJ1xyXG4gICAgICA/IGAke2NvbmZpZy51cmx9P3NraXBBcHBNZXRhZGF0YT10cnVlJk9mZmVuZGVySWQ9JHt0aGlzLnNlbGVjdGVkT2ZmZW5kZXIub2ZmZW5kZXJJZH1gXHJcbiAgICAgIDogY29uZmlnLnVybDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYXNBcHBNb2R1bGVQZXJtaXNzaW9uKGFwcE1vZHVsZUlkKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZiAmJlxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYucGVybWlzc2lvbnMgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnBlcm1pc3Npb25zLmxlbmd0aCA+IDBcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIHRoaXMubG9naW5TdGFmZi5wZXJtaXNzaW9ucy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAocCkgPT4gcC5hcHBNb2R1bGVJZCA9PT0gYXBwTW9kdWxlSWQsXHJcbiAgICAgICAgKSA+IC0xXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBoYXNFeHRlcm5hbFVzZXJSb2xlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnJvbGVzICYmXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZi5yb2xlcy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgodGhpcy5pc0V4dGVybmFsUm9sZSkgPiAtMTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGVja0RWSVBQZXJtaXNzaW9uKGNvbmZpZzogU21hcnROYXZiYXJDb25maWcpIDogYm9vbGVhbntcclxuICAgIHJldHVybiAoKGNvbmZpZy5hcHBNb2R1bGVJZCAhPT0gJ0RWSVAnKSB8fCAoY29uZmlnLmFwcE1vZHVsZUlkID09PSBcIkRWSVBcIiAmJiB0aGlzLmhhc0RWSVBSb2xlKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGhhc0RWSVBSb2xlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnJvbGVzICYmXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZi5yb2xlcy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgodGhpcy5pc0RWSVBSb2xlKSA+IC0xO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0RWSVBSb2xlKHJvbGU6IFJvbGUpe1xyXG4gICAgaWYocm9sZS5yb2xlSWQgPT0gJ1RTRCcgfHwgcm9sZS5yb2xlSWQgPT0gJ1RBRCcgfHwgcm9sZS5yb2xlSWQgPT0gJ1NUU0QnIHx8IHJvbGUucm9sZUlkID09ICdCQycpe1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoZWNrVmljdGltUGVybWlzc2lvbihjb25maWc6IFNtYXJ0TmF2YmFyQ29uZmlnKSA6IGJvb2xlYW57XHJcbiAgICByZXR1cm4gKChjb25maWcuYXBwTW9kdWxlSWQgIT09ICdWSUNUSU0nKSB8fCAoY29uZmlnLmFwcE1vZHVsZUlkID09PSBcIlZJQ1RJTVwiICYmIHRoaXMuaGFzVmljdGltUm9sZSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBoYXNWaWN0aW1Sb2xlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnJvbGVzICYmXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZi5yb2xlcy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgodGhpcy5pc1ZpY3RpbVJvbGUpID4gLTE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzVmljdGltUm9sZShyb2xlOiBSb2xlKXtcclxuICAgIGlmKHJvbGUucm9sZUlkID09ICdCQycgfHwgcm9sZS5yb2xlSWQgPT0gJ1ZTUCcpe1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0V4dGVybmFsUm9sZShyb2xlOiBSb2xlKSB7XHJcbiAgICBzd2l0Y2ggKHJvbGUucm9sZUlkKSB7XHJcbiAgICAgIGNhc2UgJ0VVRFRMJzpcclxuICAgICAgY2FzZSAnRVVEVVNNJzpcclxuICAgICAgY2FzZSAnRVVKREcnOlxyXG4gICAgICBjYXNlICdFVU1QRCc6XHJcbiAgICAgIGNhc2UgJ0VVU09UVic6XHJcbiAgICAgIGNhc2UgJ0VVVVNBMic6XHJcbiAgICAgIGNhc2UgJ0VVVVNBTyc6XHJcbiAgICAgIGNhc2UgJ0VVVVNQQyc6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gRVVEVExcclxuLy8gRVVEVVNNXHJcbi8vIEVVSkRHXHJcblxyXG4vLyBFVU1QRFxyXG4vLyBFVVNPVFZcclxuLy8gRVVVU0EyXHJcblxyXG4vLyBFVVVTQU9cclxuLy8gRVVVU1BDXHJcbiIsIjwhLS1cclxuPGEgY2xhc3M9XCJzbWFydC1uYXZiYXItdG9nZ2xlIG9wZW5cIiBocmVmPVwiI25hdlwiPlxyXG4gIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5tZW51PC9pPlxyXG48L2E+XHJcblxyXG48bmF2IGlkPVwibmF2XCIgcm9sZT1cIm5hdmlnYXRpb25cIiBjbGFzcz1cInNtYXJ0LW5hdmJhci1jb250YWluZXJcIj5cclxuICA8YSBjbGFzcz1cInNtYXJ0LW5hdmJhci10b2dnbGUgY2xvc2VcIiBocmVmPVwiI1wiPlxyXG4gICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmNsb3NlPC9pPlxyXG4gIDwvYT5cclxuXHJcbiAgPHNwYW4gKm5nRm9yPVwibGV0IGNvbmZpZyBvZiBuYXZiYXJDb25maWdzXCI+XHJcbiAgICA8YSBtYXQtYnV0dG9uIGNsYXNzPVwic21hcnQtbmF2YmFyLWl0ZW1cIiBcclxuICAgICAgKm5nSWY9XCIoY29uZmlnLm9mZmVuZGVyU3BlY2lmaWNGbGFnID09PSBmYWxzZSB8fCBzZWxlY3RlZE9mZmVuZGVyKSAmJiBpc0F1dGhlbnRpY2F0ZWQgJiYgbG9naW5TdGFmZlwiIGhyZWY9XCJ7e2NvbmZpZy51cmx9fVwiPnt7Y29uZmlnLm5hbWV9fTwvYT5cclxuICA8L3NwYW4+XHJcblxyXG4gIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cInNtYXJ0LW5hdmJhci1pdGVtXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVUaGVtZVwiPlNldCBUaGVtZTwvYnV0dG9uPlxyXG4gIDxtYXQtbWVudSAjbWVudVRoZW1lPVwibWF0TWVudVwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvblNldFRoZW1lKCdibHVlLXRoZW1lJylcIj5CbHVlPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uU2V0VGhlbWUoJ3JlZC10aGVtZScpXCI+UmVkPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uU2V0VGhlbWUoJ2dyZWVuLXRoZW1lJylcIj5HcmVlbjwvYnV0dG9uPlxyXG4gIDwvbWF0LW1lbnU+XHJcbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwic21hcnQtbmF2YmFyLWl0ZW0gc21hcnQtbmF2YmFyLWxhc3QtaXRlbVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcclxuICAgICpuZ0lmPVwiaXNBdXRoZW50aWNhdGVkICYmIGxvZ2luU3RhZmZcIj57e2xvZ2luU3RhZmYuZmlyc3ROYW1lICsgJyAnICsgbG9naW5TdGFmZi5sYXN0TmFtZX19PC9idXR0b24+XHJcbiAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtPlByb2ZpbGU8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwibG9nb3V0KClcIj5TaWduIE91dDwvYnV0dG9uPlxyXG4gIDwvbWF0LW1lbnU+XHJcbjwvbmF2PlxyXG4tLT5cclxuXHJcbjwhLS0gPG5hdiBtYXQtdGFiLW5hdi1iYXI+XHJcbiAgPGEgbWF0LXRhYi1saW5rIG1hdC1mbGF0LWJ1dHRvbiAqbmdGb3I9XCJsZXQgY29uZmlnIG9mIG5hdmJhckNvbmZpZ3NcIiBbYWN0aXZlXT1cImFwcE1vZHVsZUlkID09IGNvbmZpZy5hcHBNb2R1bGVJZFwiIGhyZWY9XCJ7e2NvbmZpZy51cmx9fVwiPnt7Y29uZmlnLm5hbWV9fTwvYT5cclxuPC9uYXY+IC0tPlxyXG5cclxuPG1hdC10YWItZ3JvdXAgY2xhc3M9XCJuYXYtdGFiLWdyb3VwXCIgW3NlbGVjdGVkSW5kZXhdPVwibnVsbFwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbmZpZyBvZiBuYXZiYXJDb25maWdzXCI+XHJcbiAgICA8bWF0LXRhYlxyXG4gICAgICAqbmdJZj1cIlxyXG4gICAgICAgICgoaGFzRXh0ZXJuYWxVc2VyUm9sZSAmJiBoYXNBcHBNb2R1bGVQZXJtaXNzaW9uKGNvbmZpZy5hcHBNb2R1bGVJZCkpIHx8XHJcbiAgICAgICAgKCFoYXNFeHRlcm5hbFVzZXJSb2xlICYmIFxyXG4gICAgICAgIChjb25maWcub2ZmZW5kZXJTcGVjaWZpY0ZsYWcgPT09IGZhbHNlIHx8IHNlbGVjdGVkT2ZmZW5kZXIpKSkgJiZcclxuICAgICAgICBjaGVja1ZpY3RpbVBlcm1pc3Npb24oY29uZmlnKSAmJlxyXG4gICAgICAgIGNoZWNrRFZJUFBlcm1pc3Npb24oY29uZmlnKSAmJlxyXG4gICAgICAgIGlzQXV0aGVudGljYXRlZCAmJlxyXG4gICAgICAgIGxvZ2luU3RhZmYgXHJcbiAgICAgIFwiXHJcbiAgICAgIGxhYmVsPVwiY29uZmlnLm5hbWVcIlxyXG4gICAgPlxyXG4gICAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cclxuICAgICAgICA8YVxyXG4gICAgICAgICAgbWF0LWZsYXQtYnV0dG9uXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdtYWluLW1lbnUtYWN0aXZlJzogYXBwTW9kdWxlSWQgPT0gY29uZmlnLmFwcE1vZHVsZUlkIH1cIlxyXG4gICAgICAgICAgW2hyZWZdPVwiZ2V0QXBwTW9kdWxlVXJsKGNvbmZpZylcIlxyXG4gICAgICAgICAgPnt7IGNvbmZpZy5uYW1lIH19PC9hXHJcbiAgICAgICAgPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9tYXQtdGFiPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L21hdC10YWItZ3JvdXA+XHJcbiJdfQ==
@@ -539,7 +539,7 @@ class SmartNavbarComponent {
539
539
  return false;
540
540
  }
541
541
  isDVIPRole(role) {
542
- if (role.roleId == 'TSD' || role.roleId == 'TAD') {
542
+ if (role.roleId == 'TSD' || role.roleId == 'TAD' || role.roleId == 'STSD' || role.roleId == 'BC') {
543
543
  return true;
544
544
  }
545
545
  return false;
@@ -1159,10 +1159,12 @@ class SmartAuthService {
1159
1159
  return this.query({
1160
1160
  query: this.findStaffQuery,
1161
1161
  variables: {
1162
- where: {
1163
- userName: userName,
1164
- activeFlag: true,
1165
- },
1162
+ input: {
1163
+ where: {
1164
+ userName: userName,
1165
+ activeFlag: true,
1166
+ },
1167
+ }
1166
1168
  },
1167
1169
  }).pipe(take(1), map((result) => {
1168
1170
  if (isDevMode) {