@annalib/anna-cognito-lib 2.3.2 → 2.3.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.
@@ -24,6 +24,7 @@ export class AnnaLoginComponent {
24
24
  }
25
25
  ngOnInit() {
26
26
  this.authService.consumingProjectAuthService.isLoggingIn = false;
27
+ this.consumingProjectSSOLoginService.loggedInViaSso = false;
27
28
  this.constants = LoginConstant;
28
29
  this.onIntialiseForm();
29
30
  }
@@ -52,4 +53,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
52
53
  type: Inject,
53
54
  args: [SSO_LOGIN_SERVICE_TOKEN]
54
55
  }] }]; } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1sb2dpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvZ25pdG8tbGliL3NyYy9saWIvY29tcG9uZW50cy9hbm5hLWxvZ2luL2FubmEtbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYW5uYS1sb2dpbi9hbm5hLWxvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRCQUE0QjtBQUM1QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFhLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFGLGlDQUFpQztBQUNqQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLG9CQUFvQixFQUFrQixNQUFNLG1DQUFtQyxDQUFDO0FBQ3pGLE9BQU8sRUFBb0IsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUM3RyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUNoSCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQVNsRSxNQUFNLE9BQU8sa0JBQWtCO0lBSTNCLFlBQ1csV0FBK0IsRUFDOUIsRUFBZSxFQUNjLDZCQUE2QyxFQUMxQywrQkFBaUQ7UUFIbEYsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQzlCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDYyxrQ0FBNkIsR0FBN0IsNkJBQTZCLENBQWdCO1FBQzFDLG9DQUErQixHQUEvQiwrQkFBK0IsQ0FBa0I7SUFDekYsQ0FBQztJQUVMLFFBQVE7UUFDSixJQUFJLENBQUMsV0FBVyxDQUFDLDJCQUEyQixDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDakUsSUFBSSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUMzQixRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDaEIsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDO1NBQ25CLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ2hFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMzRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDM0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDOytHQTdCUSxrQkFBa0IsK0VBT2Ysb0JBQW9CLGFBQ3BCLHVCQUF1QjttR0FSMUIsa0JBQWtCLHVGQ3ZCL0IsbXVFQXVDTSwrbEdEbEJRLElBQUksNkZBQUUsZ0JBQWdCLDJNQUFFLFdBQVcsMnBCQUFFLG1CQUFtQixnVkFBRSxPQUFPLG9GQUFFLFVBQVUsNE5BQUUsc0JBQXNCLDhJQUFFLDhCQUE4QixzRkFBRSwwQkFBMEIsaUZBQUUsNkJBQTZCOzs0RkFFak0sa0JBQWtCO2tCQVA5QixTQUFTOytCQUNJLDZCQUE2QixjQUczQixJQUFJLFdBQ1AsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsc0JBQXNCLEVBQUUsOEJBQThCLEVBQUUsMEJBQTBCLEVBQUUsNkJBQTZCLENBQUM7OzBCQVN0TSxNQUFNOzJCQUFDLG9CQUFvQjs7MEJBQzNCLE1BQU07MkJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhciBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbi8vIFVzZXIgZGVmaW5lZCBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBMb2dpbkNvbnN0YW50IH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50cy9sb2dpbkNvbnN0YW50XCI7XHJcbmltcG9ydCB7IEFubmFMaWJBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IENPTkZJR19TRVJWSUNFX1RPS0VOLCBJQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbmZpZy9jb25maWctc2VydmljZS50b2tlbic7XHJcbmltcG9ydCB7IElTU09Mb2dpblNlcnZpY2UsIFNTT19MT0dJTl9TRVJWSUNFX1RPS0VOIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9zc28tbG9naW4tc2VydmljZS50b2tlblwiO1xuaW1wb3J0IHsgVmVyc2lvbkFuZFRlcm1Qb2xpY3lDb21wb25lbnQgfSBmcm9tIFwiLi4vdmVyc2lvbi1hbmQtdGVybS1wb2xpY3kvdmVyc2lvbi1hbmQtdGVybS1wb2xpY3kuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBTdXJld2F2ZXNZZWFyTG9nb0NvbXBvbmVudCB9IGZyb20gXCIuLi9zdXJld2F2ZXMteWVhci1sb2dvL3N1cmV3YXZlcy15ZWFyLWxvZ28uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBQb3dlcmVkQnlMb2dvVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tIFwiLi4vcG93ZXJlZC1ieS1sb2dvLXRlbXBsYXRlL3Bvd2VyZWQtYnktbG9nby10ZW1wbGF0ZS5jb21wb25lbnRcIjtcbmltcG9ydCB7IFNwaW5uZXJCdXR0b25EaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZGlyZWN0aXZlcy9zcGlubmVyLWJ1dHRvbi9zcGlubmVyLWJ1dHRvbi5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IFJvdXRlckxpbmsgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBOZ0lmLCBOZ09wdGltaXplZEltYWdlLCBOZ0NsYXNzIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5cclxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhbm5hLWNvZ25pdG8tbGliLWFubmEtbG9naW4nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hbm5hLWxvZ2luLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9hbm5hLWxvZ2luLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgTmdPcHRpbWl6ZWRJbWFnZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE5nQ2xhc3MsIFJvdXRlckxpbmssIFNwaW5uZXJCdXR0b25EaXJlY3RpdmUsIFBvd2VyZWRCeUxvZ29UZW1wbGF0ZUNvbXBvbmVudCwgU3VyZXdhdmVzWWVhckxvZ29Db21wb25lbnQsIFZlcnNpb25BbmRUZXJtUG9saWN5Q29tcG9uZW50XVxufSlcclxuZXhwb3J0IGNsYXNzIEFubmFMb2dpbkNvbXBvbmVudCB7XHJcbiAgICBsb2dpbkZvcm06IEZvcm1Hcm91cDtcclxuICAgIGNvbnN0YW50czogdHlwZW9mIExvZ2luQ29uc3RhbnQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIGF1dGhTZXJ2aWNlOiBBbm5hTGliQXV0aFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgICAgQEluamVjdChDT05GSUdfU0VSVklDRV9UT0tFTikgcHVibGljIGNvbnN1bWluZ1Byb2plY3RDb25maWdTZXJ2aWNlOiBJQ29uZmlnU2VydmljZSxcclxuICAgICAgICBASW5qZWN0KFNTT19MT0dJTl9TRVJWSUNFX1RPS0VOKSBwdWJsaWMgY29uc3VtaW5nUHJvamVjdFNTT0xvZ2luU2VydmljZTogSVNTT0xvZ2luU2VydmljZVxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5pc0xvZ2dpbmdJbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29uc3RhbnRzID0gTG9naW5Db25zdGFudDtcclxuICAgICAgICB0aGlzLm9uSW50aWFsaXNlRm9ybSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uSW50aWFsaXNlRm9ybSgpIHtcclxuICAgICAgICB0aGlzLmxvZ2luRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICB1c2VybmFtZTogW251bGxdLFxyXG4gICAgICAgICAgICBwYXNzd29yZDogW251bGxdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIE9uTG9naW4oKSB7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuaXNMb2dnaW5nSW4gPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IHVzZXJuYW1lID0gdGhpcy5sb2dpbkZvcm0uY29udHJvbHNbJ3VzZXJuYW1lJ10udmFsdWU7XHJcbiAgICAgICAgY29uc3QgcGFzc3dvcmQgPSB0aGlzLmxvZ2luRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXS52YWx1ZTtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmhhbmRsZVNpZ25Jbih7IHVzZXJuYW1lLCBwYXNzd29yZCB9KTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibWFpblwiPlxyXG4gICAgPCEtLSBMb2FkIGxvZ2luIHBhZ2Ugd2hlbiBhbGwgY29uc3RhbnQgdmFyaWFibGUgYXJlIGludGlhdGVkIG90aGVyd2lzZSBpdCB3aWxsIHNob3cgYSBnbGl0Y2guIHRoYXQncyB3aHkgbmdJZiBjaGVjayBvZiBjb25zdGFudHMuZm9yZ290UGFzc3dvcmQgLS0+XHJcbiAgICA8c2VjdGlvbiAqbmdJZj1cImNvbnN0YW50cy5mb3Jnb3RQYXNzd29yZFwiPlxyXG4gICAgICAgIDxoZWFkZXI+XHJcbiAgICAgICAgICAgIDxpbWcgW25nU3JjXT1cImNvbnN1bWluZ1Byb2plY3RDb25maWdTZXJ2aWNlLmFwcEdlbmVyaWNDb25maWcubG9naW5QYWdlTG9nb0ltZ1VybFwiIHdpZHRoPVwiMTQ1XCIgaGVpZ2h0PVwiNTBcIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiQW5uYSBMb2dvXCIgcHJpb3JpdHkgLz5cclxuICAgICAgICA8L2hlYWRlcj5cclxuICAgICAgICA8YXJ0aWNsZT5cclxuICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJsb2dpbkZvcm1cIiAobmdTdWJtaXQpPVwiT25Mb2dpbigpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYWxlcnQtZGl2XCIgKm5nSWY9XCJhdXRoU2VydmljZS5sb2dpbkVycm9yTWVzc2FnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5yZXBvcnQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+e3sgYXV0aFNlcnZpY2UubG9naW5FcnJvck1lc3NhZ2UgfX08L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiB0YWJpbmRleD1cIjFcIiBmb3JtQ29udHJvbE5hbWU9XCJ1c2VybmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaW5wdXQtaW52YWxpZCc6IGF1dGhTZXJ2aWNlLmxvZ2luRXJyb3JNZXNzYWdlIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb25zdW1pbmdQcm9qZWN0U1NPTG9naW5TZXJ2aWNlPy5pc1Nzb0ludGVncmF0ZWQgPyBjb25zdGFudHMuZW50ZXJVc2VyQ29kZSA6IGNvbnN0YW50cy5lbnRlckVtYWlsXCJcclxuICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJ1c2VybmFtZVwiIGF1dG9mb2N1cyAvPlxyXG5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiB0YWJpbmRleD1cIjJcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXNzd29yZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaW5wdXQtaW52YWxpZCc6IGF1dGhTZXJ2aWNlLmxvZ2luRXJyb3JNZXNzYWdlIH1cIiBbcGxhY2Vob2xkZXJdPVwiY29uc3RhbnRzLnBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJjdXJyZW50LXBhc3N3b3JkXCIgYXV0b2ZvY3VzIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgPGEgdGFiaW5kZXg9XCI0XCIgW3JvdXRlckxpbmtdPVwiY29uc3RhbnRzLmZvcmdvcnRQYXNzd29yZFBhZ2VVcmxcIj57eyBjb25zdGFudHMuZm9yZ290UGFzc3dvcmQgfX08L2E+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHRhYmluZGV4PVwiM1wiIGNsYXNzPVwibG9naW4tYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICBbYW5uYS1jb2duaXRvLWxpYi1TcGlubmVyQnV0dG9uXT1cImF1dGhTZXJ2aWNlLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5pc0xvZ2dpbmdJblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NwaW5uZXJCdXR0b25UZXh0XT1cImNvbnN0YW50cy5sb2dpblwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9hcnRpY2xlPlxyXG4gICAgICAgIDxmb290ZXI+XHJcbiAgICAgICAgICAgIDxhbm5hLWNvZ25pdG8tbGliLXBvd2VyZWQtYnktbG9nby10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9hbm5hLWNvZ25pdG8tbGliLXBvd2VyZWQtYnktbG9nby10ZW1wbGF0ZT5cclxuICAgICAgICA8L2Zvb3Rlcj5cclxuICAgIDwvc2VjdGlvbj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwicGFnZS1mb290ZXJcIj5cclxuICAgIDxhbm5hLWNvZ25pdG8tbGliLXN1cmV3YXZlcy15ZWFyLWxvZ28+PC9hbm5hLWNvZ25pdG8tbGliLXN1cmV3YXZlcy15ZWFyLWxvZ28+XHJcbiAgICA8YW5uYS1jb2duaXRvLWxpYi12ZXJzaW9uLWFuZC10ZXJtLXBvbGljeT48L2FubmEtY29nbml0by1saWItdmVyc2lvbi1hbmQtdGVybS1wb2xpY3k+XHJcbjwvZGl2PiJdfQ==
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1sb2dpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvZ25pdG8tbGliL3NyYy9saWIvY29tcG9uZW50cy9hbm5hLWxvZ2luL2FubmEtbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYW5uYS1sb2dpbi9hbm5hLWxvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRCQUE0QjtBQUM1QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFhLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFGLGlDQUFpQztBQUNqQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLG9CQUFvQixFQUFrQixNQUFNLG1DQUFtQyxDQUFDO0FBQ3pGLE9BQU8sRUFBb0IsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUM3RyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUNoSCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQVNsRSxNQUFNLE9BQU8sa0JBQWtCO0lBSTNCLFlBQ1csV0FBK0IsRUFDOUIsRUFBZSxFQUNjLDZCQUE2QyxFQUMxQywrQkFBaUQ7UUFIbEYsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQzlCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDYyxrQ0FBNkIsR0FBN0IsNkJBQTZCLENBQWdCO1FBQzFDLG9DQUErQixHQUEvQiwrQkFBK0IsQ0FBa0I7SUFDekYsQ0FBQztJQUVMLFFBQVE7UUFDSixJQUFJLENBQUMsV0FBVyxDQUFDLDJCQUEyQixDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDakUsSUFBSSxDQUFDLCtCQUErQixDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUMzQixRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDaEIsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDO1NBQ25CLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ2hFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMzRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDM0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDOytHQTlCUSxrQkFBa0IsK0VBT2Ysb0JBQW9CLGFBQ3BCLHVCQUF1QjttR0FSMUIsa0JBQWtCLHVGQ3ZCL0IsbXVFQXVDTSwrbEdEbEJRLElBQUksNkZBQUUsZ0JBQWdCLDJNQUFFLFdBQVcsMnBCQUFFLG1CQUFtQixnVkFBRSxPQUFPLG9GQUFFLFVBQVUsNE5BQUUsc0JBQXNCLDhJQUFFLDhCQUE4QixzRkFBRSwwQkFBMEIsaUZBQUUsNkJBQTZCOzs0RkFFak0sa0JBQWtCO2tCQVA5QixTQUFTOytCQUNJLDZCQUE2QixjQUczQixJQUFJLFdBQ1AsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsc0JBQXNCLEVBQUUsOEJBQThCLEVBQUUsMEJBQTBCLEVBQUUsNkJBQTZCLENBQUM7OzBCQVN0TSxNQUFNOzJCQUFDLG9CQUFvQjs7MEJBQzNCLE1BQU07MkJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhciBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbi8vIFVzZXIgZGVmaW5lZCBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBMb2dpbkNvbnN0YW50IH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50cy9sb2dpbkNvbnN0YW50XCI7XHJcbmltcG9ydCB7IEFubmFMaWJBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IENPTkZJR19TRVJWSUNFX1RPS0VOLCBJQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbmZpZy9jb25maWctc2VydmljZS50b2tlbic7XHJcbmltcG9ydCB7IElTU09Mb2dpblNlcnZpY2UsIFNTT19MT0dJTl9TRVJWSUNFX1RPS0VOIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9zc28tbG9naW4tc2VydmljZS50b2tlblwiO1xyXG5pbXBvcnQgeyBWZXJzaW9uQW5kVGVybVBvbGljeUNvbXBvbmVudCB9IGZyb20gXCIuLi92ZXJzaW9uLWFuZC10ZXJtLXBvbGljeS92ZXJzaW9uLWFuZC10ZXJtLXBvbGljeS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgU3VyZXdhdmVzWWVhckxvZ29Db21wb25lbnQgfSBmcm9tIFwiLi4vc3VyZXdhdmVzLXllYXItbG9nby9zdXJld2F2ZXMteWVhci1sb2dvLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBQb3dlcmVkQnlMb2dvVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tIFwiLi4vcG93ZXJlZC1ieS1sb2dvLXRlbXBsYXRlL3Bvd2VyZWQtYnktbG9nby10ZW1wbGF0ZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgU3Bpbm5lckJ1dHRvbkRpcmVjdGl2ZSB9IGZyb20gXCIuLi8uLi9kaXJlY3RpdmVzL3NwaW5uZXItYnV0dG9uL3NwaW5uZXItYnV0dG9uLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBSb3V0ZXJMaW5rIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBOZ0lmLCBOZ09wdGltaXplZEltYWdlLCBOZ0NsYXNzIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FubmEtY29nbml0by1saWItYW5uYS1sb2dpbicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYW5uYS1sb2dpbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9hbm5hLWxvZ2luLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW05nSWYsIE5nT3B0aW1pemVkSW1hZ2UsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBOZ0NsYXNzLCBSb3V0ZXJMaW5rLCBTcGlubmVyQnV0dG9uRGlyZWN0aXZlLCBQb3dlcmVkQnlMb2dvVGVtcGxhdGVDb21wb25lbnQsIFN1cmV3YXZlc1llYXJMb2dvQ29tcG9uZW50LCBWZXJzaW9uQW5kVGVybVBvbGljeUNvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFubmFMb2dpbkNvbXBvbmVudCB7XHJcbiAgICBsb2dpbkZvcm06IEZvcm1Hcm91cDtcclxuICAgIGNvbnN0YW50czogdHlwZW9mIExvZ2luQ29uc3RhbnQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIGF1dGhTZXJ2aWNlOiBBbm5hTGliQXV0aFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgICAgQEluamVjdChDT05GSUdfU0VSVklDRV9UT0tFTikgcHVibGljIGNvbnN1bWluZ1Byb2plY3RDb25maWdTZXJ2aWNlOiBJQ29uZmlnU2VydmljZSxcclxuICAgICAgICBASW5qZWN0KFNTT19MT0dJTl9TRVJWSUNFX1RPS0VOKSBwdWJsaWMgY29uc3VtaW5nUHJvamVjdFNTT0xvZ2luU2VydmljZTogSVNTT0xvZ2luU2VydmljZVxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5pc0xvZ2dpbmdJbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdFNTT0xvZ2luU2VydmljZS5sb2dnZWRJblZpYVNzbyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29uc3RhbnRzID0gTG9naW5Db25zdGFudDtcclxuICAgICAgICB0aGlzLm9uSW50aWFsaXNlRm9ybSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uSW50aWFsaXNlRm9ybSgpIHtcclxuICAgICAgICB0aGlzLmxvZ2luRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICB1c2VybmFtZTogW251bGxdLFxyXG4gICAgICAgICAgICBwYXNzd29yZDogW251bGxdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIE9uTG9naW4oKSB7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuaXNMb2dnaW5nSW4gPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IHVzZXJuYW1lID0gdGhpcy5sb2dpbkZvcm0uY29udHJvbHNbJ3VzZXJuYW1lJ10udmFsdWU7XHJcbiAgICAgICAgY29uc3QgcGFzc3dvcmQgPSB0aGlzLmxvZ2luRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXS52YWx1ZTtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmhhbmRsZVNpZ25Jbih7IHVzZXJuYW1lLCBwYXNzd29yZCB9KTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibWFpblwiPlxyXG4gICAgPCEtLSBMb2FkIGxvZ2luIHBhZ2Ugd2hlbiBhbGwgY29uc3RhbnQgdmFyaWFibGUgYXJlIGludGlhdGVkIG90aGVyd2lzZSBpdCB3aWxsIHNob3cgYSBnbGl0Y2guIHRoYXQncyB3aHkgbmdJZiBjaGVjayBvZiBjb25zdGFudHMuZm9yZ290UGFzc3dvcmQgLS0+XHJcbiAgICA8c2VjdGlvbiAqbmdJZj1cImNvbnN0YW50cy5mb3Jnb3RQYXNzd29yZFwiPlxyXG4gICAgICAgIDxoZWFkZXI+XHJcbiAgICAgICAgICAgIDxpbWcgW25nU3JjXT1cImNvbnN1bWluZ1Byb2plY3RDb25maWdTZXJ2aWNlLmFwcEdlbmVyaWNDb25maWcubG9naW5QYWdlTG9nb0ltZ1VybFwiIHdpZHRoPVwiMTQ1XCIgaGVpZ2h0PVwiNTBcIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiQW5uYSBMb2dvXCIgcHJpb3JpdHkgLz5cclxuICAgICAgICA8L2hlYWRlcj5cclxuICAgICAgICA8YXJ0aWNsZT5cclxuICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJsb2dpbkZvcm1cIiAobmdTdWJtaXQpPVwiT25Mb2dpbigpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYWxlcnQtZGl2XCIgKm5nSWY9XCJhdXRoU2VydmljZS5sb2dpbkVycm9yTWVzc2FnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5yZXBvcnQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+e3sgYXV0aFNlcnZpY2UubG9naW5FcnJvck1lc3NhZ2UgfX08L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiB0YWJpbmRleD1cIjFcIiBmb3JtQ29udHJvbE5hbWU9XCJ1c2VybmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaW5wdXQtaW52YWxpZCc6IGF1dGhTZXJ2aWNlLmxvZ2luRXJyb3JNZXNzYWdlIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb25zdW1pbmdQcm9qZWN0U1NPTG9naW5TZXJ2aWNlPy5pc1Nzb0ludGVncmF0ZWQgPyBjb25zdGFudHMuZW50ZXJVc2VyQ29kZSA6IGNvbnN0YW50cy5lbnRlckVtYWlsXCJcclxuICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJ1c2VybmFtZVwiIGF1dG9mb2N1cyAvPlxyXG5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiB0YWJpbmRleD1cIjJcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXNzd29yZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaW5wdXQtaW52YWxpZCc6IGF1dGhTZXJ2aWNlLmxvZ2luRXJyb3JNZXNzYWdlIH1cIiBbcGxhY2Vob2xkZXJdPVwiY29uc3RhbnRzLnBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJjdXJyZW50LXBhc3N3b3JkXCIgYXV0b2ZvY3VzIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgPGEgdGFiaW5kZXg9XCI0XCIgW3JvdXRlckxpbmtdPVwiY29uc3RhbnRzLmZvcmdvcnRQYXNzd29yZFBhZ2VVcmxcIj57eyBjb25zdGFudHMuZm9yZ290UGFzc3dvcmQgfX08L2E+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHRhYmluZGV4PVwiM1wiIGNsYXNzPVwibG9naW4tYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICBbYW5uYS1jb2duaXRvLWxpYi1TcGlubmVyQnV0dG9uXT1cImF1dGhTZXJ2aWNlLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5pc0xvZ2dpbmdJblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NwaW5uZXJCdXR0b25UZXh0XT1cImNvbnN0YW50cy5sb2dpblwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9hcnRpY2xlPlxyXG4gICAgICAgIDxmb290ZXI+XHJcbiAgICAgICAgICAgIDxhbm5hLWNvZ25pdG8tbGliLXBvd2VyZWQtYnktbG9nby10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9hbm5hLWNvZ25pdG8tbGliLXBvd2VyZWQtYnktbG9nby10ZW1wbGF0ZT5cclxuICAgICAgICA8L2Zvb3Rlcj5cclxuICAgIDwvc2VjdGlvbj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwicGFnZS1mb290ZXJcIj5cclxuICAgIDxhbm5hLWNvZ25pdG8tbGliLXN1cmV3YXZlcy15ZWFyLWxvZ28+PC9hbm5hLWNvZ25pdG8tbGliLXN1cmV3YXZlcy15ZWFyLWxvZ28+XHJcbiAgICA8YW5uYS1jb2duaXRvLWxpYi12ZXJzaW9uLWFuZC10ZXJtLXBvbGljeT48L2FubmEtY29nbml0by1saWItdmVyc2lvbi1hbmQtdGVybS1wb2xpY3k+XHJcbjwvZGl2PiJdfQ==
@@ -42,7 +42,7 @@ export class AnnaLibAuthService {
42
42
  }
43
43
  else {
44
44
  this.toastr.error(LoginConstant.sessionExpiredError);
45
- this.sessionTimeout();
45
+ this.handleSignOut();
46
46
  resolve(false);
47
47
  }
48
48
  });
@@ -161,12 +161,12 @@ export class AnnaLibAuthService {
161
161
  }
162
162
  else {
163
163
  this.toastr.error(LoginConstant.sessionExpiredError);
164
- this.sessionTimeout();
164
+ this.handleSignOut();
165
165
  }
166
166
  }
167
167
  catch (error) {
168
168
  this.toastr.error(LoginConstant.sessionExpiredError);
169
- this.sessionTimeout();
169
+ this.handleSignOut();
170
170
  }
171
171
  }, counter);
172
172
  }, expTime);
@@ -253,6 +253,7 @@ export class AnnaLibAuthService {
253
253
  async handleSignOut() {
254
254
  try {
255
255
  await signOut({ global: false });
256
+ this.sessionTimeout();
256
257
  }
257
258
  catch (error) {
258
259
  console.log('error signing out: ', error);
@@ -303,4 +304,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
303
304
  type: Inject,
304
305
  args: [AUTH_SERVICE_TOKEN]
305
306
  }] }]; } });
306
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL3NlcnZpY2VzL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxnQ0FBZ0M7QUFDaEMsT0FBTyxFQUNzQixvQkFBb0IsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQzlFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFDakQsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTNDLGlDQUFpQztBQUNqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQWdCLE1BQU0sOEJBQThCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQW9CLHVCQUF1QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7OztBQUs5RixNQUFNLE9BQU8sa0JBQWtCO0lBWTNCLFlBQ1ksTUFBYyxFQUNmLFVBQTZCLEVBQzdCLFVBQXNCLEVBQ3JCLE1BQXFCLEVBQ1csK0JBQWlELEVBQ3RELDJCQUF5QztRQUxwRSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2YsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFDN0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ1csb0NBQStCLEdBQS9CLCtCQUEr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dWxhciBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuXHJcbi8vIFRoaXJkIHBhcnR5IGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7XHJcbiAgICBBdXRoVG9rZW5zLCBTaWduSW5JbnB1dCwgY29uZmlybVJlc2V0UGFzc3dvcmQsIGNvbmZpcm1TaWduSW4sIGZldGNoQXV0aFNlc3Npb24sXHJcbiAgICBnZXRDdXJyZW50VXNlciwgcmVzZXRQYXNzd29yZCwgc2lnbkluLCBzaWduT3V0XHJcbn0gZnJvbSBcImF3cy1hbXBsaWZ5L2F1dGhcIjtcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5cclxuLy8gVXNlciBkZWZpbmVkIGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IEFVVEhfU0VSVklDRV9UT0tFTiwgSUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vY29uZmlnL2F1dGgtc2VydmljZS50b2tlbic7XHJcbmltcG9ydCB7IExvZ2luQ29uc3RhbnQgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2xvZ2luQ29uc3RhbnRcIjtcclxuaW1wb3J0IHsgQW5uYUxpYkFjbFNlcnZpY2UgfSBmcm9tICcuL2FjbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSVNTT0xvZ2luU2VydmljZSwgU1NPX0xPR0lOX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuLi9jb25maWcvc3NvLWxvZ2luLXNlcnZpY2UudG9rZW4nO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbm5hTGliQXV0aFNlcnZpY2Uge1xyXG4gICAgbG9naW5FcnJvck1lc3NhZ2U6IHN0cmluZyB8IG51bGw7XHJcbiAgICBzZXROZXdQYXNzd29yZEVycm9yTWVzc2FnZTogc3RyaW5nO1xyXG4gICAgc2V0TmV3UGFzc3dvcmRCdXR0b25NZXNzYWdlOiBzdHJpbmc7XHJcbiAgICB2ZXJpZnlBbmRTZXROZXdQYXNzd29yZEVycm9yTWVzc2FnZTogc3RyaW5nO1xyXG4gICAgdmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRNZXNzYWdlOiBzdHJpbmc7XHJcbiAgICB2ZXJpZnlBbmRTZXROZXdQYXNzd29yZEJ1dHRvbjogc3RyaW5nO1xyXG4gICAgbm9PZkF0dGVtcHRzID0gMDtcclxuICAgIHNlc3Npb25Mb2NrZWQgPSBmYWxzZTtcclxuICAgIGFjY2Vzc1Rva2VuVGltZXJJZDogYW55O1xyXG4gICAgZm9yZ290UGFzc3dvcmRBbmRHbG9iYWxTaWdub3V0TG9hZGVyOiBib29sZWFuO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgcHVibGljIGFjbFNlcnZpY2U6IEFubmFMaWJBY2xTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxyXG4gICAgICAgIEBJbmplY3QoU1NPX0xPR0lOX1NFUlZJQ0VfVE9LRU4pIHB1YmxpYyBjb25zdW1pbmdQcm9qZWN0U1NPTG9naW5TZXJ2aWNlOiBJU1NPTG9naW5TZXJ2aWNlLFxyXG4gICAgICAgIEBJbmplY3QoQVVUSF9TRVJWSUNFX1RPS0VOKSBwdWJsaWMgY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlOiBJQXV0aFNlcnZpY2UpIHtcclxuICAgICAgICBpZiAoIWNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBtdXN0IHByb3ZpZGUgYSBhdXRoU2VydmljZScpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHsgfVxyXG5cclxuICAgIGFzeW5jIGlzVXNlckxvZ2dlZEluKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIGF3YWl0IGdldEN1cnJlbnRVc2VyKCk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzZXNzaW9uOiBhbnkgPSBhd2FpdCBmZXRjaEF1dGhTZXNzaW9uKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2Vzc2lvbj8udG9rZW5zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuSWRUb2tlbiA9IHNlc3Npb24/LnRva2Vucy5pZFRva2VuLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuZ2V0QWxsQ29nbml0b1Rva2VuQW5kR3JvdXBzKHNlc3Npb24udG9rZW5zKTtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihMb2dpbkNvbnN0YW50LnNlc3Npb25FeHBpcmVkRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblRpbWVvdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuYWNjZXNzVG9rZW5UaW1lcklkKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2Vzc2lvblRpbWVvdXQoKSB7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmFjY2Vzc1Rva2VuVGltZXJJZCk7XHJcbiAgICAgICAgbGV0IGFmdGVyTG9nb3V0UmVkaXJlY3RUbzogc3RyaW5nO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnN1bWluZ1Byb2plY3RTU09Mb2dpblNlcnZpY2UuaXNTc29JbnRlZ3JhdGVkICYmICF0aGlzLmNvbnN1bWluZ1Byb2plY3RTU09Mb2dpblNlcnZpY2UubG9nZ2VkSW5WaWFTc28pIHtcclxuICAgICAgICAgICAgYWZ0ZXJMb2dvdXRSZWRpcmVjdFRvID0gTG9naW5Db25zdGFudC5jb1BpbG90bG9naW5QYWdlVXJsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgYWZ0ZXJMb2dvdXRSZWRpcmVjdFRvID0gTG9naW5Db25zdGFudC5sb2dpblBhZ2VVcmw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFthZnRlckxvZ291dFJlZGlyZWN0VG9dKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wdXRlVG9rZW5FeHBpcmF0aW9uKGlkVG9rZW46IGFueSkge1xyXG4gICAgICAgIGxldCBjdXJyZW50VGltZSA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApO1xyXG4gICAgICAgIGxldCB0b2tlblRpbWUgPSBpZFRva2VuLnBheWxvYWQuZXhwO1xyXG4gICAgICAgIGxldCBleHBUaW1lID0gKHRva2VuVGltZSAtIGN1cnJlbnRUaW1lKSAqIDEwMDA7XHJcbiAgICAgICAgcmV0dXJuIGV4cFRpbWU7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaGFuZGxlU2lnbkluKHsgdXNlcm5hbWUsIHBhc3N3b3JkIH06IFNpZ25JbklucHV0KSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbGV0IHNlc3Npb24gPSBhd2FpdCBmZXRjaEF1dGhTZXNzaW9uKCk7XHJcbiAgICAgICAgICAgIGlmIChzZXNzaW9uPy50b2tlbnMpIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlU2lnbk91dCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHsgaXNTaWduZWRJbiwgbmV4dFN0ZXAgfSA9IGF3YWl0IHNpZ25Jbih7IHVzZXJuYW1lLCBwYXNzd29yZCB9KTtcclxuICAgICAgICAgICAgc3dpdGNoIChuZXh0U3RlcD8uc2lnbkluU3RlcCkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcIkRPTkVcIjpcclxuICAgICAgICAgICAgICAgICAgICBsZXQgc2Vzc2lvbiA9IGF3YWl0IGZldGNoQXV0aFNlc3Npb24oKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTG9naW5PclNldE5ld1Bhc3N3b3JkKHNlc3Npb24pO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLm9uU3VjY2Vzc2Z1bEF1dGhlbnRpY2F0aW5nVXNlcihmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuZ2V0QWxsQ29nbml0b1Rva2VuQW5kR3JvdXBzKHNlc3Npb24udG9rZW5zKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hBY2Nlc3NUb2tlbigpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgXCJDT05GSVJNX1NJR05fSU5fV0lUSF9ORVdfUEFTU1dPUkRfUkVRVUlSRURcIjpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5pc0xvZ2dpbmdJbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLnVzZXJOYW1lID0gdXNlcm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0xvZ2luQ29uc3RhbnQuc2V0TmV3UGFzc3dvcmRVcmxdKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldE5ld1Bhc3N3b3JkRXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiUkVTRVRfUEFTU1dPUkRcIjpcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5pc0xvZ2dpbmdJbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAoZXJyb3I/Lm1lc3NhZ2UgPT0gTG9naW5Db25zdGFudC50ZW1wUGFzc3dvcmRFeHBpcnlFcnJvcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dpbkVycm9yTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQudGVtcFBhc3N3b3JkT25FeHBpcnlFcnJvck1zZztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLnNlbmRSZWdlbmVyYXRpb25FbWFpbCh1c2VybmFtZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXJyb3I/Lm1lc3NhZ2UgPT09IFwiUGFzc3dvcmQgYXR0ZW1wdHMgZXhjZWVkZWRcIikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dpbkVycm9yTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQuYXR0ZW1wdExpbWl0RXhjZWVkZWQ7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2luRXJyb3JNZXNzYWdlID0gdGhpcy5jb25zdW1pbmdQcm9qZWN0U1NPTG9naW5TZXJ2aWNlLmlzU3NvSW50ZWdyYXRlZCA/XHJcbiAgICAgICAgICAgICAgICAgICAgTG9naW5Db25zdGFudC51c2VyQ29kZVBhc3N3b3JkSW5jb3JyZWN0IDogTG9naW5Db25zdGFudC51c2VyTmFtZVBhc3N3b3JkSW5jb3JyZWN0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uTG9naW5PclNldE5ld1Bhc3N3b3JkKHNlc3Npb246IGFueSkge1xyXG4gICAgICAgIGxldCBuZXdFeHBUaW1lID0gdGhpcy5jb21wdXRlVG9rZW5FeHBpcmF0aW9uKHNlc3Npb24udG9rZW5zLmlkVG9rZW4pO1xyXG4gICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLmFjY2Vzc1Rva2VuID0gc2Vzc2lvbi50b2tlbnMuYWNjZXNzVG9rZW4udG9TdHJpbmcoKTtcclxuICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5JZFRva2VuID0gc2Vzc2lvbi50b2tlbnMuaWRUb2tlbi50b1N0cmluZygpO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiYWNjZXNzVG9rZW5FeHBpcmF0aW9uXCIsIG5ld0V4cFRpbWUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQWNjZXNzVG9rZW4oKTtcclxuICAgICAgICB0aGlzLmxvZ2luRXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBzZXRBY2Nlc3NBbmRJRFRva2Vucyh0b2tlbjogQXV0aFRva2Vucykge1xyXG4gICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLmFjY2Vzc1Rva2VuID0gdG9rZW4/LmFjY2Vzc1Rva2VuPy50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLklkVG9rZW4gPSB0b2tlbj8uaWRUb2tlbjtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRBbGxDb2duaXRvVG9rZW5BbmRHcm91cHModG9rZW46IEF1dGhUb2tlbnMpIHtcclxuICAgICAgICB0aGlzLnNldEFjY2Vzc0FuZElEVG9rZW5zKHRva2VuKTtcclxuICAgICAgICBpZiAoXCJjb2duaXRvOmdyb3Vwc1wiIGluIHRva2VuLmFjY2Vzc1Rva2VuLnBheWxvYWQpIHtcclxuICAgICAgICAgICAgbGV0IHVzZXJHcm91cHNJbkNvZ25pdG9KV1Q6IGFueSA9IHRva2VuLmFjY2Vzc1Rva2VuLnBheWxvYWRbXCJjb2duaXRvOmdyb3Vwc1wiXTtcclxuICAgICAgICAgICAgdGhpcy5hY2xTZXJ2aWNlLnVzZXJHcm91cHNJbkNvZ25pdG9KV1QgPSB1c2VyR3JvdXBzSW5Db2duaXRvSldUO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWNsU2VydmljZS51c2VyR3JvdXBzSW5Db2duaXRvSldUID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlZnJlc2hBY2Nlc3NUb2tlbigpIHtcclxuICAgICAgICBsZXQgYWNjZXNzVG9rZW5FeHBpcmF0aW9uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJhY2Nlc3NUb2tlbkV4cGlyYXRpb25cIik7XHJcbiAgICAgICAgbGV0IGV4cFRpbWUgPSBhY2Nlc3NUb2tlbkV4cGlyYXRpb24gPyBwYXJzZUludChhY2Nlc3NUb2tlbkV4cGlyYXRpb24pIDogMDtcclxuICAgICAgICB0aGlzLmFjY2Vzc1Rva2VuVGltZXJJZCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgbGV0IGNvdW50ZXIgPSAxMDAwO1xyXG4gICAgICAgICAgICBsZXQgZGVsYXlGdW5jdGlvbiA9IHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgc2Vzc2lvbiA9IGF3YWl0IGZldGNoQXV0aFNlc3Npb24oKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdG9rZW4gPSBzZXNzaW9uLnRva2VucztcclxuICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuZ2V0QWxsQ29nbml0b1Rva2VuQW5kR3JvdXBzKHRva2VuKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld0V4cFRpbWUgPSB0aGlzLmNvbXB1dGVUb2tlbkV4cGlyYXRpb24odGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuSWRUb2tlbik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3RXhwVGltZSA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdFeHBUaW1lID0gMTAwMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlbGF5RnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGRlbGF5RnVuY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cFRpbWUgPSBuZXdFeHBUaW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImFjY2Vzc1Rva2VuRXhwaXJhdGlvblwiLCBuZXdFeHBUaW1lLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuYWNjZXNzVG9rZW5UaW1lcklkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoQWNjZXNzVG9rZW4oKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihMb2dpbkNvbnN0YW50LnNlc3Npb25FeHBpcmVkRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25UaW1lb3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihMb2dpbkNvbnN0YW50LnNlc3Npb25FeHBpcmVkRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblRpbWVvdXQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgY291bnRlcik7XHJcbiAgICAgICAgfSwgZXhwVGltZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2hhbmdlUGFzc3dvcmQobmV3UGFzc3dvcmQ6IHN0cmluZykge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGxldCBpbnB1dFBhcmFtID0ge1xyXG4gICAgICAgICAgICAgICAgY2hhbGxlbmdlUmVzcG9uc2U6IG5ld1Bhc3N3b3JkLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBjb25maXJtU2lnbkluKGlucHV0UGFyYW0pO1xyXG4gICAgICAgICAgICBjb25zdCB7IHVzZXJuYW1lIH0gPSBhd2FpdCBnZXRDdXJyZW50VXNlcigpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgICAgICAgbGV0IHNlc3Npb24gPSBhd2FpdCBmZXRjaEF1dGhTZXNzaW9uKCk7XHJcbiAgICAgICAgICAgIHRoaXMub25Mb2dpbk9yU2V0TmV3UGFzc3dvcmQoc2Vzc2lvbik7XHJcbiAgICAgICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLm9uUGFzc3dvcmRVcGRhdGUodXNlcm5hbWUpO1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbTG9naW5Db25zdGFudC5sb2dpblBhZ2VVcmxdKTtcclxuICAgICAgICAgICAgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UubmV3UGFzc3dvcmRTZXRUaGVuVXBkYXRlVG9CYWNrZW5kKHVzZXJuYW1lKTtcclxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICAgICAgdGhpcy5zZXROZXdQYXNzd29yZEVycm9yTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQuc2Vzc2lvbkV4cGlyZWQ7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TmV3UGFzc3dvcmRCdXR0b25NZXNzYWdlID0gTG9naW5Db25zdGFudC5sb2dpbkFnYWluO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBvbkZvcmdvdFBhc3N3b3JkR2VuZXJhdGVPVFAoZW1haWw6IHN0cmluZykge1xyXG4gICAgICAgIGxldCB1c2VybmFtZSA9IGVtYWlsO1xyXG4gICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLnVzZXJOYW1lID0gZW1haWw7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbGV0IHJlc3VsdDogYW55ID0gYXdhaXQgcmVzZXRQYXNzd29yZCh7IHVzZXJuYW1lIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkTWVzc2FnZSA9XHJcbiAgICAgICAgICAgICAgICBMb2dpbkNvbnN0YW50LnZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkTWVzc2FnZSArXHJcbiAgICAgICAgICAgICAgICByZXN1bHQ/Lm5leHRTdGVwPy5jb2RlRGVsaXZlcnlEZXRhaWxzPy5kZXN0aW5hdGlvbiArXHJcbiAgICAgICAgICAgICAgICBMb2dpbkNvbnN0YW50LnBsZWFzZUVudGVySXRCZWxvdztcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0xvZ2luQ29uc3RhbnQudmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRVcmxdKTtcclxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdmVyaWZ5Q29kZShjb25maXJtYXRpb25Db2RlOiBzdHJpbmcsIG5ld1Bhc3N3b3JkOiBzdHJpbmcpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25maXJtUmVzZXRQYXNzd29yZCh7IHVzZXJuYW1lOiB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS51c2VyTmFtZSwgbmV3UGFzc3dvcmQ6IG5ld1Bhc3N3b3JkLCBjb25maXJtYXRpb25Db2RlOiBjb25maXJtYXRpb25Db2RlIH0pLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cGlyeUFsbEV4aXN0aW5nQ3VycmVudFNlc3Npb24odGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UudXNlck5hbWUsIG5ld1Bhc3N3b3JkKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub09mQXR0ZW1wdHMgPSB0aGlzLm5vT2ZBdHRlbXB0cyArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52ZXJpZnlBbmRTZXROZXdQYXNzd29yZEVycm9yTWVzc2FnZSA9IHRoaXMuZm9yZ290UGFzc3dvcmRFcnJvcihlcnIsIHRoaXMubm9PZkF0dGVtcHRzKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICB0aGlzLm5vT2ZBdHRlbXB0cyA9IHRoaXMubm9PZkF0dGVtcHRzICsgMTtcclxuICAgICAgICAgICAgdGhpcy52ZXJpZnlBbmRTZXROZXdQYXNzd29yZEVycm9yTWVzc2FnZSA9IHRoaXMuZm9yZ290UGFzc3dvcmRFcnJvcihlcnIsIHRoaXMubm9PZkF0dGVtcHRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9yZ290UGFzc3dvcmRBbmRHbG9iYWxTaWdub3V0TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvcmdvdFBhc3N3b3JkRXJyb3IoZXJyOiBhbnksIG5vT2ZBdHRlbXB0czogbnVtYmVyKSB7XHJcbiAgICAgICAgbGV0IGVycm9yTWVzc2FnZSA9ICcnO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycilcclxuICAgICAgICBsZXQgZXJyb3JUaHJvd24gPSBKU09OLnN0cmluZ2lmeShlcnIpO1xyXG4gICAgICAgIGlmIChlcnJvclRocm93bi5pbmNsdWRlcyhcIkxpbWl0RXhjZWVkZWRFeGNlcHRpb25cIikpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXNzaW9uTG9ja2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gTG9naW5Db25zdGFudC5hdHRlbXB0TGltaXRFeGNlZWRlZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZXJyb3JUaHJvd24uaW5jbHVkZXMoXCJFeHBpcmVkQ29kZUV4Y2VwdGlvblwiKSkge1xyXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBMb2dpbkNvbnN0YW50LnNlc3Npb25FeHBpcmVkO1xyXG4gICAgICAgICAgICB0aGlzLnZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkQnV0dG9uID0gTG9naW5Db25zdGFudC5yZWdlbmVyYXRlT3RwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gTG9naW5Db25zdGFudC5hdHRlbXB0ICsgXCIgXCIgKyBub09mQXR0ZW1wdHMgKyBMb2dpbkNvbnN0YW50LmF0dGVtcHRNZXNzYWdlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZXJyb3JNZXNzYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNpZ25JbldpdGhTU08oKSB7XHJcbiAgICAgICAgbGV0IHNlc3Npb24gPSBhd2FpdCBmZXRjaEF1dGhTZXNzaW9uKCk7XHJcbiAgICAgICAgaWYgKHNlc3Npb24/LnRva2Vucykge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVNpZ25PdXQoKS50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLnNpZ25JbldpdGhTU08oKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2Uuc2lnbkluV2l0aFNTTygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBoYW5kbGVTaWduT3V0KCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHNpZ25PdXQoeyBnbG9iYWw6IGZhbHNlIH0pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlcnJvciBzaWduaW5nIG91dDogJywgZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBpcnlBbGxFeGlzdGluZ0N1cnJlbnRTZXNzaW9uKHVzZXJuYW1lOiBzdHJpbmcsIG5ld1Bhc3N3b3JkOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmxvZ2luRXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgICAgICB0aGlzLm9uTG9naW5JbkNvZ250aW9Ub0dldEFjY2Vzc1Rva2VuKHVzZXJuYW1lLCBuZXdQYXNzd29yZCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgb25Mb2dpbkluQ29nbnRpb1RvR2V0QWNjZXNzVG9rZW4odXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZykge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgbmV4dFN0ZXAgfSA9IGF3YWl0IHNpZ25Jbih7IHVzZXJuYW1lLCBwYXNzd29yZCB9KTtcclxuICAgICAgICAgICAgc3dpdGNoIChuZXh0U3RlcD8uc2lnbkluU3RlcCkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcIkRPTkVcIjpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEFjY2Vzc0FuZElEVG9rZW5zKGF3YWl0IChhd2FpdCBmZXRjaEF1dGhTZXNzaW9uKCkpLnRva2Vucyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2Uub25QYXNzd29yZFVwZGF0ZSh0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS51c2VyTmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNhbGxHbG9iYWxTaWdub3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgICAgIHRoaXMubm9PZkF0dGVtcHRzID0gdGhpcy5ub09mQXR0ZW1wdHMgKyAxO1xyXG4gICAgICAgICAgICB0aGlzLnZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkRXJyb3JNZXNzYWdlID0gdGhpcy5mb3Jnb3RQYXNzd29yZEVycm9yKGVycm9yLCB0aGlzLm5vT2ZBdHRlbXB0cyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG9uQ2FsbEdsb2JhbFNpZ25vdXQoKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgc2lnbk91dCh7IGdsb2JhbDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgdGhpcy5mb3Jnb3RQYXNzd29yZEFuZEdsb2JhbFNpZ25vdXRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0xvZ2luQ29uc3RhbnQubG9naW5QYWdlVXJsXSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yIHNpZ25pbmcgb3V0OiAnLCBlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
307
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL3NlcnZpY2VzL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxnQ0FBZ0M7QUFDaEMsT0FBTyxFQUNzQixvQkFBb0IsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQzlFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFDakQsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTNDLGlDQUFpQztBQUNqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQWdCLE1BQU0sOEJBQThCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQW9CLHVCQUF1QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7OztBQUs5RixNQUFNLE9BQU8sa0JBQWtCO0lBWTNCLFlBQ1ksTUFBYyxFQUNmLFVBQTZCLEVBQzdCLFVBQXNCLEVBQ3JCLE1BQXFCLEVBQ1csK0JBQWlELEVBQ3RELDJCQUF5QztRQUxwRSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2YsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFDN0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ1csb0NBQStCLEdBQS9CLCtCQUEr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QUFrQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXIgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcblxyXG4vLyBUaGlyZCBwYXJ0eSBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQge1xyXG4gICAgQXV0aFRva2VucywgU2lnbkluSW5wdXQsIGNvbmZpcm1SZXNldFBhc3N3b3JkLCBjb25maXJtU2lnbkluLCBmZXRjaEF1dGhTZXNzaW9uLFxyXG4gICAgZ2V0Q3VycmVudFVzZXIsIHJlc2V0UGFzc3dvcmQsIHNpZ25Jbiwgc2lnbk91dFxyXG59IGZyb20gXCJhd3MtYW1wbGlmeS9hdXRoXCI7XHJcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcclxuXHJcbi8vIFVzZXIgZGVmaW5lZCBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBBVVRIX1NFUlZJQ0VfVE9LRU4sIElBdXRoU2VydmljZSB9IGZyb20gJy4uL2NvbmZpZy9hdXRoLXNlcnZpY2UudG9rZW4nO1xyXG5pbXBvcnQgeyBMb2dpbkNvbnN0YW50IH0gZnJvbSBcIi4uL2NvbnN0YW50cy9sb2dpbkNvbnN0YW50XCI7XHJcbmltcG9ydCB7IEFubmFMaWJBY2xTZXJ2aWNlIH0gZnJvbSAnLi9hY2wuc2VydmljZSc7XHJcbmltcG9ydCB7IElTU09Mb2dpblNlcnZpY2UsIFNTT19MT0dJTl9TRVJWSUNFX1RPS0VOIH0gZnJvbSAnLi4vY29uZmlnL3Nzby1sb2dpbi1zZXJ2aWNlLnRva2VuJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5uYUxpYkF1dGhTZXJ2aWNlIHtcclxuICAgIGxvZ2luRXJyb3JNZXNzYWdlOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgc2V0TmV3UGFzc3dvcmRFcnJvck1lc3NhZ2U6IHN0cmluZztcclxuICAgIHNldE5ld1Bhc3N3b3JkQnV0dG9uTWVzc2FnZTogc3RyaW5nO1xyXG4gICAgdmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRFcnJvck1lc3NhZ2U6IHN0cmluZztcclxuICAgIHZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkTWVzc2FnZTogc3RyaW5nO1xyXG4gICAgdmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRCdXR0b246IHN0cmluZztcclxuICAgIG5vT2ZBdHRlbXB0cyA9IDA7XHJcbiAgICBzZXNzaW9uTG9ja2VkID0gZmFsc2U7XHJcbiAgICBhY2Nlc3NUb2tlblRpbWVySWQ6IGFueTtcclxuICAgIGZvcmdvdFBhc3N3b3JkQW5kR2xvYmFsU2lnbm91dExvYWRlcjogYm9vbGVhbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHB1YmxpYyBhY2xTZXJ2aWNlOiBBbm5hTGliQWNsU2VydmljZSxcclxuICAgICAgICBwdWJsaWMgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuICAgICAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcclxuICAgICAgICBASW5qZWN0KFNTT19MT0dJTl9TRVJWSUNFX1RPS0VOKSBwdWJsaWMgY29uc3VtaW5nUHJvamVjdFNTT0xvZ2luU2VydmljZTogSVNTT0xvZ2luU2VydmljZSxcclxuICAgICAgICBASW5qZWN0KEFVVEhfU0VSVklDRV9UT0tFTikgcHVibGljIGNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZTogSUF1dGhTZXJ2aWNlKSB7XHJcbiAgICAgICAgaWYgKCFjb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbXVzdCBwcm92aWRlIGEgYXV0aFNlcnZpY2UnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7IH1cclxuXHJcbiAgICBhc3luYyBpc1VzZXJMb2dnZWRJbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAvLyBhd2FpdCBnZXRDdXJyZW50VXNlcigpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc2Vzc2lvbjogYW55ID0gYXdhaXQgZmV0Y2hBdXRoU2Vzc2lvbigpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNlc3Npb24/LnRva2Vucykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLklkVG9rZW4gPSBzZXNzaW9uPy50b2tlbnMuaWRUb2tlbi50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLmdldEFsbENvZ25pdG9Ub2tlbkFuZEdyb3VwcyhzZXNzaW9uLnRva2Vucyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoTG9naW5Db25zdGFudC5zZXNzaW9uRXhwaXJlZEVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNpZ25PdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuYWNjZXNzVG9rZW5UaW1lcklkKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2Vzc2lvblRpbWVvdXQoKSB7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmFjY2Vzc1Rva2VuVGltZXJJZCk7XHJcbiAgICAgICAgbGV0IGFmdGVyTG9nb3V0UmVkaXJlY3RUbzogc3RyaW5nO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnN1bWluZ1Byb2plY3RTU09Mb2dpblNlcnZpY2UuaXNTc29JbnRlZ3JhdGVkICYmICF0aGlzLmNvbnN1bWluZ1Byb2plY3RTU09Mb2dpblNlcnZpY2UubG9nZ2VkSW5WaWFTc28pIHtcclxuICAgICAgICAgICAgYWZ0ZXJMb2dvdXRSZWRpcmVjdFRvID0gTG9naW5Db25zdGFudC5jb1BpbG90bG9naW5QYWdlVXJsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgYWZ0ZXJMb2dvdXRSZWRpcmVjdFRvID0gTG9naW5Db25zdGFudC5sb2dpblBhZ2VVcmw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFthZnRlckxvZ291dFJlZGlyZWN0VG9dKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wdXRlVG9rZW5FeHBpcmF0aW9uKGlkVG9rZW46IGFueSkge1xyXG4gICAgICAgIGxldCBjdXJyZW50VGltZSA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApO1xyXG4gICAgICAgIGxldCB0b2tlblRpbWUgPSBpZFRva2VuLnBheWxvYWQuZXhwO1xyXG4gICAgICAgIGxldCBleHBUaW1lID0gKHRva2VuVGltZSAtIGN1cnJlbnRUaW1lKSAqIDEwMDA7XHJcbiAgICAgICAgcmV0dXJuIGV4cFRpbWU7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaGFuZGxlU2lnbkluKHsgdXNlcm5hbWUsIHBhc3N3b3JkIH06IFNpZ25JbklucHV0KSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbGV0IHNlc3Npb24gPSBhd2FpdCBmZXRjaEF1dGhTZXNzaW9uKCk7XHJcbiAgICAgICAgICAgIGlmIChzZXNzaW9uPy50b2tlbnMpIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlU2lnbk91dCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHsgaXNTaWduZWRJbiwgbmV4dFN0ZXAgfSA9IGF3YWl0IHNpZ25Jbih7IHVzZXJuYW1lLCBwYXNzd29yZCB9KTtcclxuICAgICAgICAgICAgc3dpdGNoIChuZXh0U3RlcD8uc2lnbkluU3RlcCkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcIkRPTkVcIjpcclxuICAgICAgICAgICAgICAgICAgICBsZXQgc2Vzc2lvbiA9IGF3YWl0IGZldGNoQXV0aFNlc3Npb24oKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTG9naW5PclNldE5ld1Bhc3N3b3JkKHNlc3Npb24pO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLm9uU3VjY2Vzc2Z1bEF1dGhlbnRpY2F0aW5nVXNlcihmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuZ2V0QWxsQ29nbml0b1Rva2VuQW5kR3JvdXBzKHNlc3Npb24udG9rZW5zKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hBY2Nlc3NUb2tlbigpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgXCJDT05GSVJNX1NJR05fSU5fV0lUSF9ORVdfUEFTU1dPUkRfUkVRVUlSRURcIjpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5pc0xvZ2dpbmdJbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLnVzZXJOYW1lID0gdXNlcm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0xvZ2luQ29uc3RhbnQuc2V0TmV3UGFzc3dvcmRVcmxdKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldE5ld1Bhc3N3b3JkRXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiUkVTRVRfUEFTU1dPUkRcIjpcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5pc0xvZ2dpbmdJbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAoZXJyb3I/Lm1lc3NhZ2UgPT0gTG9naW5Db25zdGFudC50ZW1wUGFzc3dvcmRFeHBpcnlFcnJvcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dpbkVycm9yTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQudGVtcFBhc3N3b3JkT25FeHBpcnlFcnJvck1zZztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLnNlbmRSZWdlbmVyYXRpb25FbWFpbCh1c2VybmFtZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXJyb3I/Lm1lc3NhZ2UgPT09IFwiUGFzc3dvcmQgYXR0ZW1wdHMgZXhjZWVkZWRcIikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dpbkVycm9yTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQuYXR0ZW1wdExpbWl0RXhjZWVkZWQ7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2luRXJyb3JNZXNzYWdlID0gdGhpcy5jb25zdW1pbmdQcm9qZWN0U1NPTG9naW5TZXJ2aWNlLmlzU3NvSW50ZWdyYXRlZCA/XHJcbiAgICAgICAgICAgICAgICAgICAgTG9naW5Db25zdGFudC51c2VyQ29kZVBhc3N3b3JkSW5jb3JyZWN0IDogTG9naW5Db25zdGFudC51c2VyTmFtZVBhc3N3b3JkSW5jb3JyZWN0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uTG9naW5PclNldE5ld1Bhc3N3b3JkKHNlc3Npb246IGFueSkge1xyXG4gICAgICAgIGxldCBuZXdFeHBUaW1lID0gdGhpcy5jb21wdXRlVG9rZW5FeHBpcmF0aW9uKHNlc3Npb24udG9rZW5zLmlkVG9rZW4pO1xyXG4gICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLmFjY2Vzc1Rva2VuID0gc2Vzc2lvbi50b2tlbnMuYWNjZXNzVG9rZW4udG9TdHJpbmcoKTtcclxuICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5JZFRva2VuID0gc2Vzc2lvbi50b2tlbnMuaWRUb2tlbi50b1N0cmluZygpO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiYWNjZXNzVG9rZW5FeHBpcmF0aW9uXCIsIG5ld0V4cFRpbWUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQWNjZXNzVG9rZW4oKTtcclxuICAgICAgICB0aGlzLmxvZ2luRXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBzZXRBY2Nlc3NBbmRJRFRva2Vucyh0b2tlbjogQXV0aFRva2Vucykge1xyXG4gICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLmFjY2Vzc1Rva2VuID0gdG9rZW4/LmFjY2Vzc1Rva2VuPy50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLklkVG9rZW4gPSB0b2tlbj8uaWRUb2tlbjtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRBbGxDb2duaXRvVG9rZW5BbmRHcm91cHModG9rZW46IEF1dGhUb2tlbnMpIHtcclxuICAgICAgICB0aGlzLnNldEFjY2Vzc0FuZElEVG9rZW5zKHRva2VuKTtcclxuICAgICAgICBpZiAoXCJjb2duaXRvOmdyb3Vwc1wiIGluIHRva2VuLmFjY2Vzc1Rva2VuLnBheWxvYWQpIHtcclxuICAgICAgICAgICAgbGV0IHVzZXJHcm91cHNJbkNvZ25pdG9KV1Q6IGFueSA9IHRva2VuLmFjY2Vzc1Rva2VuLnBheWxvYWRbXCJjb2duaXRvOmdyb3Vwc1wiXTtcclxuICAgICAgICAgICAgdGhpcy5hY2xTZXJ2aWNlLnVzZXJHcm91cHNJbkNvZ25pdG9KV1QgPSB1c2VyR3JvdXBzSW5Db2duaXRvSldUO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWNsU2VydmljZS51c2VyR3JvdXBzSW5Db2duaXRvSldUID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlZnJlc2hBY2Nlc3NUb2tlbigpIHtcclxuICAgICAgICBsZXQgYWNjZXNzVG9rZW5FeHBpcmF0aW9uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJhY2Nlc3NUb2tlbkV4cGlyYXRpb25cIik7XHJcbiAgICAgICAgbGV0IGV4cFRpbWUgPSBhY2Nlc3NUb2tlbkV4cGlyYXRpb24gPyBwYXJzZUludChhY2Nlc3NUb2tlbkV4cGlyYXRpb24pIDogMDtcclxuICAgICAgICB0aGlzLmFjY2Vzc1Rva2VuVGltZXJJZCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgbGV0IGNvdW50ZXIgPSAxMDAwO1xyXG4gICAgICAgICAgICBsZXQgZGVsYXlGdW5jdGlvbiA9IHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgc2Vzc2lvbiA9IGF3YWl0IGZldGNoQXV0aFNlc3Npb24oKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdG9rZW4gPSBzZXNzaW9uLnRva2VucztcclxuICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuZ2V0QWxsQ29nbml0b1Rva2VuQW5kR3JvdXBzKHRva2VuKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld0V4cFRpbWUgPSB0aGlzLmNvbXB1dGVUb2tlbkV4cGlyYXRpb24odGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuSWRUb2tlbik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3RXhwVGltZSA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdFeHBUaW1lID0gMTAwMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlbGF5RnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGRlbGF5RnVuY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cFRpbWUgPSBuZXdFeHBUaW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImFjY2Vzc1Rva2VuRXhwaXJhdGlvblwiLCBuZXdFeHBUaW1lLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuYWNjZXNzVG9rZW5UaW1lcklkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoQWNjZXNzVG9rZW4oKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihMb2dpbkNvbnN0YW50LnNlc3Npb25FeHBpcmVkRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNpZ25PdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKExvZ2luQ29uc3RhbnQuc2Vzc2lvbkV4cGlyZWRFcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTaWduT3V0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIGNvdW50ZXIpO1xyXG4gICAgICAgIH0sIGV4cFRpbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNoYW5nZVBhc3N3b3JkKG5ld1Bhc3N3b3JkOiBzdHJpbmcpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBsZXQgaW5wdXRQYXJhbSA9IHtcclxuICAgICAgICAgICAgICAgIGNoYWxsZW5nZVJlc3BvbnNlOiBuZXdQYXNzd29yZCxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgY29uZmlybVNpZ25JbihpbnB1dFBhcmFtKTtcclxuICAgICAgICAgICAgY29uc3QgeyB1c2VybmFtZSB9ID0gYXdhaXQgZ2V0Q3VycmVudFVzZXIoKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YSk7XHJcbiAgICAgICAgICAgIGxldCBzZXNzaW9uID0gYXdhaXQgZmV0Y2hBdXRoU2Vzc2lvbigpO1xyXG4gICAgICAgICAgICB0aGlzLm9uTG9naW5PclNldE5ld1Bhc3N3b3JkKHNlc3Npb24pO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5vblBhc3N3b3JkVXBkYXRlKHVzZXJuYW1lKTtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0xvZ2luQ29uc3RhbnQubG9naW5QYWdlVXJsXSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLm5ld1Bhc3N3b3JkU2V0VGhlblVwZGF0ZVRvQmFja2VuZCh1c2VybmFtZSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TmV3UGFzc3dvcmRFcnJvck1lc3NhZ2UgPSBMb2dpbkNvbnN0YW50LnNlc3Npb25FeHBpcmVkO1xyXG4gICAgICAgICAgICB0aGlzLnNldE5ld1Bhc3N3b3JkQnV0dG9uTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQubG9naW5BZ2FpbjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgb25Gb3Jnb3RQYXNzd29yZEdlbmVyYXRlT1RQKGVtYWlsOiBzdHJpbmcpIHtcclxuICAgICAgICBsZXQgdXNlcm5hbWUgPSBlbWFpbDtcclxuICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS51c2VyTmFtZSA9IGVtYWlsO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGxldCByZXN1bHQ6IGFueSA9IGF3YWl0IHJlc2V0UGFzc3dvcmQoeyB1c2VybmFtZSB9KTtcclxuICAgICAgICAgICAgdGhpcy52ZXJpZnlBbmRTZXROZXdQYXNzd29yZE1lc3NhZ2UgPVxyXG4gICAgICAgICAgICAgICAgTG9naW5Db25zdGFudC52ZXJpZnlBbmRTZXROZXdQYXNzd29yZE1lc3NhZ2UgK1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0Py5uZXh0U3RlcD8uY29kZURlbGl2ZXJ5RGV0YWlscz8uZGVzdGluYXRpb24gK1xyXG4gICAgICAgICAgICAgICAgTG9naW5Db25zdGFudC5wbGVhc2VFbnRlckl0QmVsb3c7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtMb2dpbkNvbnN0YW50LnZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkVXJsXSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHZlcmlmeUNvZGUoY29uZmlybWF0aW9uQ29kZTogc3RyaW5nLCBuZXdQYXNzd29yZDogc3RyaW5nKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uZmlybVJlc2V0UGFzc3dvcmQoeyB1c2VybmFtZTogdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UudXNlck5hbWUsIG5ld1Bhc3N3b3JkOiBuZXdQYXNzd29yZCwgY29uZmlybWF0aW9uQ29kZTogY29uZmlybWF0aW9uQ29kZSB9KS50aGVuKFxyXG4gICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5leHBpcnlBbGxFeGlzdGluZ0N1cnJlbnRTZXNzaW9uKHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLnVzZXJOYW1lLCBuZXdQYXNzd29yZCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9PZkF0dGVtcHRzID0gdGhpcy5ub09mQXR0ZW1wdHMgKyAxO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRFcnJvck1lc3NhZ2UgPSB0aGlzLmZvcmdvdFBhc3N3b3JkRXJyb3IoZXJyLCB0aGlzLm5vT2ZBdHRlbXB0cyk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgdGhpcy5ub09mQXR0ZW1wdHMgPSB0aGlzLm5vT2ZBdHRlbXB0cyArIDE7XHJcbiAgICAgICAgICAgIHRoaXMudmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRFcnJvck1lc3NhZ2UgPSB0aGlzLmZvcmdvdFBhc3N3b3JkRXJyb3IoZXJyLCB0aGlzLm5vT2ZBdHRlbXB0cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcmdvdFBhc3N3b3JkQW5kR2xvYmFsU2lnbm91dExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb3Jnb3RQYXNzd29yZEVycm9yKGVycjogYW55LCBub09mQXR0ZW1wdHM6IG51bWJlcikge1xyXG4gICAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSAnJztcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnIpXHJcbiAgICAgICAgbGV0IGVycm9yVGhyb3duID0gSlNPTi5zdHJpbmdpZnkoZXJyKTtcclxuICAgICAgICBpZiAoZXJyb3JUaHJvd24uaW5jbHVkZXMoXCJMaW1pdEV4Y2VlZGVkRXhjZXB0aW9uXCIpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2Vzc2lvbkxvY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQuYXR0ZW1wdExpbWl0RXhjZWVkZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGVycm9yVGhyb3duLmluY2x1ZGVzKFwiRXhwaXJlZENvZGVFeGNlcHRpb25cIikpIHtcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gTG9naW5Db25zdGFudC5zZXNzaW9uRXhwaXJlZDtcclxuICAgICAgICAgICAgdGhpcy52ZXJpZnlBbmRTZXROZXdQYXNzd29yZEJ1dHRvbiA9IExvZ2luQ29uc3RhbnQucmVnZW5lcmF0ZU90cDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQuYXR0ZW1wdCArIFwiIFwiICsgbm9PZkF0dGVtcHRzICsgTG9naW5Db25zdGFudC5hdHRlbXB0TWVzc2FnZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGVycm9yTWVzc2FnZTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzaWduSW5XaXRoU1NPKCkge1xyXG4gICAgICAgIGxldCBzZXNzaW9uID0gYXdhaXQgZmV0Y2hBdXRoU2Vzc2lvbigpO1xyXG4gICAgICAgIGlmIChzZXNzaW9uPy50b2tlbnMpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVTaWduT3V0KCkudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5zaWduSW5XaXRoU1NPKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLnNpZ25JbldpdGhTU08oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaGFuZGxlU2lnbk91dCgpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCBzaWduT3V0KHsgZ2xvYmFsOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdGhpcy5zZXNzaW9uVGltZW91dCgpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlcnJvciBzaWduaW5nIG91dDogJywgZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBpcnlBbGxFeGlzdGluZ0N1cnJlbnRTZXNzaW9uKHVzZXJuYW1lOiBzdHJpbmcsIG5ld1Bhc3N3b3JkOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmxvZ2luRXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgICAgICB0aGlzLm9uTG9naW5JbkNvZ250aW9Ub0dldEFjY2Vzc1Rva2VuKHVzZXJuYW1lLCBuZXdQYXNzd29yZCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgb25Mb2dpbkluQ29nbnRpb1RvR2V0QWNjZXNzVG9rZW4odXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZykge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgbmV4dFN0ZXAgfSA9IGF3YWl0IHNpZ25Jbih7IHVzZXJuYW1lLCBwYXNzd29yZCB9KTtcclxuICAgICAgICAgICAgc3dpdGNoIChuZXh0U3RlcD8uc2lnbkluU3RlcCkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcIkRPTkVcIjpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEFjY2Vzc0FuZElEVG9rZW5zKGF3YWl0IChhd2FpdCBmZXRjaEF1dGhTZXNzaW9uKCkpLnRva2Vucyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2Uub25QYXNzd29yZFVwZGF0ZSh0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS51c2VyTmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNhbGxHbG9iYWxTaWdub3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgICAgIHRoaXMubm9PZkF0dGVtcHRzID0gdGhpcy5ub09mQXR0ZW1wdHMgKyAxO1xyXG4gICAgICAgICAgICB0aGlzLnZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkRXJyb3JNZXNzYWdlID0gdGhpcy5mb3Jnb3RQYXNzd29yZEVycm9yKGVycm9yLCB0aGlzLm5vT2ZBdHRlbXB0cyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG9uQ2FsbEdsb2JhbFNpZ25vdXQoKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgc2lnbk91dCh7IGdsb2JhbDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgdGhpcy5mb3Jnb3RQYXNzd29yZEFuZEdsb2JhbFNpZ25vdXRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0xvZ2luQ29uc3RhbnQubG9naW5QYWdlVXJsXSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yIHNpZ25pbmcgb3V0OiAnLCBlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -130,7 +130,7 @@ class AnnaLibAuthService {
130
130
  }
131
131
  else {
132
132
  this.toastr.error(LoginConstant.sessionExpiredError);
133
- this.sessionTimeout();
133
+ this.handleSignOut();
134
134
  resolve(false);
135
135
  }
136
136
  });
@@ -249,12 +249,12 @@ class AnnaLibAuthService {
249
249
  }
250
250
  else {
251
251
  this.toastr.error(LoginConstant.sessionExpiredError);
252
- this.sessionTimeout();
252
+ this.handleSignOut();
253
253
  }
254
254
  }
255
255
  catch (error) {
256
256
  this.toastr.error(LoginConstant.sessionExpiredError);
257
- this.sessionTimeout();
257
+ this.handleSignOut();
258
258
  }
259
259
  }, counter);
260
260
  }, expTime);
@@ -341,6 +341,7 @@ class AnnaLibAuthService {
341
341
  async handleSignOut() {
342
342
  try {
343
343
  await signOut({ global: false });
344
+ this.sessionTimeout();
344
345
  }
345
346
  catch (error) {
346
347
  console.log('error signing out: ', error);
@@ -507,6 +508,7 @@ class AnnaLoginComponent {
507
508
  }
508
509
  ngOnInit() {
509
510
  this.authService.consumingProjectAuthService.isLoggingIn = false;
511
+ this.consumingProjectSSOLoginService.loggedInViaSso = false;
510
512
  this.constants = LoginConstant;
511
513
  this.onIntialiseForm();
512
514
  }
@@ -1 +1 @@
1
- {"version":3,"file":"annalib-anna-cognito-lib.mjs","sources":["../../../projects/anna-cognito-lib/src/lib/config/sso-login-service.token.ts","../../../projects/anna-cognito-lib/src/lib/config/config-service.token.ts","../../../projects/anna-cognito-lib/src/lib/constants/loginConstant.ts","../../../projects/anna-cognito-lib/src/lib/config/auth-service.token.ts","../../../projects/anna-cognito-lib/src/lib/config/acl-service.token.ts","../../../projects/anna-cognito-lib/src/lib/services/acl.service.ts","../../../projects/anna-cognito-lib/src/lib/services/auth.service.ts","../../../projects/anna-cognito-lib/src/lib/components/version-and-term-policy/version-and-term-policy.component.ts","../../../projects/anna-cognito-lib/src/lib/components/version-and-term-policy/version-and-term-policy.component.html","../../../projects/anna-cognito-lib/src/lib/components/surewaves-year-logo/surewaves-year-logo.component.ts","../../../projects/anna-cognito-lib/src/lib/components/surewaves-year-logo/surewaves-year-logo.component.html","../../../projects/anna-cognito-lib/src/lib/components/powered-by-logo-template/powered-by-logo-template.component.ts","../../../projects/anna-cognito-lib/src/lib/components/powered-by-logo-template/powered-by-logo-template.component.html","../../../projects/anna-cognito-lib/src/lib/components/sso-login/sso-login.component.ts","../../../projects/anna-cognito-lib/src/lib/components/sso-login/sso-login.component.html","../../../projects/anna-cognito-lib/src/lib/directives/spinner-button/spinner-button.directive.ts","../../../projects/anna-cognito-lib/src/lib/components/anna-login/anna-login.component.ts","../../../projects/anna-cognito-lib/src/lib/components/anna-login/anna-login.component.html","../../../projects/anna-cognito-lib/src/lib/components/cognito-and-sso-login-container/cognito-and-sso-login-container.component.ts","../../../projects/anna-cognito-lib/src/lib/components/cognito-and-sso-login-container/cognito-and-sso-login-container.component.html","../../../projects/anna-cognito-lib/src/lib/models/auth.model.ts","../../../projects/anna-cognito-lib/src/lib/components/forgot-password/forgot-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/forgot-password/forgot-password.component.html","../../../projects/anna-cognito-lib/src/lib/components/password-matching/password-matching.component.ts","../../../projects/anna-cognito-lib/src/lib/components/password-matching/password-matching.component.html","../../../projects/anna-cognito-lib/src/lib/components/set-new-password/set-new-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/set-new-password/set-new-password.component.html","../../../projects/anna-cognito-lib/src/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.html","../../../projects/anna-cognito-lib/src/lib/services/config.service.ts","../../../projects/anna-cognito-lib/src/lib/services/sso-login.service.ts","../../../projects/anna-cognito-lib/src/public-api.ts","../../../projects/anna-cognito-lib/src/annalib-anna-cognito-lib.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\n/** Token to inject the auth service */\r\nexport const SSO_LOGIN_SERVICE_TOKEN:\r\n InjectionToken<ISSOLoginService> =\r\n new InjectionToken<ISSOLoginService>('Cognito sso login service token');\r\n\r\nexport interface ISSOLoginService {\r\n defaultLoginPageUrl: \"co-pilot-login\" | \"login\";\r\n isSsoIntegrated: boolean;\r\n // ogDetails: { OgName: string; OgId: number; OgLogoUrl: string; IsSsoIntegrated: boolean; };\r\n loggedInViaSso: boolean;\r\n isUserInvitedAndCanAccessANNA: boolean;\r\n userNameText: string;\r\n}","import { InjectionToken } from '@angular/core';\r\n\r\n/** Token to inject the auth service */\r\nexport const CONFIG_SERVICE_TOKEN:\r\n InjectionToken<IConfigService> =\r\n new InjectionToken<IConfigService>('Cognito config service token');\r\n\r\nexport interface IConfigService {\r\n appGenericConfig : { \r\n loginPageLogoImgUrl: string,\r\n cognito : {\r\n userPoolId: string,\r\n clientId: string,\r\n },\r\n currentAnnaVersion: string\r\n };\r\n\r\n}","export class LoginConstant {\r\n // Login page\r\n static readonly enterEmail = \"Enter your username\";\r\n static readonly enterUserCode = \"Enter your usercode\";\r\n static readonly password = \"Password\";\r\n static readonly confirmPassword = \"Confirm Password\";\r\n static readonly login = \"Login\";\r\n static readonly otp = \"OTP\";\r\n static readonly forgotPassword = \"Forgot \" + LoginConstant.password.toLowerCase() + \"?\";\r\n\r\n // set new password\r\n static readonly setNewPasswordHeading = \"Set new \" + LoginConstant.password.toLowerCase();\r\n static readonly setNewPasswordButton = \"Set and \" + LoginConstant.login.toLowerCase() + \" again\";\r\n static readonly passwordMustContain = \"The password must contain:\";\r\n static readonly minimumCharacter = \"Minimum 8 characters\";\r\n static readonly oneUppercase = \"1 Uppercase\";\r\n static readonly oneLowercase = \"1 Lowercase\";\r\n static readonly oneNumber = \"1 Numerical\";\r\n static readonly specialCharacter = \"1 Special character\";\r\n static readonly passwordNotMatching = \"The passwords do not match. Please try again.\";\r\n static readonly userNamePasswordIncorrect = \"Incorrect username or password\";\r\n static readonly userCodePasswordIncorrect = \"Incorrect usercode or password\";\r\n static readonly userNotFound = \"No registered user found\";\r\n static readonly loginAgain = LoginConstant.login + \" again\";\r\n static readonly firstTimeLoginUserTempPasswordMsg = \"You are logging in for the first time. Kindly use the temporary password provided in the welcome email, to login to your account. \";\r\n static readonly tempPasswordExpiryError = \"Temporary password has expired and must be reset by an administrator.\"\r\n static readonly tempPasswordOnExpiryErrorMsg = \"Password has expired. A new password has been sent to your registered email. Kindly login again with new link and credentials.\";\r\n\r\n // verify OTP & set new password\r\n static readonly verifyAndSetNewPasswordheading = \"Enter \" + LoginConstant.otp + \" & set new password\";\r\n static readonly verifyAndSetNewPasswordMessage = \"An \" + LoginConstant.otp + \" has been succesfully emailed to \";\r\n static readonly pleaseEnterItBelow = \". Please enter it below.\";\r\n static readonly regenerateOtp = \"Regenerate \" + LoginConstant.otp;\r\n static readonly enterOtp = \"Enter \" + LoginConstant.otp;\r\n static readonly submit = \"Submit\";\r\n static readonly attempt = \"Attempt\";\r\n static readonly attemptLimitExceeded =\r\n \"You have exceeded the maximum number of allowed attempts. Please try again after 15 minutes.\";\r\n static readonly attemptMessage = \" of 5. The OTP entered is incorrect. Please try again with the right one.\";\r\n static readonly sessionExpired = \"The session has expired. Please try again.\";\r\n static readonly sessionExpiredError = \"Your session has expired. Please login again\";\r\n\r\n // forgot password\r\n static readonly forgotPasswordHeading = \"Forgot your password?\";\r\n static readonly PleaseEnterYourUsernameMessage = \"Please enter your username.\";\r\n static readonly PleaseEnterYourUsercodeMessage = \"Please enter your usercode.\";\r\n static readonly forgotPasswordButton = \"Get \" + LoginConstant.otp;\r\n static readonly apiFailErrorMessage = \"Unable to connect to server right now. Please try after some time.\";\r\n\r\n //url\r\n static readonly setNewPasswordUrl = \"/set-new-password\";\r\n static readonly forgortPasswordPageUrl = \"/forgot-password\";\r\n static readonly verifyAndSetNewPasswordUrl = \"/verify-and-set-new-password\";\r\n static readonly loginPageUrl = \"/login\";\r\n static readonly coPilotloginPageUrl = \"/co-pilot-login\";\r\n static readonly welcomeScrreenUrl = \"/welcome-screen\";\r\n static readonly homePageUrl = \"/dashboard\";\r\n static readonly stationSettingUrl = \"/station-settings\";\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { AuthTokens } from 'aws-amplify/auth';\r\nimport { Observable } from 'rxjs';\r\n\r\n/** Token to inject the auth service */\r\nexport const AUTH_SERVICE_TOKEN:\r\n InjectionToken<IAuthService> =\r\n new InjectionToken<IAuthService>('Auth service token');\r\n\r\nexport interface IAuthService {\r\n isLoggingIn: boolean;\r\n userName: any;\r\n accessToken: string;\r\n IdToken: any;\r\n defaultLoginPageUrl: \"co-pilot-login\" | \"login\";\r\n onSuccessfulAuthenticatingUser(loggedInViaSso: boolean): void;\r\n getAllCognitoTokenAndGroups(tokens: AuthTokens):void;\r\n isUsernameAvailable(username: string): Observable<any>;\r\n isEmailAvailable(emailId: string, ogId: number): Observable<any>;\r\n getUserState(username: string): Observable<any>;\r\n navigateBasedOnUserRole(loginUserData: any): void;\r\n getPublicIp(): string;\r\n sendRegenerationEmail(userCode: string): void;\r\n onPasswordUpdate(userName: string): void;\r\n newPasswordSetThenUpdateToBackend(userCode: string): void;\r\n signInWithSSO(): void;\r\n}","import { InjectionToken } from '@angular/core';\r\n\r\n/** Token to inject the acl service */\r\nexport const ACL_SERVICE_TOKEN:\r\n InjectionToken<IAclService> =\r\n new InjectionToken<IAclService>('ACL service token');\r\n\r\nexport interface IAclService {\r\n urlToCognitoPrivilegeMap: {[key: string]: string};\r\n MANAGE_USERS_WRITE: string;\r\n ORDER_BIZ_RULES_WRITE: string;\r\n ORDER_REVISIONS_WRITE: string;\r\n ORDER_SPOTS_REPORT_WRITE: string;\r\n POLITICAL_WINDOW_WRITE: string;\r\n DASHBOARD_DAILY_REVISIONS_READ: string;\r\n ENTER_EDIT_TARGET_LUR_WRITE: string;\r\n ENTER_EDIT_TARGET_CSR_WRITE: string;\r\n MANAGE_ROLES_WRITE: string;\r\n ACTIVE_STATION_USER_READ: string;\r\n USER_AWAITING_ACTIVATION_WRITE: string;\r\n DAILY_REVISION_ONGOING_AND_DAILY_COMPLETED_READ: string;\r\n USER_MANAGEMENT_READ: string;\r\n USER_MANAGEMENT_WRITE: string;\r\n STATION_BUSINESS_RULE_WRITE: string;\r\n ADVERTISER_BUSINESS_RULE_WRITE: string;\r\n EC_LISTING_READ: string;\r\n EC_LISTING_WRITE: string;\r\n ORDER_DISCREPANCIES: string;\r\n REVISION_CYCLE_SETTINGS_READ: string;\r\n REVISION_CYCLE_SETTINGS_WRITE: string;\r\n ROLLING_AVERAGES_READ: string;\r\n ROLLING_AVERAGES_WRITE: string;\r\n WRITE_ENABLED_ORDERS_READ: string;\r\n WRITE_ENABLED_ORDERS_WRITE: string;\r\n STATION_POLITICAL_RATE_CARD_READ: string;\r\n STATION_POLITICAL_RATE_CARD_WRITE: string;\r\n AUDIENCE_ESTIMATES_READ: string;\r\n}","import { Inject, Injectable } from \"@angular/core\";\r\nimport { IAclService, ACL_SERVICE_TOKEN } from '../config/acl-service.token';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaLibAclService {\r\n constructor(@Inject(ACL_SERVICE_TOKEN) public consumingProjectAclService: IAclService) {}\r\n\r\n userGroupsInCognitoJWT: string[];\r\n isUserAuthorisedToAccessPage(url: string): boolean {\r\n let privilegeName = this.consumingProjectAclService.urlToCognitoPrivilegeMap[url];\r\n return this.userGroupsInCognitoJWT.includes(privilegeName);\r\n }\r\n\r\n isUserAuthorisedToAccessElement(privilege: string): boolean {\r\n return this.userGroupsInCognitoJWT.includes(privilege);\r\n }\r\n\r\n}\r\n","// Angular import statements\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { Inject, Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// Third party import statements\r\nimport {\r\n AuthTokens, SignInInput, confirmResetPassword, confirmSignIn, fetchAuthSession,\r\n getCurrentUser, resetPassword, signIn, signOut\r\n} from \"aws-amplify/auth\";\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n// User defined import statements\r\nimport { AUTH_SERVICE_TOKEN, IAuthService } from '../config/auth-service.token';\r\nimport { LoginConstant } from \"../constants/loginConstant\";\r\nimport { AnnaLibAclService } from './acl.service';\r\nimport { ISSOLoginService, SSO_LOGIN_SERVICE_TOKEN } from '../config/sso-login-service.token';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaLibAuthService {\r\n loginErrorMessage: string | null;\r\n setNewPasswordErrorMessage: string;\r\n setNewPasswordButtonMessage: string;\r\n verifyAndSetNewPasswordErrorMessage: string;\r\n verifyAndSetNewPasswordMessage: string;\r\n verifyAndSetNewPasswordButton: string;\r\n noOfAttempts = 0;\r\n sessionLocked = false;\r\n accessTokenTimerId: any;\r\n forgotPasswordAndGlobalSignoutLoader: boolean;\r\n\r\n constructor(\r\n private router: Router,\r\n public aclService: AnnaLibAclService,\r\n public httpClient: HttpClient,\r\n private toastr: ToastrService,\r\n @Inject(SSO_LOGIN_SERVICE_TOKEN) public consumingProjectSSOLoginService: ISSOLoginService,\r\n @Inject(AUTH_SERVICE_TOKEN) public consumingProjectAuthService: IAuthService) {\r\n if (!consumingProjectAuthService) {\r\n throw new Error('You must provide a authService');\r\n }\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n async isUserLoggedIn(): Promise<boolean> {\r\n try {\r\n // await getCurrentUser();\r\n return new Promise(async (resolve, reject) => {\r\n const session: any = await fetchAuthSession();\r\n if (session?.tokens) {\r\n this.consumingProjectAuthService.IdToken = session?.tokens.idToken.toString();\r\n this.consumingProjectAuthService.getAllCognitoTokenAndGroups(session.tokens);\r\n resolve(true);\r\n } else {\r\n this.toastr.error(LoginConstant.sessionExpiredError);\r\n this.sessionTimeout();\r\n resolve(false);\r\n }\r\n });\r\n } catch (error) {\r\n return new Promise((resolve) => {\r\n clearInterval(this.accessTokenTimerId);\r\n resolve(false);\r\n });\r\n }\r\n }\r\n\r\n sessionTimeout() {\r\n localStorage.clear();\r\n clearInterval(this.accessTokenTimerId);\r\n let afterLogoutRedirectTo: string;\r\n if (this.consumingProjectSSOLoginService.isSsoIntegrated && !this.consumingProjectSSOLoginService.loggedInViaSso) {\r\n afterLogoutRedirectTo = LoginConstant.coPilotloginPageUrl;\r\n }\r\n else {\r\n afterLogoutRedirectTo = LoginConstant.loginPageUrl;\r\n }\r\n this.router.navigate([afterLogoutRedirectTo]);\r\n }\r\n\r\n computeTokenExpiration(idToken: any) {\r\n let currentTime = Math.floor(Date.now() / 1000);\r\n let tokenTime = idToken.payload.exp;\r\n let expTime = (tokenTime - currentTime) * 1000;\r\n return expTime;\r\n }\r\n\r\n async handleSignIn({ username, password }: SignInInput) {\r\n try {\r\n let session = await fetchAuthSession();\r\n if (session?.tokens) {\r\n await this.handleSignOut();\r\n }\r\n const { isSignedIn, nextStep } = await signIn({ username, password });\r\n switch (nextStep?.signInStep) {\r\n case \"DONE\":\r\n let session = await fetchAuthSession();\r\n this.onLoginOrSetNewPassword(session);\r\n await this.consumingProjectAuthService.onSuccessfulAuthenticatingUser(false);\r\n this.consumingProjectAuthService.getAllCognitoTokenAndGroups(session.tokens);\r\n this.refreshAccessToken();\r\n break;\r\n\r\n case \"CONFIRM_SIGN_IN_WITH_NEW_PASSWORD_REQUIRED\":\r\n this.consumingProjectAuthService.isLoggingIn = false;\r\n this.consumingProjectAuthService.userName = username;\r\n this.router.navigate([LoginConstant.setNewPasswordUrl]);\r\n this.setNewPasswordErrorMessage = null;\r\n break;\r\n\r\n case \"RESET_PASSWORD\":\r\n break;\r\n }\r\n } catch (error: any) {\r\n console.log(error);\r\n this.consumingProjectAuthService.isLoggingIn = false;\r\n if (error?.message == LoginConstant.tempPasswordExpiryError) {\r\n this.loginErrorMessage = LoginConstant.tempPasswordOnExpiryErrorMsg;\r\n this.consumingProjectAuthService.sendRegenerationEmail(username);\r\n } else if (error?.message === \"Password attempts exceeded\") {\r\n this.loginErrorMessage = LoginConstant.attemptLimitExceeded;\r\n } else {\r\n this.loginErrorMessage = this.consumingProjectSSOLoginService.isSsoIntegrated ?\r\n LoginConstant.userCodePasswordIncorrect : LoginConstant.userNamePasswordIncorrect;\r\n }\r\n }\r\n }\r\n\r\n onLoginOrSetNewPassword(session: any) {\r\n let newExpTime = this.computeTokenExpiration(session.tokens.idToken);\r\n this.consumingProjectAuthService.accessToken = session.tokens.accessToken.toString();\r\n this.consumingProjectAuthService.IdToken = session.tokens.idToken.toString();\r\n localStorage.setItem(\"accessTokenExpiration\", newExpTime.toString());\r\n this.refreshAccessToken();\r\n this.loginErrorMessage = null;\r\n }\r\n\r\n setAccessAndIDTokens(token: AuthTokens) {\r\n this.consumingProjectAuthService.accessToken = token?.accessToken?.toString();\r\n this.consumingProjectAuthService.IdToken = token?.idToken;\r\n }\r\n\r\n async getAllCognitoTokenAndGroups(token: AuthTokens) {\r\n this.setAccessAndIDTokens(token);\r\n if (\"cognito:groups\" in token.accessToken.payload) {\r\n let userGroupsInCognitoJWT: any = token.accessToken.payload[\"cognito:groups\"];\r\n this.aclService.userGroupsInCognitoJWT = userGroupsInCognitoJWT;\r\n } else {\r\n this.aclService.userGroupsInCognitoJWT = [];\r\n }\r\n }\r\n\r\n refreshAccessToken() {\r\n let accessTokenExpiration = localStorage.getItem(\"accessTokenExpiration\");\r\n let expTime = accessTokenExpiration ? parseInt(accessTokenExpiration) : 0;\r\n this.accessTokenTimerId = setInterval(() => {\r\n let counter = 1000;\r\n let delayFunction = setTimeout(async () => {\r\n try {\r\n let session = await fetchAuthSession();\r\n let token = session.tokens;\r\n if (token) {\r\n this.consumingProjectAuthService.getAllCognitoTokenAndGroups(token);\r\n let newExpTime = this.computeTokenExpiration(this.consumingProjectAuthService.IdToken);\r\n\r\n if (newExpTime <= 0) {\r\n newExpTime = 1000;\r\n counter = 0;\r\n if (delayFunction) {\r\n clearInterval(delayFunction);\r\n }\r\n }\r\n expTime = newExpTime;\r\n localStorage.setItem(\"accessTokenExpiration\", newExpTime.toString());\r\n clearInterval(this.accessTokenTimerId);\r\n this.refreshAccessToken();\r\n } else {\r\n this.toastr.error(LoginConstant.sessionExpiredError);\r\n this.sessionTimeout();\r\n }\r\n } catch (error) {\r\n this.toastr.error(LoginConstant.sessionExpiredError);\r\n this.sessionTimeout();\r\n }\r\n }, counter);\r\n }, expTime);\r\n }\r\n\r\n async changePassword(newPassword: string) {\r\n try {\r\n let inputParam = {\r\n challengeResponse: newPassword,\r\n }\r\n const data = await confirmSignIn(inputParam);\r\n const { username } = await getCurrentUser();\r\n console.log(data);\r\n let session = await fetchAuthSession();\r\n this.onLoginOrSetNewPassword(session);\r\n this.consumingProjectAuthService.onPasswordUpdate(username);\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n this.consumingProjectAuthService.newPasswordSetThenUpdateToBackend(username);\r\n } catch (err) {\r\n console.log(err);\r\n this.setNewPasswordErrorMessage = LoginConstant.sessionExpired;\r\n this.setNewPasswordButtonMessage = LoginConstant.loginAgain;\r\n }\r\n }\r\n\r\n async onForgotPasswordGenerateOTP(email: string) {\r\n let username = email;\r\n this.consumingProjectAuthService.userName = email;\r\n try {\r\n let result: any = await resetPassword({ username });\r\n this.verifyAndSetNewPasswordMessage =\r\n LoginConstant.verifyAndSetNewPasswordMessage +\r\n result?.nextStep?.codeDeliveryDetails?.destination +\r\n LoginConstant.pleaseEnterItBelow;\r\n this.router.navigate([LoginConstant.verifyAndSetNewPasswordUrl]);\r\n } catch (err) {\r\n }\r\n }\r\n\r\n async verifyCode(confirmationCode: string, newPassword: string) {\r\n try {\r\n confirmResetPassword({ username: this.consumingProjectAuthService.userName, newPassword: newPassword, confirmationCode: confirmationCode }).then(\r\n (response) => {\r\n this.expiryAllExistingCurrentSession(this.consumingProjectAuthService.userName, newPassword);\r\n },\r\n (err) => {\r\n this.noOfAttempts = this.noOfAttempts + 1;\r\n this.verifyAndSetNewPasswordErrorMessage = this.forgotPasswordError(err, this.noOfAttempts);\r\n });\r\n } catch (err) {\r\n this.noOfAttempts = this.noOfAttempts + 1;\r\n this.verifyAndSetNewPasswordErrorMessage = this.forgotPasswordError(err, this.noOfAttempts);\r\n }\r\n finally {\r\n this.forgotPasswordAndGlobalSignoutLoader = false;\r\n }\r\n }\r\n\r\n forgotPasswordError(err: any, noOfAttempts: number) {\r\n let errorMessage = '';\r\n console.log(err)\r\n let errorThrown = JSON.stringify(err);\r\n if (errorThrown.includes(\"LimitExceededException\")) {\r\n this.sessionLocked = true;\r\n errorMessage = LoginConstant.attemptLimitExceeded;\r\n }\r\n else if (errorThrown.includes(\"ExpiredCodeException\")) {\r\n errorMessage = LoginConstant.sessionExpired;\r\n this.verifyAndSetNewPasswordButton = LoginConstant.regenerateOtp;\r\n }\r\n else {\r\n errorMessage = LoginConstant.attempt + \" \" + noOfAttempts + LoginConstant.attemptMessage;\r\n }\r\n return errorMessage;\r\n }\r\n\r\n async signInWithSSO() {\r\n let session = await fetchAuthSession();\r\n if (session?.tokens) {\r\n await this.handleSignOut().then(response => {\r\n this.consumingProjectAuthService.signInWithSSO();\r\n });\r\n } else {\r\n this.consumingProjectAuthService.signInWithSSO();\r\n }\r\n }\r\n\r\n async handleSignOut() {\r\n try {\r\n await signOut({ global: false });\r\n } catch (error) {\r\n console.log('error signing out: ', error);\r\n }\r\n }\r\n\r\n expiryAllExistingCurrentSession(username: string, newPassword: string) {\r\n this.loginErrorMessage = null;\r\n this.onLoginInCogntioToGetAccessToken(username, newPassword);\r\n }\r\n\r\n async onLoginInCogntioToGetAccessToken(username: string, password: string) {\r\n try {\r\n const { nextStep } = await signIn({ username, password });\r\n switch (nextStep?.signInStep) {\r\n case \"DONE\":\r\n this.setAccessAndIDTokens(await (await fetchAuthSession()).tokens);\r\n this.consumingProjectAuthService.onPasswordUpdate(this.consumingProjectAuthService.userName);\r\n this.onCallGlobalSignout();\r\n break;\r\n }\r\n } catch (error: any) {\r\n this.noOfAttempts = this.noOfAttempts + 1;\r\n this.verifyAndSetNewPasswordErrorMessage = this.forgotPasswordError(error, this.noOfAttempts);\r\n }\r\n }\r\n\r\n async onCallGlobalSignout() {\r\n try {\r\n await signOut({ global: true });\r\n this.forgotPasswordAndGlobalSignoutLoader = false;\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n } catch (error) {\r\n console.log('error signing out: ', error);\r\n }\r\n }\r\n}\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\r\n\r\n@Component({\n selector: 'anna-cognito-lib-version-and-term-policy',\n templateUrl: './version-and-term-policy.component.html',\n styleUrls: ['./version-and-term-policy.component.scss'],\n standalone: true\n})\r\nexport class VersionAndTermPolicyComponent implements OnInit {\r\n\r\n constructor(\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<p class=\"verison-and-policy\"> Version {{consumingProjectConfigService.appGenericConfig.currentAnnaVersion}} </p>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\n selector: 'anna-cognito-lib-surewaves-year-logo',\n templateUrl: './surewaves-year-logo.component.html',\n styleUrls: ['./surewaves-year-logo.component.scss'],\n standalone: true\n})\r\nexport class SurewavesYearLogoComponent implements OnInit {\r\n currentYear: number;\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.currentYear = new Date().getFullYear();\r\n }\r\n\r\n}\r\n","<div class=\"surewaves-year-logo\">\r\n © SureWaves {{currentYear}}. All rights reserved. \r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\n selector: 'anna-cognito-lib-powered-by-logo-template',\n templateUrl: './powered-by-logo-template.component.html',\n styleUrls: ['./powered-by-logo-template.component.scss'],\n standalone: true,\n imports: [NgTemplateOutlet]\n})\r\nexport class PoweredByLogoTemplateComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"poweredBySurewavesLogo\"> \r\n</ng-container>\r\n\r\n<ng-template #poweredBySurewavesLogo>\r\n<svg width=\"230px\" height=\"69px\" viewBox=\"0 0 230 69\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <defs>\r\n <path d=\"M2.576,1.064 C3.93866667,1.064 4.98633333,1.323 5.719,1.841 C6.45166667,2.359 6.818,3.13133333 6.818,4.158 C6.818,4.718 6.71766667,5.19633333 6.517,5.593 C6.31633333,5.98966667 6.027,6.31166667 5.649,6.559 C5.271,6.80633333 4.81133333,6.986 4.27,7.098 C3.72866667,7.21 3.11733333,7.266 2.436,7.266 L1.358,7.266 L1.358,10.864 L0,10.864 L0,1.302 C0.382666667,1.20866667 0.809666667,1.14566667 1.281,1.113 C1.75233333,1.08033333 2.184,1.064 2.576,1.064 Z M2.688,2.254 C2.10933333,2.254 1.666,2.268 1.358,2.296 L1.358,6.104 L2.38,6.104 C2.84666667,6.104 3.26666667,6.07366667 3.64,6.013 C4.01333333,5.95233333 4.32833333,5.84966667 4.585,5.705 C4.84166667,5.56033333 5.04,5.362 5.18,5.11 C5.32,4.858 5.39,4.536 5.39,4.144 C5.39,3.77066667 5.31766667,3.46266667 5.173,3.22 C5.02833333,2.97733333 4.83233333,2.78366667 4.585,2.639 C4.33766667,2.49433333 4.05066667,2.394 3.724,2.338 C3.39733333,2.282 3.052,2.254 2.688,2.254 Z\" id=\"path-1\"></path>\r\n <path d=\"M14.56,7.224 C14.56,7.80266667 14.476,8.32533333 14.308,8.792 C14.14,9.25866667 13.9043333,9.66 13.601,9.996 C13.2976667,10.332 12.936,10.591 12.516,10.773 C12.096,10.955 11.6386667,11.046 11.144,11.046 C10.6493333,11.046 10.192,10.955 9.772,10.773 C9.352,10.591 8.99033333,10.332 8.687,9.996 C8.38366667,9.66 8.148,9.25866667 7.98,8.792 C7.812,8.32533333 7.728,7.80266667 7.728,7.224 C7.728,6.65466667 7.812,6.13433333 7.98,5.663 C8.148,5.19166667 8.38366667,4.788 8.687,4.452 C8.99033333,4.116 9.352,3.857 9.772,3.675 C10.192,3.493 10.6493333,3.402 11.144,3.402 C11.6386667,3.402 12.096,3.493 12.516,3.675 C12.936,3.857 13.2976667,4.116 13.601,4.452 C13.9043333,4.788 14.14,5.19166667 14.308,5.663 C14.476,6.13433333 14.56,6.65466667 14.56,7.224 Z M13.202,7.224 C13.202,6.40266667 13.0176667,5.75166667 12.649,5.271 C12.2803333,4.79033333 11.7786667,4.55 11.144,4.55 C10.5093333,4.55 10.0076667,4.79033333 9.639,5.271 C9.27033333,5.75166667 9.086,6.40266667 9.086,7.224 C9.086,8.04533333 9.27033333,8.69633333 9.639,9.177 C10.0076667,9.65766667 10.5093333,9.898 11.144,9.898 C11.7786667,9.898 12.2803333,9.65766667 12.649,9.177 C13.0176667,8.69633333 13.202,8.04533333 13.202,7.224 Z\" id=\"path-2\"></path>\r\n <path d=\"M22.162,10.864 C21.9006667,10.192 21.623,9.42433333 21.329,8.561 C21.035,7.69766667 20.7666667,6.79933333 20.524,5.866 C20.2813333,6.79933333 20.0153333,7.69766667 19.726,8.561 C19.4366667,9.42433333 19.1613333,10.192 18.9,10.864 L17.766,10.864 C17.3366667,9.90266667 16.9166667,8.806 16.506,7.574 C16.0953333,6.342 15.708,5.012 15.344,3.584 L16.744,3.584 C16.8373333,4.02266667 16.9493333,4.49866667 17.08,5.012 C17.2106667,5.52533333 17.3483333,6.03866667 17.493,6.552 C17.6376667,7.06533333 17.7893333,7.56 17.948,8.036 C18.1066667,8.512 18.256,8.92733333 18.396,9.282 C18.5546667,8.84333333 18.711,8.379 18.865,7.889 C19.019,7.399 19.166,6.90433333 19.306,6.405 C19.446,5.90566667 19.579,5.41566667 19.705,4.935 C19.831,4.45433333 19.9406667,4.004 20.034,3.584 L21.112,3.584 C21.196,4.004 21.2986667,4.45433333 21.42,4.935 C21.5413333,5.41566667 21.672,5.90566667 21.812,6.405 C21.952,6.90433333 22.099,7.399 22.253,7.889 C22.407,8.379 22.5633333,8.84333333 22.722,9.282 C22.862,8.92733333 23.009,8.512 23.163,8.036 C23.317,7.56 23.4686667,7.06533333 23.618,6.552 C23.7673333,6.03866667 23.9073333,5.52533333 24.038,5.012 C24.1686667,4.49866667 24.2806667,4.02266667 24.374,3.584 L25.718,3.584 C25.354,5.012 24.9666667,6.342 24.556,7.574 C24.1453333,8.806 23.7253333,9.90266667 23.296,10.864 L22.162,10.864 Z\" id=\"path-3\"></path>\r\n <path d=\"M26.684,7.238 C26.684,6.594 26.7773333,6.03166667 26.964,5.551 C27.1506667,5.07033333 27.398,4.67133333 27.706,4.354 C28.014,4.03666667 28.3686667,3.79866667 28.77,3.64 C29.1713333,3.48133333 29.582,3.402 30.002,3.402 C30.982,3.402 31.7333333,3.70766667 32.256,4.319 C32.7786667,4.93033333 33.04,5.86133333 33.04,7.112 C33.04,7.168 33.04,7.24033333 33.04,7.329 C33.04,7.41766667 33.0353333,7.49933333 33.026,7.574 L28.042,7.574 C28.098,8.33 28.3173333,8.904 28.7,9.296 C29.0826667,9.688 29.68,9.884 30.492,9.884 C30.9493333,9.884 31.3343333,9.84433333 31.647,9.765 C31.9596667,9.68566667 32.1953333,9.60866667 32.354,9.534 L32.536,10.626 C32.3773333,10.71 32.0996667,10.7986667 31.703,10.892 C31.3063333,10.9853333 30.856,11.032 30.352,11.032 C29.7173333,11.032 29.169,10.9363333 28.707,10.745 C28.245,10.5536667 27.8646667,10.29 27.566,9.954 C27.2673333,9.618 27.0456667,9.219 26.901,8.757 C26.7563333,8.295 26.684,7.78866667 26.684,7.238 Z M31.682,6.524 C31.6913333,5.936 31.5443333,5.453 31.241,5.075 C30.9376667,4.697 30.52,4.508 29.988,4.508 C29.6893333,4.508 29.4256667,4.56633333 29.197,4.683 C28.9683333,4.79966667 28.7746667,4.95133333 28.616,5.138 C28.4573333,5.32466667 28.3336667,5.53933333 28.245,5.782 C28.1563333,6.02466667 28.098,6.272 28.07,6.524 L31.682,6.524 Z\" id=\"path-4\"></path>\r\n <path d=\"M37.604,3.43 C37.716,3.43 37.8443333,3.437 37.989,3.451 C38.1336667,3.465 38.276,3.48366667 38.416,3.507 C38.556,3.53033333 38.6843333,3.55366667 38.801,3.577 C38.9176667,3.60033333 39.004,3.62133333 39.06,3.64 L38.836,4.774 C38.7333333,4.73666667 38.563,4.69233333 38.325,4.641 C38.087,4.58966667 37.7813333,4.564 37.408,4.564 C37.1653333,4.564 36.925,4.58966667 36.687,4.641 C36.449,4.69233333 36.2926667,4.72733333 36.218,4.746 L36.218,10.864 L34.916,10.864 L34.916,3.892 C35.224,3.78 35.6066667,3.675 36.064,3.577 C36.5213333,3.479 37.0346667,3.43 37.604,3.43 Z\" id=\"path-5\"></path>\r\n <path d=\"M39.914,7.238 C39.914,6.594 40.0073333,6.03166667 40.194,5.551 C40.3806667,5.07033333 40.628,4.67133333 40.936,4.354 C41.244,4.03666667 41.5986667,3.79866667 42,3.64 C42.4013333,3.48133333 42.812,3.402 43.232,3.402 C44.212,3.402 44.9633333,3.70766667 45.486,4.319 C46.0086667,4.93033333 46.27,5.86133333 46.27,7.112 C46.27,7.168 46.27,7.24033333 46.27,7.329 C46.27,7.41766667 46.2653333,7.49933333 46.256,7.574 L41.272,7.574 C41.328,8.33 41.5473333,8.904 41.93,9.296 C42.3126667,9.688 42.91,9.884 43.722,9.884 C44.1793333,9.884 44.5643333,9.84433333 44.877,9.765 C45.1896667,9.68566667 45.4253333,9.60866667 45.584,9.534 L45.766,10.626 C45.6073333,10.71 45.3296667,10.7986667 44.933,10.892 C44.5363333,10.9853333 44.086,11.032 43.582,11.032 C42.9473333,11.032 42.399,10.9363333 41.937,10.745 C41.475,10.5536667 41.0946667,10.29 40.796,9.954 C40.4973333,9.618 40.2756667,9.219 40.131,8.757 C39.9863333,8.295 39.914,7.78866667 39.914,7.238 Z M44.912,6.524 C44.9213333,5.936 44.7743333,5.453 44.471,5.075 C44.1676667,4.697 43.75,4.508 43.218,4.508 C42.9193333,4.508 42.6556667,4.56633333 42.427,4.683 C42.1983333,4.79966667 42.0046667,4.95133333 41.846,5.138 C41.6873333,5.32466667 41.5636667,5.53933333 41.475,5.782 C41.3863333,6.02466667 41.328,6.272 41.3,6.524 L44.912,6.524 Z\" id=\"path-6\"></path>\r\n <path d=\"M52.85,5.124 C52.6913333,4.99333333 52.4626667,4.86733333 52.164,4.746 C51.8653333,4.62466667 51.5386667,4.564 51.184,4.564 C50.8106667,4.564 50.491,4.63166667 50.225,4.767 C49.959,4.90233333 49.742,5.089 49.574,5.327 C49.406,5.565 49.2846667,5.84733333 49.21,6.174 C49.1353333,6.50066667 49.098,6.85066667 49.098,7.224 C49.098,8.07333333 49.308,8.729 49.728,9.191 C50.148,9.653 50.708,9.884 51.408,9.884 C51.7626667,9.884 52.059,9.86766667 52.297,9.835 C52.535,9.80233333 52.7193333,9.76733333 52.85,9.73 L52.85,5.124 Z M52.85,0.224 L54.152,0 L54.152,10.654 C53.8533333,10.738 53.4706667,10.822 53.004,10.906 C52.5373333,10.99 52.0006667,11.032 51.394,11.032 C50.834,11.032 50.33,10.9433333 49.882,10.766 C49.434,10.5886667 49.0513333,10.3366667 48.734,10.01 C48.4166667,9.68333333 48.1716667,9.28433333 47.999,8.813 C47.8263333,8.34166667 47.74,7.812 47.74,7.224 C47.74,6.664 47.8123333,6.15066667 47.957,5.684 C48.1016667,5.21733333 48.314,4.816 48.594,4.48 C48.874,4.144 49.217,3.88266667 49.623,3.696 C50.029,3.50933333 50.4933333,3.416 51.016,3.416 C51.436,3.416 51.807,3.472 52.129,3.584 C52.451,3.696 52.6913333,3.80333333 52.85,3.906 L52.85,0.224 Z\" id=\"path-7\"></path>\r\n <path d=\"M60.928,3.906 C61.0866667,3.80333333 61.327,3.696 61.649,3.584 C61.971,3.472 62.342,3.416 62.762,3.416 C63.2846667,3.416 63.749,3.50933333 64.155,3.696 C64.561,3.88266667 64.904,4.144 65.184,4.48 C65.464,4.816 65.6763333,5.21733333 65.821,5.684 C65.9656667,6.15066667 66.038,6.664 66.038,7.224 C66.038,7.812 65.9516667,8.34166667 65.779,8.813 C65.6063333,9.28433333 65.3613333,9.68333333 65.044,10.01 C64.7266667,10.3366667 64.344,10.5886667 63.896,10.766 C63.448,10.9433333 62.944,11.032 62.384,11.032 C61.7773333,11.032 61.2406667,10.99 60.774,10.906 C60.3073333,10.822 59.9246667,10.738 59.626,10.654 L59.626,0.224 L60.928,0 L60.928,3.906 Z M60.928,9.73 C61.0586667,9.76733333 61.243,9.80233333 61.481,9.835 C61.719,9.86766667 62.0153333,9.884 62.37,9.884 C63.07,9.884 63.63,9.653 64.05,9.191 C64.47,8.729 64.68,8.07333333 64.68,7.224 C64.68,6.85066667 64.6426667,6.50066667 64.568,6.174 C64.4933333,5.84733333 64.372,5.565 64.204,5.327 C64.036,5.089 63.819,4.90233333 63.553,4.767 C63.287,4.63166667 62.9673333,4.564 62.594,4.564 C62.2393333,4.564 61.9126667,4.62466667 61.614,4.746 C61.3153333,4.86733333 61.0866667,4.99333333 60.928,5.124 L60.928,9.73 Z\" id=\"path-8\"></path>\r\n <path d=\"M66.836,12.222 C66.9386667,12.2686667 67.0716667,12.313 67.235,12.355 C67.3983333,12.397 67.5593333,12.418 67.718,12.418 C68.2313333,12.418 68.6326667,12.3036667 68.922,12.075 C69.2113333,11.8463333 69.4726667,11.4753333 69.706,10.962 C69.118,9.842 68.5696667,8.65433333 68.061,7.399 C67.5523333,6.14366667 67.13,4.872 66.794,3.584 L68.194,3.584 C68.2966667,4.004 68.4203333,4.45666667 68.565,4.942 C68.7096667,5.42733333 68.8706667,5.92666667 69.048,6.44 C69.2253333,6.95333333 69.4166667,7.46666667 69.622,7.98 C69.8273333,8.49333333 70.042,8.988 70.266,9.464 C70.6206667,8.484 70.9286667,7.51333333 71.19,6.552 C71.4513333,5.59066667 71.6986667,4.60133333 71.932,3.584 L73.276,3.584 C72.94,4.956 72.5666667,6.27433333 72.156,7.539 C71.7453333,8.80366667 71.302,9.98666667 70.826,11.088 C70.6393333,11.508 70.4456667,11.8696667 70.245,12.173 C70.0443333,12.4763333 69.8226667,12.726 69.58,12.922 C69.3373333,13.118 69.0643333,13.2626667 68.761,13.356 C68.4576667,13.4493333 68.1146667,13.496 67.732,13.496 C67.6293333,13.496 67.522,13.489 67.41,13.475 C67.298,13.461 67.1883333,13.4423333 67.081,13.419 C66.9736667,13.3956667 66.8756667,13.37 66.787,13.342 C66.6983333,13.314 66.6353333,13.2906667 66.598,13.272 L66.836,12.222 Z\" id=\"path-9\"></path>\r\n </defs>\r\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g id=\"Group-Copy-2\" transform=\"translate(0.338000, 0.500000)\">\r\n <g id=\"Powered-by\" transform=\"translate(0.000000, 45.636000)\" fill-rule=\"nonzero\" opacity=\"0.900000036\">\r\n <g id=\"Shape\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-1\"></use>\r\n <use xlink:href=\"#path-1\"></use>\r\n </g>\r\n <g id=\"Shape\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-2\"></use>\r\n <use xlink:href=\"#path-2\"></use>\r\n </g>\r\n <g id=\"Path\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-3\"></use>\r\n <use xlink:href=\"#path-3\"></use>\r\n </g>\r\n <g id=\"Shape\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-4\"></use>\r\n <use xlink:href=\"#path-4\"></use>\r\n </g>\r\n <g id=\"Path\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-5\"></use>\r\n <use xlink:href=\"#path-5\"></use>\r\n </g>\r\n <g id=\"Shape\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-6\"></use>\r\n <use xlink:href=\"#path-6\"></use>\r\n </g>\r\n <g id=\"Shape\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-7\"></use>\r\n <use xlink:href=\"#path-7\"></use>\r\n </g>\r\n <g id=\"Shape\">\r\n <use fill=\"#FFFFFF\" xlink:href=\"#path-8\"></use>\r\n <use fill=\"#6E6E6E\" xlink:href=\"#path-8\"></use>\r\n </g>\r\n <g id=\"Path\">\r\n <use fill=\"#FFFFFF\" xlink:href=\"#path-9\"></use>\r\n <use fill=\"#6E6E6E\" xlink:href=\"#path-9\"></use>\r\n </g>\r\n </g>\r\n <image id=\"Bitmap\" x=\"77.662\" y=\"0\" width=\"151.111111\" height=\"68\" xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANwAAABjCAYAAADwxm4hAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAA3KADAAQAAAABAAAAYwAAAAD49S2gAAA5XElEQVR4Ae1dB3wVxdY/s3tLbnpCryIdQu+EFqpPeIqgYAEBFUUUEBVQeZaA+BQEwQJSpAhiAQXEJwgiYOi9BlDpICACAVJv2d3vf/ZmLzc3CSQQ3vOLO/ndzOzMmXZ2zpwzZ87MEpnOxICJARMDJgZMDBRGDIiC7FSrH797UtZEQ5umjl15173HCrJssywTA4UBA5aC6ETzFUtiLZL0oVCVBg6bTFbSNqFck+AKArlmGYUKA9Kt9iZ25dK3rELeIGvUwC40kkl7x253LrjVcs38JgYKIwZuWqS857vvgi/aaRm4WRsLCE2QupJIG7qqY/eDhRFRZp9MDBQEBm6K4OLWrAnyuFN2gZtVtwoV7dCeWdWx28cF0SCzDBMDhRkDNyVSCkr9xCpr1S2kOmWFWgcSW3x8/E2VW5gRbfbNxABjIN8cLm7Fd9WDgqSDHqebJE1rtPKubjt6LFgge6Is/xSy0t6iUTdZUJAs1BV21fOvme17nTBRbWLAxIAXA/kmuHY/La4UFRx0OC0tgySP9mmQRDZVaHESqaVsFomsVgsp6emk4S/YZjknBV8qP73RALeJcBMDJgaI8i36rW7f7Qi51EFFQuxkt1BfVagPg5uVCgqyniKX86ULicfuSUu6kmhDYqTDWtJ+vly+6zBfjImBwoqBmyKGb9p0mZye5mpmsYhhkqaOAGdrM7/lfeUvHT27wh5mez40OjTGLmmUnuHq82Hnzk5/5I1YPzPsmTWTQ/3jzLCJgb8LBvItUuaGmAeXzJ5rCbY96oh0QKR0XhKq1nVW20fW91szOyhIs9wrSdpjQnhqy6SWsciaBoXLHkHKyLEtn1meW5lmvImBwoaBWya4Xqu/ehzKk5myDcxSU0koyvjZbXsNZ0T1//mzF0FbL8ukFJWFAvlVIYtM+GkIqxQmQHJOd8XX2gw2rVIK28gy+5MjBm7JtOvhVV8OEKRNlbDxTap7qhDW1++gEklPrZ43EhT1OsRNu5fQtJMWWfrcGhq0OFjNOH18z6lLKrmO1qxXppSmOdujZZ/k2Doz0sRAIcPALRFciE1+NsPtgupFHIHGcqUsOUecpNPDJDA7WKCA5jyHrEJMmdT68Q/98dZyQO+61WPLhkuSQhke92H/NDNsYqAwY+CWRMoXti+ZDgnxyQtXU8nKRCZLbOIFydKzV1O0CVPa9ZsbiLxOI/sPr1y35LjyVYqSkpGxbWTzl5oKwSzSdCYGCj8GbonDXUpOGlIyJErcER3aWFEVV5pT2ZGe4Z4/pW3f9YGo6/rm0AeK3hHyaukKEXWjooIoIyVti9uW0c4ktkBMmc+FGQO3xOFuhJj4NRMjL13OGIpN8L6RxewVQsNsRG6X2+1yjnw1duT4G+U3000MFDYM3BaCe3X9lGpuUp/F1sDjdjuF2K1QYLpcKRA159ic4q0RbUecK2yINPtjYiAvGChQgnth7bS2kix6QVnyBAy8SBYenI9TjkGTOUOz2CfHNxtyNS+NMmFMDBRWDBQIwQ1dMyNOs6ivWzWtrQX7bSAyEkLZC2OT8aNbPT+vsCLP7JeJgfxi4JYJ7vmE6aNQyOu832YhcDShfi6p0tzRrQev8G/MpA2vNdYkUdVOdOmZ5qNN6xJ/5Jjhvw0Gbonghv48o7sklG8sOIQqCXWOcGtj3247+JCBvYkJb5VyS+4hQhb3wsqkJh9WDYKViap5fiOPe+DTse/9ZMCavomBvwMGbong/rVhxvdu1dUZXO3Ht1sO7mQg7J2N79QmzT0QllsDQZDgfF4xE0S516M4qwdZNBiC4VoGjUo+2ez9P4x8pm9ioLBj4Jb24cLs0gVVkelielrF+PXvDpXJ49CEEqtqyj/5nhM8k02ou62ae55ddnz+WJP4c3xYtU6xhFN3hKulXKr6AhD8UmFHstk/EwMGBm6J4FJS0+KLh1raBocGVXJ6XBM1DQdQwTM1zQXu5VkZImnvP91szDKjMvbD5J13pDlTbDbJTh7V459khk0MFHoM3JJIydh5d8W7IUHRtmdhF1lZUTwe7LUd1ci1cmiz+L3+2HtsySs1Q+XL/Yo50oaXCcMxcRlnDJzWkn1aTD3vD2eGTQwUZgzcMsFdDznxa+ItV9JT7o4I8gwKs6R3CrO5KDLISk5FOeJRlIcfazJn2/Xym2kmBgobBm4LwU3f+nzMhTTb/ZLF9Uyk7CzhsCq6cTOIbDup6sw+TWdNLWyINPtjYiAvGCgwgpu4Jj7S4nB2w5HSx/FraZdcIDIVWwDaRUVV52Kf7ovHmswwOVpe3ooJU2gxcMsEN3HDa80tgrqT7BkMRYmdrUwkgSv0SP1W0+hLzeL+ZkCj6Vlu7fpqd/e2QlXLAjZSJtcVSYiD99b/4S9PjNv2UDV0rAV2NPgXKSTa6EouOyU29nR6oR0hZscKFAM3RXDvbXzPoahXn5Bk5QHcTdJGgs0kX58A/zeLpM3weJwLBzafety/pV9sfagcSTBoFsoD2I+rJBPTIPbnJCZOD3PCxa70I716/gUH7+a91FCSaQSa25P7hKN/hBsBSVGtiBLbmtRxNeF405kYuBEG8kVwY9fHN8M57oEWWe0K7hTh5WYetpv8DkdPJw1sOn51YIVf7HyotKaKeBLqk9e4H+fxHMQ+3Z84rhptl5RaBKLzqOqke+tvej6wjP/V8+adVBO7F2/gTG1PcDSd0PBxoP2pHuuUK6khVSOCnEPtOHkridR29WrRmv9VO816//9g4Ib7cGPXjy0N/vM0RMSuQvLUYeNktpkEl9qDG7hmKB5aPKjlhDOBXZ675dE7cUrgJUVRBzAX401wrO12WTXPNJtF+75z3RWnjTzjVj/yVOXwfdNCbNZ7Efc/J7ituylGWOgNiMQ9wML066mtMi1QFZpUJ4bwKS43TV+mPF6zeAY5rDBVUyjN6Ivpmxi4HgZyJbj4zR+Ey0rGOwopA3DMBhIVH7dRVFlTFuG+ko+eaf72zzkVPGdr3xiLpr0E8fFRwYQpsbipbpNUd/wDjf+TZRPcyH8m7Ur5quEuslmx+PsfOl6jqRL9C014FMSGHXwi2KCtRjfeqFeH1nPT5q4oUSvIlj6lVOjVVrgRkGF+iImhLZxmOhMDN8JAjgQ3et27TSUlfSnWZcX1M21C3YWN7a9t5Jg2qOnIizkVOntzv44WizSQNKUb7srTz8JBbNwG066PujdYnO1uEy5jyH8erBUsnXu9VtThHsXDHeR0e77MqezbHbc9kcqrKr0A+nrOkLFhZ70G0uI7EBXxGS6ieT9UqhwSdOWNSMf53sVDNf26P4+HJtWo8b/nyLcbP2b5BYcBY3z5Snxz/dhquNPnEB+3kTXPKUnQS8Ni3/jCBxAQmLV5QFfckTdAlj13SxC1WHmC8DL4s3s2WPR1ALj+GL/6kc6h4s9HI60XHioXlkIRDtxx4vEsaFPj4EMweGbeks2t2UO1LHaCZpPQLjratAb9mg0onxGbdlEF2ULPIhvbdLIuhOXHdbhe88OmdWghPy5aVb2I1X55RHjQpRGRDg+UJSp5FJoHU9F369ShfQxjOhMDecVANg4HQ5BpGhZmGnkOqvag5iMavXwlp8JmbR3YWxPqCIiNtfk0gACxCaHOlRTtw4caL9wemGfwssH24tbTfYoE/zmkpP1ArQh7Om75spBbsa9JdmpTO9Y+mO2rqT/to0poYG8U/jgIvzzmAJ2zQB1PGxNpZvOa9BQIlD9Qly+3NZFKItcQZHrFyAgRcgvKfatJLfrOiFu/PeIVEifHhNoVSRJYsWqulVivjapbmzYaMKZvYiA/GMjC4RbAkv98xROX012poaqqtnup5eg1gYXN3DLoaXzAYwDWdPVkfb8NVKAq02Qhf/hIk08TA+E/335P0T8zgl+Mtl3oG227WCoU95u4VUEucn8jFNuMu+vtzHJQlfOv2ksV8cmr4Wjc0yAoXWnBDUX4hAs6m2CZyuBGPtZnLGxWw6uqD6w3p+c9eygkQ4LWkWgQyuMVGK/BEkFoYxrXIp84u3Uv9dM0Od4ipDuEsME4Rv1Ftqa/XL8mLdHzmP9MDNwkBngc+5ymaWLW7vEXUl0p0S7FOd1hkcdYpIx01aVWxLqss8WiPCk0tTSLjtBWunGmbbqqKhP6NJ13zFdIZmDxro71oCwZCLX/Yw7pqtWCS1/dmvWqorrnop4P7qm/+7fAPKv2U1uIai+Alv6ZSWBMbAcBNwcf41nYtDrp9UxeR2MbRtMIECUpGsU0i6EDgWX5P2/fTsGKXRcdmaNFZXb6mCZoVNNa9KkBu2M33aXKNIZUqZFGQajbtkHSLr/ZsB5lmxSMPKZvYiA/GMgiUvIdkVO3jIqPtts+SHa6nnIr6U9heocYx0oQfDdA4+0Az0Wo9+dpbnV879i5vwdW9s2uu7oITXsSomZX1lKy4lHRxD6PYp9v97in3t1oVxYRdc2uyEhFvvwgRnc/3IHSjBdSzNXwvAnelNYx9FlgHcfSqxytnP4blQgDwV3nhE9iItlSiJ5SVHoVZZTIJLQjKH8yONpEo9zte6iBBvESjPcBUnGVH9l/ASpWyvLlBKtKJw040zcxcKsYyByDWYuZvnVkPxwufdGjuGqB6HC+TfkD3w7Yh7232SFK+OKesROzmDJ9B7HRKSl9kD4YRFYBBAkNBNaBQlkBYp3QpfaWH7PWQLR6p7WuYrE+IYm0x5EWohMahFMM/C8gdU5qWZuyrQO5jOeXxzxVIzhxauMSJDwafd+4Bv0zsGwmtGSV+MT5KxAZS3A6OnoSz+NAaJP94SE+9kKal6g1xy8a2VaDg+PrPml1ZZlaYO2IyYYu4SMkvStXo+X+ec2wiYH8YiBHgjMKmbf9qVKaYgvq0/SjbCIjwyza1qUWSXIfENYQbAHYmaN5N7jVj8EYp3ZtuC7LmTjOs3JfqW6acPWV1PSuIDYmBFYPMhf5THLSR60b0VmGC3SvrKpbNYz2jKkSQj2qRRO+CUnH0t3UsFUdSvKH3bqfngTRvo64siA2dn9CTH2vSR16R38K+Lcjkf4ElyxKWkg6CctiSfOUs8iprVhcRbuWguhgUUNt8GHXwxWqUJWA7OajiYF8YeC6BJdbSQu2d2upCTEUSpP72VCZCQ3KwjNQpExS3PYv72uy8pR/3jWJMaFuxfkUUUZvQSn1BV1leGyK03Yo/947v48W9OzJOpDsbuyaymXt8tEXS1rUoRUjiCJw7dcVN/3oEnR/y+qUbOTYsp/6IPwifnX0OHwPEprHdzw2mugPZ8Ab/u5EsUiIiG5u6PolStVFZxDbebStd82a9ONvB+kn2E22A4dbVq4ydTHymb6JgZvBQJ4JDoNXLNh2fw9NloaB0BozkXmJTdkChfnUsMvqZ23brs2yolqxp0YtKE36SsL5tKD0UFKxFWC9ogU5aGFIBMykirCZVM5uwpoKzYLl4wNKO6hfySCicPzSFDrlVOit2BiaZuTacoC6YN/s3+iIl9DA/MDZ3of92Vjs1eW4SW/kZR8KFaslOPI1WbvcBH3MADdcWrs2zeK0w4doA0TKWBv2BmFqU6F0JXM9x3gx3c1j4IYE9/nmh0uQRXsOGpNHIC7e4d0KcGN9ps3B4JzevcEP2Yhm2b5aD5IinoDyv6MsZ1Bo6FkKCXEdDQqiyRev0Fex5SibsoW7sGYXRSapBIUL9Yi2UuMo6C94DZWu0BHYfL0dW5NmGl3deoAexJ7YCKzLGnAcwFS3Rm8rTpqcm1hq5M2Lf+QQbUfdDfmOFhBbKxDb+rzkM2FMDFwPA1m0lP6A87Y8XpeEa4AmeZ7EVXeQqHQN5Tlws/nCo7wfKDau2FernCLb7rdonsFWq7NiRNRl2Eb+4crIoE9/Pxo+LjbWddi/fP/wod+pxcnT9JjDQb3CoI/HoTrs1ekcjdXxH0Pt/60Bv/kAdcYG+GtYIzYDsTGhQcVBH4LQ3i4IQuN6QGwfQ6xsiHN+JFnortIVTWIz8G/6t4YBHq9Z3Lxt/eM0cg+AadZD+jk3/fsAnl8w289Q7NYPe8YsxBcYr7n/7Gja0Jmh9HWEKoNDw5z4Npyb0pKVK4cP2hecO2r76eRx+9YjBywRly9KVZzp1lIWqxIWFqE6wO3CMpxSiOK2xrTocKLZ/b0OUzSUIenpdAKc8zNFASf0M53adoA6gMiGQw/SiWtnraZLo2lQeExoU5+y7elda2H+QscTqT7E0Z2wo2TzmV5lKtNX+SvBhDYxkDsGfBxu9q6hkRb3lUngF335cKikH6lRl4O7zXygwZJv/Ivgdc85S9MHsW/X12Zzdzh7UqLNX9jp0h8OiF8qJSeR5fQJS52MFOk+q52KhUepFFUUi0DhpVUZxpBJF+2UmmKltnefoK49DlPJ0rQ0KYlmN69BS8G5wN+8buseao/b9waB2O5jpaPO0QTNBEG+38aPILXfyE4R1B85I6FKGS+qkNMoIz++1eYVUcHh5JImseUHdSZsHjCgczhep3nkoK2whyyvq/UlZQ52q2c83OTrjf5lLNnauJxsC3pSJeUxaCTL6tsAspuii6bN3vBD5NwJw+1lrEFS/5AwERcUrJHVBqt6C74O51XP60XJeD73ezDZ7Co9M3x1cteeNPnqJZpTvQz94l/X1n0UC0IbCQWIrhnkIqCZnA2tzIR2MeQzIdMSKZRCYBcp0TP4ldFZn0J1RTnKtiXhX35u4fMoTwuivZBqo9NtVKpcOcqy55hbPjPexEBeMCBYhMQW8itCc0NUU87JNur5cN0v1/ln/nZnXCPeBsBm9sMw8YIOQT+xfRFHcT4gj2V+50Y7jvjDN2vWqgEIraPdrj7tdIoK/mkpV21U9o7kY0Ne3T62Zg36umx4Vk3ixr1UG+umeIiV3XkfjWeEdJmWgnPFt4mhXUZZ2h66k2w0FATWC78iOqCE/QYZG9tWGiNK3/yhUN44LwMyjrwj6x6fUbfpmxi4WQyIudt6L4XW+x62DLHa1PY96y5cbRS2ZHf7BxEeCvOuZt71HG5UJs8erOdmacHFp3WusjxXsW3jb1R/ybyqn347v0ztYqW8oqQEUfLw/qgpZy5+z0disjgQWnVQ8ksgsH4gNoKZFbmstAxcbUyHKte2D7R11BTCY3+ss/rr3IwpUqajeJ4FQvtIVKIspmNZKjEfTAz8jzFgscuerRjf7XEkJ5hcGUMW7+x0pyo8ZXEPyaOaqlWywuhYyPrG9iZVU6d0qbfDawaVQ8MhOkrbf6deoQ4a4sygRok7I8nu4LUbgIWWfPZ0yBAQ2xz/rJsTqSaSByFuIBMaDIop3UEr4X3QuhJ9b8BqP1BX2BP3A8XfhyUmlDMoEvaWeP5MNKEpBpzpmxj4K2PAclkNH1tUunAo2CEWapqlq0fVugbBzIK/eqNC4ygk97cej+fjLvW2rrheR9bsp/74vaYpVL4stqDnfFCM9m0Pp4rV0+jqVcvPF086Hj5xYYXPbGsDzrpBMfE8yvRxu/Rg+gmMdnSbSpTAdWnx4GF16AlwrhcViarpOhfYo+A4zbf4vSfaeOGu1y4zzcTAXwkDzHt09589Xe4Nssk9VdVZBQqDA6rm3uPyuJZ1qbf+uierV+8H0Wg0AIVUA7HRnRDpfj1A/x71XMuR6WmWiKvJ9veOHlvBJle6O3aeSv7xJ70MbqhfZwDCoYwg2oxLe95pXd6736Z9AKExkl7yOGigJlNJnUOiUTADmwLGNtvWJWfDZqMO0zcx8FfFgI/g8tvA1XuDO2uU9j6IoTIXgg/hpJa7kyZfOEDxw19o0f3XAxGfhUZ6ehw7ufJrLvvUFYq+mETPp16l4Tg8aoc5PmWEUCK8Ya3K0Q8Mo03WT2KPdIbTY+BtoUyM8C9BbJyp2mmKoxsdZzjTmRj4/4oB3z5cfjqwaq80ShNprzM9gNic+H1YvCi9XTUSxAEXLBXt0KjluaoJCVt+O3OGgtNsNOj0SXoDcMESzt6kh1OizUlj25ajeQzvHEs1YNUxGKexB2o2jtDFxiPCSjNsDvpA9DRV84wn0/3/xwAzp3y5VftoKghtAGfEbx72xYZ3qE1/5FTImXR69ewpegEKlCio+skVSbx98FLr0qRvpLteo8YgwHecYdSOOV5mYzaD+N6xD7pmzpVT2WaciYH/jxjIF8Gt3qffH/KVTmyCRsfV0u8HydbvxN/1O0NGX76I6wyw9nJH0RGcLH0rrgzNZmD3i9RRs9OrILTWUOl7tZhEyywWmhj0PK3KVqAZYWKgkGAgXwSHW7SOgLtVxNpqcVwMNqYDHAyLn7U76HnFTZXc2HpzFcFGtEQj2pTwHqdJeY7uAiN71R1JLaEM8XI0mT7HVsDU8JG0LqA489HEQKHDAMZ/3hxfWQcaqchmWti/9nEhtgzBpvM/oKl8Cr/KThhCOSNw/KYovdkm2ktoaQPoAXwi7pX0IGrgZEKDHIpyJnskmh79eu4mWNoCktNPU0nH83QGyhnUXLAuLi7OsnbtWrSmcLiYmBhbYmKi18qgcHSp0PUizxxuPW4ntlrphBubzjgcfRmcbjM4XRT8pqAhgoKDnFGUBiJ6pV1R+oAxlfoIdYYt85iMYlRfQ7pemUzjwd0mR72Tu8Yx6W2KQ5mPY313FzIVB5c8C4KbGTKUXruVN9CyZUvcf6J2Q0sqopxy+IWi3GQQ/zmEuY7DuLhspaIoWzZt2qTbULZq1aoBbhmDxQ1ft+J1MKT+eOPGjSeMZ3+/VavYLvjWeWt/eEXRxqE8XaGUFbZVHdwX0wGq2Oq4tKgEyo2EH4r2YfeDLuN3Hm07jmv6ZiP/Yf+8HG7dunl9VZX7IVgNU1hl+LhWSb+igu9v2e5yeaZt2bIl2/oa+WKRLxzlnkM/diPPDR3w0AJ4CINbs3x57hZGRkGxsbF3SJJUA88Z69evX2vEN2nSpIjVau2Ard5GiCuG/jnQX3yxTHOi/NPwF61bt2mrAW/4cXFNy7rdltp80ZXFYtmMiZLxc0PXsGHDYIfD0RplS+jvrznhsXnz5tVlWbAxfhW8fztw6QL+8H6lr9etW7fzRpVgXFXF++4B+ErIi/fHTsvAP7w/sRr+ug0bNqTCV/PM4VrG0MlNB+gth43+5cHAAKH9gy9FYEJyl8DxmHSa2ro4vYdCKemhyDh76uVJzhCqqxOailPYHvpYsdCEIu/SKYbJyaW9Rs09bAfpoXZMnXgZukPnS8FA+dXUj8kVMpDezCnv9eKAkPJ4T18C6c0zyd4HjjpK4IEHa2Z92it4oaXxqBMcCKIl8ozwz4dbYVchPUeCQ3m9UNLD/vB4ngN4H8GhPY+jLa9pmlrBC+c18EY/4fR/HNAdx1ks4jgefATXokWLMMRPBYE+grK9gNf+F0ewLtpxj9VqeaVly9gx69dvfOtaMt66Ko1CPgx6QRhswcbk4g/jH2YiQVvXc9zVq1fvh7fIPz2nMMpeijrqoD8HkV7TgLHZrF8g3BHt83OGgTvEGE281LJlizX4CMyjaNfvBpCi2CrhouFl3F8YYvA48+3tGjA5+SC29sjDJ1BwAkZqBxgfHuPimlXweGS2Urqb83rb5G2YN6wCfy3WoA/9MWkcZRh/B2K2BgUFzULO3sZ7vJbufY+ol9uZCOmjAUsfeSY4Lgg3Hb+KG4/X4AMX/1Ad5EgvRudsV2hZi3DayempndrcQ1Lq6y7LpUYZJTBxqbikzpk8xYO7HotNzvlyIM539RWqCtvJ4Th02h9XpOjmXRh3i2CJMg9WJltgpPwk5otRko1Ga9PoHTGAjbvy5iA2lvR43LuAwOi85aD1mNXOXoOVcElRltGBAavybJWbOxOYIMtyFjEPxN8aMBUC4XJ79nhgQZrpWrduXQ71b0Sbyhpx1/FxMYUYA6KrCKJ74hqcwL6n1oGfQcw8CH0mdNdgroVsNhuIzIcDHpzXJTgQMeMaxKa7yZm+7uE9yBiEwBGM9XDBE37JzLXgkEdqhfgmiGsry9JulFPemAzwThIw+HnQVwRMY/h5dFpsJuBVcBkQj9exdODxSDyJBGdGAcdiE8J432okCL8x2sm4aYv6DmCSq4v8v2TCsidAzDuQVpsf0K/V6MY25LnEz6oqIsDFyyC+L1KdhqifL4LjgnCfyE/w+Odzya36PKDZUkdlRCfV1Ky4QFUrlkHO9OmabP+46JzkQz7AgMCF5yCOCnpadcFgWUIiJgV8vWYxiG9i9NvXlChXXsbkBEaN4zqX8Kp8bz6guBwfQWzvIyGA2AQMnNXteMFMTKhZKwKY0mhAFfh7ciyoYCN5oOXkTqENEJXYolREwteJCoNOxyGv0XDxLhNfILGlAXYb8sAXSPMOgmsViMch6q5Zt27jZ5lxC+GPw0/CgGDR7roEh/Rm+OkOAwpEcX0HTtLQgMDk8B8jzD4mn34lSpQ4s3DhQsU/3gijnSMw2MfiuSiIbip8DFjd4b1ri9E/5hiNMJFG5kWsRP/uQpvhtK/1UvAPxFMa0sFmBG34pYJQ+gM3Xxrphg9JBMsPaBJwUSnKSLj77rvLG+I0JrHRBp5RRz8Q46dGPn8fXDQedYH7eF2+Cc7IyH5KhfiSWqk/57uKXWyngXJIjUghZ8ZkVwhNKDV7eW6DipIGUHd04AnNTZ2xPsMpHxQm0RqIk/8uOu6aQobruDyU3lWv0jBLeTxk0MsiHsJpHh1eigUE948A8B0ul+uurVu3XgyI5xeBdgmfGBOYfhufMctLLTGL7/Wvg9daiiKVNOKioqI+ArbuMJ4z/cVut2eg/1oNg/YBDNqvkM7TmO7wPB34+BqDlNdUJzGYEr0DRrQHwKhMsJw8vFgvN8xMrHSjwQ4cdkAeBj8VuNZNSEjApJK7w8Afh8FcD4QFsZz64J0MwmBO5hzow/cYN0xwDrfbzVzuR47PzWEdWRzwdTkdeecYcGgfCNdrYoGvQjVOSNjMYm82BzwtBp7uAexyJBZPTr4yDP5bXkCpK+J5S2vp+vU5ExvDrV27+bgX3vvf90L8I/MS/rNafOmMmuf2OKNd7TRXKJhmyARcn1qx6ILlL+dEbMf6xQVderTqs5ceL7NT84R9A1OwziA41lguw43L/4h8n9oVHX+N2FJepQ5Jz9A2nAoYZikFuBSaHzKEZuSlbX4w4BI4Y+DnMJt9mhOxMQhe7CIgeYsf+H8rmBJIbFxxQsKmjdwmDkO8KoMX/CSHrzntZ7zs7v7ExmkYtF9j1n32Gpwe4kH6oBEHPPycGW7ao0cP2YgP9DFombuVw4+nRRaNMYl5HoF/Hae14EQMRoOjXgc2exKI4z0jFtyygREGLtag1NP8DKLpYcTn5gOG28ljPBWKGkgAuqIpFnhksRVO/Cs3YvOmE2E8/IDweu+z6G3EowzmjhAdc17LX4PLGrppghNlUueSM7i45gpJgTjYqdjST4eVWrgwG1e78PA91S/26jAu3K2c1bSojzR3ifqapwJmnPJf4QRA48ip1CXiI+/d/ZgTRfJL1PPyYNrkukA/QvPZSAIzVp30VvAIfEUnnw5rj3Rk0adaIyteZk8j/BfyLbwAv1578O29bIMcL/uJ3PJgcE7FgD/sn45n5gq6g+Z0bmbQdvbs2Xszw9k8DNqmmZHfwp+XGW6VDTAzAhyBZRGd4FDH2tzgrhcPMZTXaqoXRqnqD4uJIlNE1R7yj88pjP524nj485izcxhrq+Hss8MElMcJXMz25qDq6F9FDmNCg/iuEz7Ezrw7S95Br0EmNX+tvjtDbY/7SzyqXatbbOkkRlAWd+6ffdtbrO4+wu3qw1dfkcDaVGT8Lmwpn2KJMi165smTRoakJ+68Q6MLD16Sk58Wl+hOnpN4mwED6isoUcZGjb120tvIkxd/5cqVqVho80K3jh88cNaSRbdJWKgvxMDUxRW/9L9kEBPFAwFzx6UyZcocZ7E5pwZjgHmQB33XtwsyQbRaBixEve3ATQqesTpmlTZBzMruMFj7eWPFx/AxaDUQudYO6xm7sZ7xzwVN4l2ol6MuYMJL8E/Laxhr1ktoGxMIKzSySCgYEx+hTU8jPgzvMQ4caC3C2Ry2MUpBs3o3J6A9LF7rDuF6yM9uESSDq3roBv/wFd9N2EYxoOoicBQT0UcoeSZ+ZdFWcEDxHNoCJcr1XY4v6/pZMDM4HfUIB1MV2YX+e3wD9mLciLKa1RlHsud5fMKqAblsoC2+WMi5VgvKmBL95dKveUFglH/+kU6trdLlQaonpYeQ8LEANQo7Mlf+0LQri7D1MKnYjFv/6KKqasOhol5h1On1daXCTCB+AtYL30kSzUlI2Lg6K8xf7UkrF9CikLNnz/BElyNnxCAAnjUWqf2cuNPvgd/Dp/hB9BQdWKwMVGRkDloeYLhNLX3jjh070lAuc57i2B5oD38Zp/k7zPy62Ar/PwZX8U/nMMTUShAVWawDp9Qa4D1g24FVZrz3qK0HURxEWF+rgyP5xgviWOxPRBu43xUB+wz8tfhlc+CSXTMJ66hBlJicQrGmL8bASAvF+rAvgpChcnfgqE4M8hg/CExQuqg5C1uTNdDuYXgER9d4AvsRJX+A+v7jB58leFME5xG274JcVkUV6TbhSj/zR9PXloLIIhW32k5i0RYXo2ggSFl2zlMcyqzoJTPX+td6ofsj/ch6tS9p7jhVRfs1BwjTtU3IqbMjrcU+EdN3uP3hbyWMmXwlEPMkEDMjh3IwIMWjQOijgIFKWB2FTdcA4swh1385irlJcvLVwHdlRzPK57MpwcwRmftxPknSFmFAg+Co2JkzZ7rAX8rxhsMeJBROTAd0jImNA8DjHgzW+pjh78JjFoLj/TrAMyHyGusb9gMd8DwRZQxFSb4kPPs50TCTUPQ4lJMl1QsoPkD+SQh3xNrWYWwd+BXCBMX9ghNfeH3sUDmdJaH5DOFn1NkJMLrIaaTn7Ov99yVBKoowHtat2zAcCqot2FMfjRJrIL4j/I4gPP5CEz7LJuaA+E4a8OwHvkT/tFzDpXcMu3Ch6oS7ZEfEPEkJLqU6M7oTbLe4NLDxC5Ka/Klbk2YXW/VeolFIUtzQSMXheoosafgElqeScIWRhqsbNMm9EN+gmxb55c8/GbAF7QMxn2C23gqCGglE6zNwYB2Ib44h+APElFFAUrxfelaMIwHX/KGz/z0H7sJtyNaOm2hBFIjN1/bUVOc6hyPoHMrBIV+tK/wsBAd8dMYb5cE7x6gLBPAp4urjx2uX54x49m02i7EWvJzTLI+BCO7lXd8B/AS69AkG8AFwuyucH2ErfmXQlvuQxhNAjn2GYcJX4FRMcJHYZngA/jz8fA7vkLmfLj6jvZ/7EvwCaEcC6tmEdJ+s6JfsC6I9APESPbdPkuQEXyICrKCC9zXG132YoAahyTzhVEL5o9CGV8FF3wVX/peR56YIjjMX/fXFnxJj4iuUpMi25LZUEm7hlkPUXRGu6D1ix798HIrXe6o9Y4DH4uorFDmIVEwwsnKeJM8U1ZIxv/iChVkW9kbDCtrP1AI+hJcBotNY/Y8B49sU9atOewMwJzFgZmVGZpthYamhz5J+mW5rEETixGB1BVRyBi8XX4jVP2gXkJT9EbMwRA99o9nXH3AtNzjOZxgcEItEb3C/51BXCudGuCgGNVTi7KQlXp83yi3zMwd7OYiGjSFBbDPS4GPAoSRx7WuyRhpE9zcRbpGZ/iYmwdeNtBz8megvc9QcxT208RzS1yI9Du+QxcosBIe4EYhjtwHv/YA3yDoB9Tw4XDqeudzvYAww3ki7VR/1MI6WACe1JInuBxYG4rkEcDESfW+Rnu7syPi+aYLjBsYkxvMgyFEEu1B77H1asPNZN7k7kNsG+kJVknpY2NS308I9X5RbmPUbc1zef8OBkFj+Z0SPx6zUHhx5DMLNstatvY3n2fjx4NS1W1nTSV8HBMTdzkdux1n8SvtVEoy+fOf3fFNBEOznIEYQHNncbjdzla+4IKj+Wdyy47c3c7LiaMJgv4DBvgpBtofsD18nOO+2hWjAMGAK89n3c+BUuujKxLjpBsRGmPCivKj3KyFbULwFmDhEN8N+ZW1soexjEF6Lnj175lEOYyLxbS/wMytJ0PbzCOJT0riUyjsOOKnAHCag/ShsPyasCR6PawL6/RR+bSBJjEb8K1KB1YSCNIqX/qg6/qnzVcYdwR7bYkqxdaA0WJ44g1apqr1H0YSxVYqsenfW/4rYAvuKgfQT9rEgSl6zasmEKQ5iLMphSVIvZsb5PEgYNXwP/7WA8HGZzCojIa48cavVY6Cy2dtxLgeD8Plr5WmsCYQTc72+/38x3fskuvL6ksPYthjgjdN+w0Sw3hv2/m/atGkYQkH8BOnie29s7v/BReXcU70pqIKJ/iw/wTjgMW8sUeZaNBjPf0KUW2TE+/mnM8MtgT9u121xLCmAgzJOjGVVD66owAjuVPV3HzldPeQXt6ROc8tU0cOq4Qx5mnDa2hbb/lrH4hvjv74tPbt+oWhEXpz4LBAKIqc+QGw25w6kBYhzYpAx0ALz4Tkph7hbjsIJhi8DCwGBvI9B0ygwPr/PUJ4YnKCpX95WHA4ODp7qF6cHsaYE0bB5HJVITb2ii4kg2l5eOGlmIDwIyCfGIs0SmH6zz6jz35wXePARHCbDNzgOaRPZD3SAnWPEod+9jfDt8tGObzLLZjG2YDp/uOq7c/ABq76Zo/tPTE+TNGysljoywphNbld/blSuBvmZB0ASNJErsS+0l+V//0zgZDh2okCkykKbGqzALzHcqlU7rkAMYe7S0y9fUWgNoQZuORqEsM9ut1/A+iAMYVZvQ4PnB1lAQWjiDqMdn6O4R/yKDEFd20B0HyJuOdrwG47PnL1y5YpstwsYzlpLg6NUwyBsjbl1MDj6n355fUEYR8/H8ZSxiHCgrO7wPZyIspfxXiaH/R1rLAE3F+mDsZ7tiqMzv3o8rKYnDQT6kT8sh8FpUtB2LgeDTtwDfxTH5+agTVSx1sot2ReP/s4E3GhEROFddAD+N6B8Fmu1jIyMHNdnEGdnARZpWgRE37GwdVweaH7lq6AAAhC7q2FMsNP1Gjfu1Q0qPVh93GZF0vpyadhpnYRDTZXKHxrx77KHX8qV2Fj0vEGxBZWMoS8ex+9F3ovDYh82hC32gwhXYcD8hDDOv/GxE91o2VcnELQ060AT+kzqA/AGauGlLcALP8jlwqgYm6HE1uJYMN8eFxYWzn3Jhlce+PgtQ1t+S0tLPY1jOaexUXsAfYPYpU1Gfx4E4ZXPrVW80Yy0uZyOcthC5VMvrDbF62f/L8vq7EyYpz0ey8ZMiFlZ8ebLh+opUwylhsD7276UHAKZ7fHnijlAEfF2ANo6yZuovY/+r/OGxb9ZQZFjJuhOEH9fZloYjufsyJxkcgHHgc+mTUtgYq7pDwCirYt1a7R/XGAY5d7NuM+M38n+Lc3Fe2LGfiITPrwI1Fg00b3aweGLAyvlZ63HAvnMvhO4Vo/6SZpaC3mKCVW9YrHbfoje/8LAnPIURJyXe3nPceWjvKswJK4cyA3ACIcDeePyUY4PFPmqY5b/xYgAwWOGFS8azxg0F9PSMkpdZ5AYoKxQAOFoaxFxpy8yDwG04d/+6unALBg8lZlgr8WL01gnlbv2nD3EkxdiY4wUGBlUgNLghPEc4Av0GzjwTW6H0O9V4DK7AMec1wKq5AHMBscsJjOnZdFwONqdI7fidCgneDOb8+tLAI6DMXfEjaxI0JbH0JZZDJ/p9qK2zah7P5RIFyEVBKNtZZEGhZrWHv7vWO9XYFjUyfakFxBvQRlroXhKQPQvyJukaXI0+lEvM09Lhvc6UQ34/FUyHvPrb68zrgG2tp/gL3xjY+qx3IjtaNVx/Y/uO34CIudShbTuHiGqegRFIV8FjyqeTmow9bP81p13eKVU3mF1SFidyLUCiY1TIIq8C+T2QTC3AaUXkMO/o4hLzhovivk/Y1AVgQgERN7Y4aWdTE/PYDGF1yjOG+fwQmBNmtuMrwOwyIoAOKLh1GxrNyPF8NEGH6fCYFt5HWLjLDipbcPped9tbNURHoRoiPzaUvzwrXX6BD+WJnRi40ySpJ9852COjpUTeC8G92QO/dWNiI0LgkJjNhRiWE7Q6syC66Ccp0BkH6At8xE/A/4b+N2FdBCWv9VTeknEs2ImBD5O+Iux+C2BEcHPkCrAdPR1ZCaxsZG4qMfExvXk6SUzYKDbEjNuhtBEf6tsX1l/3xBuVBa3u9Lr3UIcRUZoHmczrgS/JBy+WiRrIkGCjZ9kU0soLs+3wSHRJOzuiCJbhlzNUkABPeDAZhXI+q1QXDX86gIZkfDtQCjvaKZjNjqKxfM+zGobgZT1N6qWZzdFcfUGfG2eyfCCgXT8h9kM8oKwBCP2DNJOw/8Fs/P2wDIhamDWJOQVKuBwvYBIRdWsSlcDYa/3jHJKo+1d8KJrA64uZuVQ1M+TaAZadB7+HvxOwoh4O4hhN8LXdVweAO7ldiUlJc0xDk3mlokNroOD7f1Qv4wZfzEG+h+5wfrHg0vH4RkKGjUG7a2IMGslFbwTXl/zBMVtP4vfL1ardTeIyoNwrg4iXzgUM48wAOD5CBK4T95d69axrRVFNAHOqiNXVfjgtvrpCObIvwmh7A6wQJIgPZVAkzHuBfpAuCpDP79oQxiToDiFvu1G3E68/+X+LblpgttQ690dFmFt4HanTW55aCRmKq9bUaR/u7CIEi+FhxTpBLERkapicYs3ba7UsXcej88w4I5WHzdYqMoHweFFcYPE5dCSe4dnW5wbsKZvYqCwYIBZ5c052X4Q4leD1JSUZz913F/MERKaHB1col5YSJGGwfYQbJw6wdW0uVZVer3ar8NOGJXsjxnf2Kao4xRNjbPag0hxu14obRKbgR7TL+QYuGkO92PM++Ujw4J+smpyZcitpOEqLxnHcFyuNOxauX6QbNKohntf3Gzgb1vM2Cb4KOqLgkRP/U4qbJNLJI+udmgY5GTTmRj4e2DgpgnOQM+WJh93gwFpeVJUWXM7z6hpri1Nfxl+jNO3N4wPVtPDB8o4b4ULoppyZd6fuhSr4dF19g3jTWXTmRgwMXArGFgTF29JiJkwcVPM+OTNMeO1LfhtxW97jQnfbYsZ1+JWyr6ZvFikwzYvu4MCJJQv5smecuMYVhh06tQpxP96gg4dGkbcOGdWCLShZG77OWzNwun+OXKDDYTzzxMYBqxPhX4di5nAbOZzAWDgljlcYBuWxYyv6ZD1e0ruYNERZssnoMT7HHcjvd/s2NA8abECy7zZZwysSBiQ4g5IgYs9RSjUwBtx0DQBGiYcpdAaQat3HBq8xNDQ0L1paWmtoCn8getiAoVmCtpNHByRtOo4gjEnM74HLp353eMRobDMiIFOiDWry7lslNcX4ZOAl2C5McdqFY3xbJEk21ZFcb+JbQXdTpEv+HG5lHUpKSlJ0dERA6ANs3LZFou6yN/igdsIhRNU1ZTs8ajLXS7XyeDgoAHQhnqgFUT96g9sB4m2dgBcG/SR944kqN6nwOKiItpTnvvDk0JqaqoEbVky6samvJaCvSK+lw7XwGnoIeE0M+87qRXQz29Rn4Q9qr4ul2dpbne/cHtNd3MYuOl9uJyq+67qe2WsFrEdOtw7LLLlfKjF9kSzxBcqNNv//EgmtoQaE0vxL6e8tyMO1u+VUW4UBttk+OtBIH1BhKHYJoD5lfoHiOATqMs3ZWRcLY903mzVHagMMFKs1apATS3iwFVgksSO920sKUhvAEJdinJn4ncWgxcDmTIQngYtP27xldtAzRyJXx20AYObekHl/oRegiqaAN6DG7geAuGUw37Qe/wDsZ3gdHYgon9gXQw1t/Qx2jgRe2SHYGpWE0RVBETxIQh8F/L28nI7tQ+OdH2BuichaxTU8wPQP4XbymXB8mQsvPc4jPxt0S8ZKvRVmBguo3xMEDacC1NroLwmDAOHaVLEwQwu39zam938fz0MFCjBBYXZpitCODCDft9i99ASDfYMmcWV/1j33UHr6kzYh3NwZ8AhzmyIGf/FAlifXK9hBZEGLoA9EYn3ZDTM9usR3sCzPwbbXt5HAxF0Z7MdXAh6ETBJRp1MEDz7ezmOfkASdNqsAgb6JWyK78WYxMFHcS/nh0jJ+2j7kLcuOMhgpF3CgP8NdVhRxhWkFYP/GPw0nJXCKWOxjgcz4vjKb91yBeJpMMTRcKN+EAD2dehL3oBHxRbUE4YyeV+qOMKDkBcbyAIbt1IcyksA3AHOm5R05U20PRhx57GXdAb1FUc0a6KP8lXhIKQDqHMl72uh/xdQz6XMMF8xfidzXxB7n8w8Pnzg2XQFhIECI7h42EcG2e2dMajpkHR66xMxPaJfjBnw6pd1R++3apYPnTiBi+8OEE4SkCLooVKJp/RZt4D6kWMx4EYY9CrUpoZT75Rl91XM5rjDX90GrsAXyfyBgcsioW+PEBzKjQGt40ZRaCWIpwKOgNzNBJtZUjLSv+f8mfeAhCEem+j6wdTi4JpHUAcusRESCBz7/VIZ0PsXEN86Aa4POMwZ+BaIiXdyeSEh9kYZGY5eHGaHvC7AVuIwiNMOryeIiDfW2fICp6LpHyAcbMrSnwjrcJwWHR1dGYRTFnXBWBtmCUJMAJG9h/58DXtHhMljbCKj/zJg9EkPxMxmTCA6yxaEuY/JaCPXa7oCxkCBEdwb9IaW7M7Y6YK6P5IiRrWSYy52tFR/s7gWGZNGiksR6piMNFuQQmIrEx50ms0LuC/ZioN4hTWWAFNo0Qsz98sYrk7mWhiI5TDAENWyG9I6giiczDUy4XpADMRJXex1wIF4YDEg1cfAvh+c5CeOQ/6SINDOmRyhIqLCQAh7MdDfQbkXsP5qjzi2lnBgsIPgtDII49yW9gmYbdPk5GRwRXUD8jyNNuBOFekhJPvW0yh/KZ4roj0DsLbsD7gSmBSg6FBPsIgJm8UxWJuOB8GvAydzA+41tKU3iAX2niKB62KHtO5o069Ywx3HIyxIFJ/Yij4FI05XnsgyhaO/Tr6klScLxIMr4svrpitwDBQYwWF/TUtKcXZPI/VAuAjHCImGjYuakizcH0lWucJde0a8pjicDXCLSX2203HJ2qgC701AgV77QG0hBnBRDPo9GHxjGAQDczaGIwxndWNZvoTmdwzUr8HJMNNrweAeUCLIXxjFgSDHQeECcdFw0myUeRWDNhoxbHT7BfKzwoFNi97G8yn81lqtniU4OwbOwfeA6Nbth0AsrXAnvR0Kj42YAHh9xcSYCI7Cpl26QzuPyrJ1OIgAx29wHZOifYU4NtH6igFAFCuxHp3PGlYQ4OsgyLPgVuVAlBNBhDoM6oQvYhmejaLR/thLl66u4Wd26NP3mJB+9oYpAWXrbcQzskqQPvS7TjjZdAWIAVGAZfmK+rze+I5WGTKNzbK956YXLnHCkjrj++M29BlcoUTq9M57RgzwZTADJgb+Jhi4LQQXiLsF9ce/bFHp7czKFnXbM4y1eqYzMfC3w8BtJ7j59cb3UhX1M2xIwfSLvuu5a9i9fzssmx02MZCJgdtKcNMaTrPalWRXGD5hhe8UL7x/8+CeJuZNDPydMcB7NLfNRVWMUsVJz7Qoe4jnrIrvm5rOxICJARMDJgZMDPy3MPB/iEqmY8IvemoAAAAASUVORK5CYII=\"></image>\r\n </g>\r\n </g>\r\n</svg>\r\n</ng-template>","import { Component, Inject } from '@angular/core';\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\r\nimport { LoginConstant } from '../../constants/loginConstant';\r\nimport { AnnaLibAuthService } from '../../services/auth.service';\nimport { VersionAndTermPolicyComponent } from '../version-and-term-policy/version-and-term-policy.component';\nimport { SurewavesYearLogoComponent } from '../surewaves-year-logo/surewaves-year-logo.component';\nimport { PoweredByLogoTemplateComponent } from '../powered-by-logo-template/powered-by-logo-template.component';\nimport { NgIf, NgOptimizedImage } from '@angular/common';\r\n\r\n@Component({\n selector: 'anna-cognito-lib-sso-login',\n templateUrl: './sso-login.component.html',\n styleUrls: ['./sso-login.component.scss'],\n standalone: true,\n imports: [NgIf, NgOptimizedImage, PoweredByLogoTemplateComponent, SurewavesYearLogoComponent, VersionAndTermPolicyComponent]\n})\r\nexport class SsoLoginComponent {\r\n constants: typeof LoginConstant;\r\n\r\n constructor(\r\n public authService: AnnaLibAuthService,\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n }\r\n\r\n signInWithSSO() {\r\n this.authService.signInWithSSO();\r\n }\r\n}\r\n","<div class=\"main\">\r\n <section *ngIf=\"constants.forgotPassword\">\r\n <header>\r\n <img [ngSrc]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" width=\"145\" height=\"50\"\r\n alt=\"Anna Logo\" priority />\r\n </header>\r\n <article>\r\n <p class=\"sub-title\">Login</p>\r\n <p>Sign in using your corporate ID (SSO)</p>\r\n <button class=\"login-btn\" (click)=\"signInWithSSO()\">Login with Duo</button>\r\n <div class=\"dashed-line\"></div>\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template>\r\n </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>","import { Directive, ElementRef, Input, Renderer2, SimpleChanges, OnChanges, OnInit } from \"@angular/core\";\r\n\r\n@Directive({\n selector: \"[anna-cognito-lib-SpinnerButton]\",\n standalone: true,\n})\r\nexport class SpinnerButtonDirective implements OnInit, OnChanges {\r\n @Input(\"anna-cognito-lib-SpinnerButton\") loading: boolean;\r\n @Input(\"spinnerButtonText\") spinnerButtonText: string;\r\n child: HTMLDivElement;\r\n button: any;\r\n\r\n constructor(\r\n private el: ElementRef, \r\n private renderer: Renderer2) {\r\n this.button = this.el.nativeElement;\r\n this.child = document.createElement(\"div\");\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['spinnerButtonText'] && changes['spinnerButtonText'].currentValue) {\r\n this.button.innerHTML = this.spinnerButtonText;\r\n }\r\n if (changes['loading'] && changes['loading'].currentValue) {\r\n this.button.innerHTML = \"\";\r\n this.button.setAttribute(\"disabled\", \"true\");\r\n this.child.classList.add(\"spinner-for-button-directive\");\r\n this.renderer.appendChild(this.button, this.child);\r\n } else {\r\n this.child.classList.remove(\"spinner-for-button-directive\");\r\n this.button.removeAttribute(\"disabled\");\r\n this.button.innerHTML = this.spinnerButtonText;\r\n }\r\n }\r\n}\r\n","// Angular import statements\r\nimport { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { AnnaLibAuthService } from '../../services/auth.service';\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\r\nimport { ISSOLoginService, SSO_LOGIN_SERVICE_TOKEN } from \"../../config/sso-login-service.token\";\nimport { VersionAndTermPolicyComponent } from \"../version-and-term-policy/version-and-term-policy.component\";\nimport { SurewavesYearLogoComponent } from \"../surewaves-year-logo/surewaves-year-logo.component\";\nimport { PoweredByLogoTemplateComponent } from \"../powered-by-logo-template/powered-by-logo-template.component\";\nimport { SpinnerButtonDirective } from \"../../directives/spinner-button/spinner-button.directive\";\nimport { RouterLink } from \"@angular/router\";\nimport { NgIf, NgOptimizedImage, NgClass } from \"@angular/common\";\r\n\r\n@Component({\n selector: 'anna-cognito-lib-anna-login',\n templateUrl: './anna-login.component.html',\n styleUrls: ['./anna-login.component.scss'],\n standalone: true,\n imports: [NgIf, NgOptimizedImage, FormsModule, ReactiveFormsModule, NgClass, RouterLink, SpinnerButtonDirective, PoweredByLogoTemplateComponent, SurewavesYearLogoComponent, VersionAndTermPolicyComponent]\n})\r\nexport class AnnaLoginComponent {\r\n loginForm: FormGroup;\r\n constants: typeof LoginConstant;\r\n\r\n constructor(\r\n public authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService,\r\n @Inject(SSO_LOGIN_SERVICE_TOKEN) public consumingProjectSSOLoginService: ISSOLoginService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.authService.consumingProjectAuthService.isLoggingIn = false;\r\n this.constants = LoginConstant;\r\n this.onIntialiseForm();\r\n }\r\n\r\n onIntialiseForm() {\r\n this.loginForm = this.fb.group({\r\n username: [null],\r\n password: [null],\r\n });\r\n }\r\n\r\n OnLogin() {\r\n this.authService.consumingProjectAuthService.isLoggingIn = true;\r\n const username = this.loginForm.controls['username'].value;\r\n const password = this.loginForm.controls['password'].value;\r\n this.authService.handleSignIn({ username, password });\r\n }\r\n}\r\n","<div class=\"main\">\r\n <!-- Load login page when all constant variable are intiated otherwise it will show a glitch. that's why ngIf check of constants.forgotPassword -->\r\n <section *ngIf=\"constants.forgotPassword\">\r\n <header>\r\n <img [ngSrc]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" width=\"145\" height=\"50\"\r\n alt=\"Anna Logo\" priority />\r\n </header>\r\n <article>\r\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"OnLogin()\">\r\n <div id=\"alert-div\" *ngIf=\"authService.loginErrorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p>{{ authService.loginErrorMessage }}</p>\r\n </div>\r\n\r\n <input type=\"text\" tabindex=\"1\" formControlName=\"username\"\r\n [ngClass]=\"{ 'input-invalid': authService.loginErrorMessage }\"\r\n [placeholder]=\"consumingProjectSSOLoginService?.isSsoIntegrated ? constants.enterUserCode : constants.enterEmail\"\r\n autocomplete=\"username\" autofocus />\r\n\r\n <input type=\"password\" tabindex=\"2\" formControlName=\"password\"\r\n [ngClass]=\"{ 'input-invalid': authService.loginErrorMessage }\" [placeholder]=\"constants.password\"\r\n autocomplete=\"current-password\" autofocus />\r\n\r\n <a tabindex=\"4\" [routerLink]=\"constants.forgortPasswordPageUrl\">{{ constants.forgotPassword }}</a>\r\n <button tabindex=\"3\" class=\"login-btn\"\r\n [anna-cognito-lib-SpinnerButton]=\"authService.consumingProjectAuthService.isLoggingIn\"\r\n [spinnerButtonText]=\"constants.login\"></button>\r\n </form>\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template>\r\n </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>","import { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { ISSOLoginService, SSO_LOGIN_SERVICE_TOKEN } from \"../../config/sso-login-service.token\";\nimport { SsoLoginComponent } from \"../sso-login/sso-login.component\";\nimport { AnnaLoginComponent } from \"../anna-login/anna-login.component\";\nimport { NgIf } from \"@angular/common\";\r\n\r\n@Component({\n selector: \"anna-cognito-lib-cognito-and-sso-login-container\",\n templateUrl: \"./cognito-and-sso-login-container.component.html\",\n styleUrls: [\"./cognito-and-sso-login-container.component.scss\"],\n standalone: true,\n imports: [\n NgIf,\n AnnaLoginComponent,\n SsoLoginComponent,\n ],\n})\r\nexport class CognitoAndSSOLoginContainerComponent implements OnInit {\r\n\r\n constructor(@Inject(SSO_LOGIN_SERVICE_TOKEN) public consumingProjectSSOLoginService: ISSOLoginService) { }\r\n\r\n ngOnInit() { }\r\n}\r\n","<anna-cognito-lib-anna-login *ngIf=\"!consumingProjectSSOLoginService?.isSsoIntegrated\"></anna-cognito-lib-anna-login>\r\n<anna-cognito-lib-sso-login *ngIf=\"consumingProjectSSOLoginService?.isSsoIntegrated\"></anna-cognito-lib-sso-login>","export class AuthenticationData {\r\n Username: string;\r\n Password: string;\r\n constructor(Username: string, Password: string) {\r\n this.Username = Username;\r\n this.Password = Password;\r\n }\r\n}\r\n\r\nexport class UserPoolInformation {\r\n UserPoolId: string;\r\n ClientId: string;\r\n constructor(UserPoolId: string, ClientId: string) {\r\n this.UserPoolId = UserPoolId;\r\n this.ClientId = ClientId;\r\n }\r\n}\r\n\r\nexport class UsernameInfo {\r\n isUsernameAvailable: boolean;\r\n constructor(object: { isUsernameAvailable: boolean }) {\r\n this.isUsernameAvailable = object.isUsernameAvailable;\r\n }\r\n} \r\n\r\nexport class UserState {\r\n userStatus: string;\r\n isUserWithTempPassword: boolean;\r\n constructor(userState: string ) {\r\n this.userStatus = userState;\r\n this.isUserWithTempPassword = userState == 'FORCE_CHANGE_PASSWORD';\r\n }\r\n}","// Angular import statements\r\nimport { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators, FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\n\r\n// Third party import statements\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { forkJoin, catchError, pipe, map } from \"rxjs\";\r\n\r\n// User defined import statements\r\nimport { UsernameInfo, UserState } from \"../../models/auth.model\";\r\nimport { AnnaLibAuthService } from \"../../services/auth.service\";\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { Router } from '@angular/router';\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\r\nimport { AUTH_SERVICE_TOKEN, IAuthService } from \"../../config/auth-service.token\";\r\nimport { ISSOLoginService, SSO_LOGIN_SERVICE_TOKEN } from \"../../config/sso-login-service.token\";\nimport { VersionAndTermPolicyComponent } from \"../version-and-term-policy/version-and-term-policy.component\";\nimport { SurewavesYearLogoComponent } from \"../surewaves-year-logo/surewaves-year-logo.component\";\nimport { PoweredByLogoTemplateComponent } from \"../powered-by-logo-template/powered-by-logo-template.component\";\nimport { SpinnerButtonDirective } from \"../../directives/spinner-button/spinner-button.directive\";\nimport { NgIf, NgClass } from \"@angular/common\";\r\n\r\ntype passwordType = {value: string, status: string};\r\n@Component({\n selector: 'anna-cognito-lib-forgot-password',\n templateUrl: './forgot-password.component.html',\n styleUrls: ['./forgot-password.component.scss'],\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule, NgIf, NgClass, SpinnerButtonDirective, PoweredByLogoTemplateComponent, SurewavesYearLogoComponent, VersionAndTermPolicyComponent]\n})\r\nexport class ForgotPasswordComponent implements OnInit {\r\n errorMessage: string;\r\n verifyRegisteredEmail: FormGroup;\r\n passwordNotMatching = false;\r\n constants: typeof LoginConstant;\r\n password: passwordType = { value: null, status: null };\r\n confirmPassword: passwordType = { value: null, status: null };\r\n infoMessageToRedirectLogin: string = null;\r\n isLoading: boolean = false;\r\n\r\n constructor(\r\n private authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n private toastr: ToastrService,\r\n private router: Router,\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService,\r\n @Inject(AUTH_SERVICE_TOKEN) public consumingProjectAuthService: IAuthService,\r\n @Inject(SSO_LOGIN_SERVICE_TOKEN) public consumingProjectSSOLoginService: ISSOLoginService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.infoMessageToRedirectLogin = null;\r\n this.constants = LoginConstant;\r\n this.onIntialiseForm();\r\n if (this.consumingProjectAuthService.userName) {\r\n this.onUpdateForm();\r\n }\r\n this.authService.forgotPasswordAndGlobalSignoutLoader = false;\r\n }\r\n\r\n onIntialiseForm() {\r\n this.verifyRegisteredEmail = this.fb.group({\r\n email: [null, [Validators.required]],\r\n });\r\n }\r\n\r\n onUpdateForm() {\r\n this.verifyRegisteredEmail.patchValue({\r\n email: this.consumingProjectAuthService.userName,\r\n });\r\n }\r\n\r\n isFormValid() {\r\n return this.verifyRegisteredEmail.valid;\r\n }\r\n\r\n onLoginOrGetOtpButtonClick(){\r\n if(this.infoMessageToRedirectLogin){\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n }\r\n else {\r\n this.onVerifyRegisteredEmail();\r\n }\r\n }\r\n\r\n onVerifyRegisteredEmail() {\r\n this.isLoading = true;\r\n this.errorMessage = null;\r\n this.infoMessageToRedirectLogin = null;\r\n let username = this.verifyRegisteredEmail.controls['email'].value;\r\n\r\n let isUsernameAvailable = this.authService.consumingProjectAuthService.isUsernameAvailable(username);\r\n let isUsernameTempPasswordSet = this.authService.consumingProjectAuthService.getUserState(username);\r\n\r\n forkJoin([isUsernameAvailable, isUsernameTempPasswordSet]).subscribe(\r\n { next: (result) => {\r\n let isUsernameAvailable = new UsernameInfo(result[0]).isUsernameAvailable;\r\n let isUserWithTempPassword = new UserState(result[1]).isUserWithTempPassword;\r\n this.onGettingUserStatus(isUsernameAvailable,isUserWithTempPassword,username);\r\n this.isLoading = false;\r\n },\r\n error: (error) => {\r\n if(error.status == 400){\r\n this.errorMessage = this.constants.userNotFound;\r\n }\r\n else {\r\n this.toastr.error(LoginConstant.apiFailErrorMessage);\r\n }\r\n this.isLoading = false;\r\n }\r\n });\r\n }\r\n\r\n onGettingUserStatus(isUsernameAvailable: boolean, isUserWithTempPassword: boolean, username: string){\r\n if(!isUsernameAvailable){\r\n if(!isUserWithTempPassword){\r\n this.authService.onForgotPasswordGenerateOTP(username);\r\n }\r\n else {\r\n this.infoMessageToRedirectLogin = this.constants.firstTimeLoginUserTempPasswordMsg;\r\n }\r\n }\r\n else {\r\n this.errorMessage = this.constants.userNotFound;\r\n }\r\n }\r\n}\r\n","<div class=\"main\">\r\n <section>\r\n <header>\r\n <img [src]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <form [formGroup]=\"verifyRegisteredEmail\">\r\n <ng-container *ngIf=\"!infoMessageToRedirectLogin\">\r\n <div id=\"heading\">\r\n {{ constants.forgotPasswordHeading }}\r\n </div>\r\n <p>\r\n {{consumingProjectSSOLoginService?.isSsoIntegrated ? constants.PleaseEnterYourUsercodeMessage : constants.PleaseEnterYourUsernameMessage }}\r\n </p>\r\n </ng-container>\r\n <div id=\"alert-div\" *ngIf=\"errorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p id=\"alert-msg\">{{ errorMessage }}</p>\r\n </div>\r\n <div id=\"info-div\" *ngIf=\"infoMessageToRedirectLogin\">\r\n <i class=\"mi mdi-info\"></i>\r\n <p>{{ infoMessageToRedirectLogin }}</p>\r\n </div>\r\n\r\n <input *ngIf=\"!infoMessageToRedirectLogin\"\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"email\"\r\n [placeholder]=\"consumingProjectSSOLoginService?.isSsoIntegrated ? constants.enterUserCode : constants.enterEmail\"\r\n [ngClass]=\"{\r\n 'input-invalid': verifyRegisteredEmail.get('email')?.dirty && verifyRegisteredEmail.get('email')?.errors\r\n }\"\r\n />\r\n\r\n <button\r\n tabindex=\"2\"\r\n type=\"submit\"\r\n class=\"login-btn\"\r\n [anna-cognito-lib-SpinnerButton]=\"isLoading\"\r\n (click)=\"onLoginOrGetOtpButtonClick()\"\r\n [spinnerButtonText]=\"infoMessageToRedirectLogin ? constants.login : constants.forgotPasswordButton\"\r\n ></button>\r\n </form>\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template>\r\n </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>\r\n","// Angular import statements\r\nimport { EventEmitter, Inject, Input, Output } from \"@angular/core\";\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { AbstractControl, FormBuilder, FormGroup, ValidationErrors, ValidatorFn, Validators, FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\n\r\n// Third party import statements\r\nimport { debounceTime } from \"rxjs/operators\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\nimport { NgIf, NgClass } from \"@angular/common\";\r\n\r\n@Component({\n selector: 'anna-cognito-lib-password-matching',\n templateUrl: './password-matching.component.html',\n styleUrls: ['./password-matching.component.scss'],\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule, NgIf, NgClass]\n})\r\nexport class PasswordMatchingComponent implements OnInit {\r\n @Output() passwordChange = new EventEmitter();\r\n @Output() confirmPasswordChange = new EventEmitter();\r\n\r\n @Input() passwordNotMatching: boolean;\r\n passwordForm: FormGroup;\r\n constants: typeof LoginConstant;\r\n constructor(@Inject(FormBuilder) private fb: FormBuilder) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.createGroup();\r\n this.formValueChanged();\r\n }\r\n\r\n formValueChanged() {\r\n const password = this.passwordForm.get(\"password\");\r\n const confirmPassword = this.passwordForm.get(\"confirmPassword\");\r\n\r\n password && password.valueChanges.subscribe(() => {\r\n password && password.setValidators([\r\n Validators.required,\r\n this.regexValidator(new RegExp(\".{8,}\"), { minLength: true }),\r\n this.regexValidator(new RegExp(\"[a-z]\"), { lowercase: true }),\r\n this.regexValidator(new RegExp(\"[A-Z]\"), { uppercase: true }),\r\n this.regexValidator(new RegExp(\"[0-9]\"), { number: true }),\r\n this.regexValidator(new RegExp(\"[^a-zA-Z0-9]\"), { specialCharacter: true }),\r\n ]);\r\n password.updateValueAndValidity({ emitEvent: false });\r\n this.onPasswordChange();\r\n });\r\n\r\n if(confirmPassword){\r\n confirmPassword.valueChanges.pipe(debounceTime(300)).subscribe(() => {\r\n confirmPassword.setValidators([Validators.required]);\r\n confirmPassword.updateValueAndValidity({ emitEvent: false });\r\n this.onConfirmPasswordChange();\r\n });\r\n }\r\n \r\n }\r\n\r\n onPasswordChange() {\r\n let result = {\r\n value: this.passwordForm.value.password,\r\n status: this.passwordForm.controls['password'].status,\r\n };\r\n this.passwordChange.emit(result);\r\n }\r\n\r\n onConfirmPasswordChange() {\r\n let result = {\r\n value: this.passwordForm.value.confirmPassword,\r\n status: this.passwordForm.controls['confirmPassword'].status,\r\n };\r\n this.confirmPasswordChange.emit(result);\r\n }\r\n\r\n createGroup() {\r\n this.passwordForm = this.fb.group({\r\n password: [null],\r\n confirmPassword: [null],\r\n });\r\n return this.passwordForm;\r\n }\r\n\r\n // TODO: check the return again\r\n regexValidator(regex: RegExp, error: ValidationErrors): any\r\n {\r\n return (control: AbstractControl): { [key: string]: boolean } => {\r\n const valid = regex.test(control.value);\r\n return (valid ? null : error) as any;\r\n };\r\n }\r\n\r\n}\r\n","<form [formGroup]=\"passwordForm\">\r\n <div id=\"alert-div\" *ngIf=\"passwordNotMatching\">\r\n <div id=\"icon-div\">\r\n <span class=\"material-icons\">report</span>\r\n </div>\r\n <p>{{ constants.passwordNotMatching }}</p>\r\n </div>\r\n <div class=\"password-policies\">\r\n <ng-container *ngIf=\"!passwordForm.get('password')?.dirty\">\r\n <p>\r\n <b>{{ constants.passwordMustContain }} </b>\r\n </p>\r\n <p>{{ constants.minimumCharacter }}</p>\r\n <p>{{ constants.oneUppercase }}</p>\r\n <p>{{ constants.oneLowercase }}</p>\r\n <p>{{ constants.oneNumber }}</p>\r\n <p>{{ constants.specialCharacter }}</p>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"passwordForm.get('password')?.dirty\">\r\n <p>\r\n <b>{{ constants.passwordMustContain }}</b>\r\n </p>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('minLength') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('minLength')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('minLength')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.minimumCharacter }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('uppercase') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('uppercase')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('uppercase')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneUppercase }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('lowercase') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('lowercase')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('lowercase')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneLowercase }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('number') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('number')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('number')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneNumber }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('specialCharacter') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('specialCharacter')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('specialCharacter')\">\r\n check_circle\r\n </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.specialCharacter }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"2\"\r\n formControlName=\"password\"\r\n [placeholder]=\"constants.password\"\r\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\r\n />\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"3\"\r\n formControlName=\"confirmPassword\"\r\n [placeholder]=\"constants.confirmPassword\"\r\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\r\n />\r\n</form>\r\n","\r\n// Angular import statements\r\nimport { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// User defined import statements\r\nimport { AnnaLibAuthService } from \"../../services/auth.service\";\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\n\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\nimport { VersionAndTermPolicyComponent } from \"../version-and-term-policy/version-and-term-policy.component\";\nimport { SurewavesYearLogoComponent } from \"../surewaves-year-logo/surewaves-year-logo.component\";\nimport { PoweredByLogoTemplateComponent } from \"../powered-by-logo-template/powered-by-logo-template.component\";\nimport { PasswordMatchingComponent } from \"../password-matching/password-matching.component\";\nimport { NgIf } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\r\ntype passwordType = { value: string | null, status: string | null };\r\n\r\n@Component({\n selector: 'anna-cognito-lib-set-new-password',\n templateUrl: './set-new-password.component.html',\n styleUrls: ['./set-new-password.component.scss'],\n standalone: true,\n imports: [FormsModule, NgIf, PasswordMatchingComponent, PoweredByLogoTemplateComponent, SurewavesYearLogoComponent, VersionAndTermPolicyComponent]\n})\r\nexport class SetNewPasswordComponent implements OnInit {\r\n passwordNotMatching = false;\r\n\r\n password: passwordType = { value: null, status: null };\r\n confirmPassword: passwordType = { value: null, status: null };\r\n constants: typeof LoginConstant;\r\n\r\n constructor(public authService: AnnaLibAuthService,\r\n private router: Router,\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.authService.setNewPasswordButtonMessage = LoginConstant.setNewPasswordButton;\r\n }\r\n\r\n isFormValid() {\r\n return this.password.status === \"VALID\" && this.confirmPassword.status === \"VALID\";\r\n }\r\n onPasswordChange($event: passwordType) {\r\n this.password = $event;\r\n }\r\n\r\n onConfirmPasswordChange($event: passwordType) {\r\n this.confirmPassword = $event;\r\n }\r\n\r\n onSettingNewPassword() {\r\n if (this.password.value != this.confirmPassword.value) {\r\n this.passwordNotMatching = true;\r\n } else {\r\n this.passwordNotMatching = false;\r\n if (this.authService.setNewPasswordButtonMessage === LoginConstant.loginAgain) {\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n } else {\r\n this.authService.changePassword(this.password.value);\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"main\">\r\n <section>\r\n <header>\r\n <img [src]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <form>\r\n <div id=\"heading\">\r\n {{ constants.setNewPasswordHeading }}\r\n </div>\r\n\r\n <div id=\"alert-div\" *ngIf=\"authService.setNewPasswordErrorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p>{{ authService.setNewPasswordErrorMessage }}</p>\r\n </div>\r\n <anna-cognito-lib-password-matching\r\n (passwordChange)=\"onPasswordChange($event)\"\r\n (confirmPasswordChange)=\"onConfirmPasswordChange($event)\"\r\n [passwordNotMatching]=\"passwordNotMatching\"\r\n >\r\n </anna-cognito-lib-password-matching>\r\n <button tabindex=\"3\" class=\"login-btn\" [disabled]=\"!isFormValid()\" (click)=\"onSettingNewPassword()\">\r\n {{ authService.setNewPasswordButtonMessage }}\r\n </button>\r\n </form>\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template>\r\n </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>\r\n","// Angular import statements\r\nimport { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators, FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { Router, RouterLink } from \"@angular/router\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { AnnaLibAuthService } from '../../services/auth.service';\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\nimport { VersionAndTermPolicyComponent } from \"../version-and-term-policy/version-and-term-policy.component\";\nimport { SurewavesYearLogoComponent } from \"../surewaves-year-logo/surewaves-year-logo.component\";\nimport { PoweredByLogoTemplateComponent } from \"../powered-by-logo-template/powered-by-logo-template.component\";\nimport { SpinnerButtonDirective } from \"../../directives/spinner-button/spinner-button.directive\";\nimport { PasswordMatchingComponent } from \"../password-matching/password-matching.component\";\nimport { NgClass, NgIf } from \"@angular/common\";\r\ntype passwordType = { value: string | null, status: string | null };\r\n\r\n@Component({\n selector: 'anna-cognito-lib-verify-and-set-new-password',\n templateUrl: './verify-and-set-new-password.component.html',\n styleUrls: ['./verify-and-set-new-password.component.scss'],\n standalone: true,\n imports: [NgClass, RouterLink, FormsModule, ReactiveFormsModule, NgIf, PasswordMatchingComponent, SpinnerButtonDirective, PoweredByLogoTemplateComponent, SurewavesYearLogoComponent, VersionAndTermPolicyComponent]\n})\r\nexport class VerifyAndSetNewPasswordComponent implements OnInit {\r\n verifyOtpForm: FormGroup;\r\n passwordNotMatching = false;\r\n constants: typeof LoginConstant;\r\n password: passwordType = { value: null, status: null };\r\n confirmPassword: passwordType = { value: null, status: null };\r\n\r\n constructor(\r\n public authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n private router: Router,\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.authService.verifyAndSetNewPasswordButton = LoginConstant.setNewPasswordButton;\r\n this.onIntialiseForm();\r\n }\r\n\r\n onIntialiseForm() {\r\n this.verifyOtpForm = this.fb.group({\r\n otp: [null, [Validators.required]],\r\n });\r\n }\r\n\r\n isFormValid() {\r\n if (\r\n this.password.status === \"VALID\" &&\r\n this.confirmPassword.status === \"VALID\" &&\r\n this.verifyOtpForm.controls['otp'].valid\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n onPasswordChange($event: passwordType) {\r\n this.password = $event;\r\n }\r\n\r\n onConfirmPasswordChange($event: passwordType) {\r\n this.confirmPassword = $event;\r\n }\r\n\r\n onVerifyOtpSettingNewPassword() {\r\n if (this.password.value != this.confirmPassword.value) {\r\n this.passwordNotMatching = true;\r\n } else {\r\n this.passwordNotMatching = false;\r\n this.authService.forgotPasswordAndGlobalSignoutLoader = true;\r\n if (this.authService.verifyAndSetNewPasswordButton === LoginConstant.regenerateOtp) {\r\n this.router.navigate([LoginConstant.forgortPasswordPageUrl]);\r\n } else {\r\n this.password.value && this.authService.verifyCode(this.verifyOtpForm.controls['otp'].value, this.password.value);\r\n }\r\n }\r\n }\r\n\r\n\r\n}\r\n","<div class=\"main\" [ngClass]=\"{ 'main-height': authService.verifyAndSetNewPasswordErrorMessage }\">\r\n <section>\r\n <header>\r\n <img [src]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <span class=\"back-btn\" [routerLink]=\"constants.forgortPasswordPageUrl\">\r\n <i class=\"mdi mdi-arrow-left\"></i>\r\n </span>\r\n\r\n <form [formGroup]=\"verifyOtpForm\">\r\n <div class=\"pull-left\" id=\"heading\">\r\n {{ constants.verifyAndSetNewPasswordheading }}\r\n </div>\r\n <p>{{ authService.verifyAndSetNewPasswordMessage }}</p>\r\n\r\n <div id=\"alert-div\" *ngIf=\"authService.verifyAndSetNewPasswordErrorMessage\">\r\n <div id=\"icon-div\">\r\n <span class=\"material-icons\">report</span>\r\n </div>\r\n <p id=\"display-block-msg\">{{ authService.verifyAndSetNewPasswordErrorMessage }}</p>\r\n </div>\r\n\r\n <input\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"otp\"\r\n [placeholder]=\"constants.enterOtp\"\r\n autocomplete=\"new-field-name\"\r\n [ngClass]=\"{ 'input-invalid': authService.verifyAndSetNewPasswordErrorMessage }\"\r\n />\r\n\r\n <anna-cognito-lib-password-matching\r\n (passwordChange)=\"onPasswordChange($event)\"\r\n (confirmPasswordChange)=\"onConfirmPasswordChange($event)\"\r\n [passwordNotMatching]=\"passwordNotMatching\"\r\n >\r\n </anna-cognito-lib-password-matching>\r\n <button\r\n tabindex=\"4\"\r\n class=\"login-btn\"\r\n type=\"submit\"\r\n [disabled]=\"authService.sessionLocked || !isFormValid()\"\r\n (click)=\"onVerifyOtpSettingNewPassword()\"\r\n [anna-cognito-lib-SpinnerButton]=\"authService.forgotPasswordAndGlobalSignoutLoader\"\r\n [spinnerButtonText]=\"authService.verifyAndSetNewPasswordButton\"\r\n ></button>\r\n </form>\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template>\r\n </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>\r\n","import { Inject, Injectable } from \"@angular/core\";\r\nimport { IConfigService, CONFIG_SERVICE_TOKEN } from '../config/config-service.token';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaConfigService {\r\n \r\n constructor(@Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService) {}\r\n\r\n\r\n}\r\n","import { Inject, Injectable } from \"@angular/core\";\r\nimport { ISSOLoginService, SSO_LOGIN_SERVICE_TOKEN } from '../config/sso-login-service.token';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaSSOLoginService {\r\n \r\n constructor(@Inject(SSO_LOGIN_SERVICE_TOKEN) public consumingProjectSSOLoginService: ISSOLoginService) {}\r\n\r\n\r\n}\r\n","/*\r\n * Public API Surface of anna-cognito-lib\r\n */\r\n\r\n\r\n\r\n//COMPONENTS \r\nexport * from './lib/components/cognito-and-sso-login-container/cognito-and-sso-login-container.component';\r\nexport * from './lib/components/anna-login/anna-login.component';\r\nexport * from './lib/components/sso-login/sso-login.component';\r\nexport * from './lib/components/forgot-password/forgot-password.component';\r\nexport * from './lib/components/set-new-password/set-new-password.component';\r\nexport * from './lib/components/password-matching/password-matching.component';\r\nexport * from './lib/components/verify-and-set-new-password/verify-and-set-new-password.component';\r\nexport * from './lib/components/version-and-term-policy/version-and-term-policy.component';\r\nexport * from './lib/components/powered-by-logo-template/powered-by-logo-template.component';\r\nexport * from './lib/components/surewaves-year-logo/surewaves-year-logo.component';\r\n\r\n//SERVICES \r\nexport * from './lib/services/auth.service';\r\nexport * from './lib/services/acl.service';\r\nexport * from './lib/config/auth-service.token';\r\nexport * from './lib/config/acl-service.token';\r\nexport * from './lib/config/config-service.token';\r\nexport * from './lib/config/sso-login-service.token';\r\nexport * from './lib/services/config.service';\r\nexport * from './lib/services/sso-login.service';\r\n\r\n//DIRECTIVES \r\nexport * from './lib/directives/spinner-button';\r\n\r\n//CONSTANTS \r\nexport * from './lib/constants/loginConstant';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.AnnaLibAclService","i1.AnnaLibAuthService","i3","i4","i1"],"mappings":"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"}
1
+ {"version":3,"file":"annalib-anna-cognito-lib.mjs","sources":["../../../projects/anna-cognito-lib/src/lib/config/sso-login-service.token.ts","../../../projects/anna-cognito-lib/src/lib/config/config-service.token.ts","../../../projects/anna-cognito-lib/src/lib/constants/loginConstant.ts","../../../projects/anna-cognito-lib/src/lib/config/auth-service.token.ts","../../../projects/anna-cognito-lib/src/lib/config/acl-service.token.ts","../../../projects/anna-cognito-lib/src/lib/services/acl.service.ts","../../../projects/anna-cognito-lib/src/lib/services/auth.service.ts","../../../projects/anna-cognito-lib/src/lib/components/version-and-term-policy/version-and-term-policy.component.ts","../../../projects/anna-cognito-lib/src/lib/components/version-and-term-policy/version-and-term-policy.component.html","../../../projects/anna-cognito-lib/src/lib/components/surewaves-year-logo/surewaves-year-logo.component.ts","../../../projects/anna-cognito-lib/src/lib/components/surewaves-year-logo/surewaves-year-logo.component.html","../../../projects/anna-cognito-lib/src/lib/components/powered-by-logo-template/powered-by-logo-template.component.ts","../../../projects/anna-cognito-lib/src/lib/components/powered-by-logo-template/powered-by-logo-template.component.html","../../../projects/anna-cognito-lib/src/lib/components/sso-login/sso-login.component.ts","../../../projects/anna-cognito-lib/src/lib/components/sso-login/sso-login.component.html","../../../projects/anna-cognito-lib/src/lib/directives/spinner-button/spinner-button.directive.ts","../../../projects/anna-cognito-lib/src/lib/components/anna-login/anna-login.component.ts","../../../projects/anna-cognito-lib/src/lib/components/anna-login/anna-login.component.html","../../../projects/anna-cognito-lib/src/lib/components/cognito-and-sso-login-container/cognito-and-sso-login-container.component.ts","../../../projects/anna-cognito-lib/src/lib/components/cognito-and-sso-login-container/cognito-and-sso-login-container.component.html","../../../projects/anna-cognito-lib/src/lib/models/auth.model.ts","../../../projects/anna-cognito-lib/src/lib/components/forgot-password/forgot-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/forgot-password/forgot-password.component.html","../../../projects/anna-cognito-lib/src/lib/components/password-matching/password-matching.component.ts","../../../projects/anna-cognito-lib/src/lib/components/password-matching/password-matching.component.html","../../../projects/anna-cognito-lib/src/lib/components/set-new-password/set-new-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/set-new-password/set-new-password.component.html","../../../projects/anna-cognito-lib/src/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.html","../../../projects/anna-cognito-lib/src/lib/services/config.service.ts","../../../projects/anna-cognito-lib/src/lib/services/sso-login.service.ts","../../../projects/anna-cognito-lib/src/public-api.ts","../../../projects/anna-cognito-lib/src/annalib-anna-cognito-lib.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\n/** Token to inject the auth service */\r\nexport const SSO_LOGIN_SERVICE_TOKEN:\r\n InjectionToken<ISSOLoginService> =\r\n new InjectionToken<ISSOLoginService>('Cognito sso login service token');\r\n\r\nexport interface ISSOLoginService {\r\n defaultLoginPageUrl: \"co-pilot-login\" | \"login\";\r\n isSsoIntegrated: boolean;\r\n // ogDetails: { OgName: string; OgId: number; OgLogoUrl: string; IsSsoIntegrated: boolean; };\r\n loggedInViaSso: boolean;\r\n isUserInvitedAndCanAccessANNA: boolean;\r\n userNameText: string;\r\n}","import { InjectionToken } from '@angular/core';\r\n\r\n/** Token to inject the auth service */\r\nexport const CONFIG_SERVICE_TOKEN:\r\n InjectionToken<IConfigService> =\r\n new InjectionToken<IConfigService>('Cognito config service token');\r\n\r\nexport interface IConfigService {\r\n appGenericConfig : { \r\n loginPageLogoImgUrl: string,\r\n cognito : {\r\n userPoolId: string,\r\n clientId: string,\r\n },\r\n currentAnnaVersion: string\r\n };\r\n\r\n}","export class LoginConstant {\r\n // Login page\r\n static readonly enterEmail = \"Enter your username\";\r\n static readonly enterUserCode = \"Enter your usercode\";\r\n static readonly password = \"Password\";\r\n static readonly confirmPassword = \"Confirm Password\";\r\n static readonly login = \"Login\";\r\n static readonly otp = \"OTP\";\r\n static readonly forgotPassword = \"Forgot \" + LoginConstant.password.toLowerCase() + \"?\";\r\n\r\n // set new password\r\n static readonly setNewPasswordHeading = \"Set new \" + LoginConstant.password.toLowerCase();\r\n static readonly setNewPasswordButton = \"Set and \" + LoginConstant.login.toLowerCase() + \" again\";\r\n static readonly passwordMustContain = \"The password must contain:\";\r\n static readonly minimumCharacter = \"Minimum 8 characters\";\r\n static readonly oneUppercase = \"1 Uppercase\";\r\n static readonly oneLowercase = \"1 Lowercase\";\r\n static readonly oneNumber = \"1 Numerical\";\r\n static readonly specialCharacter = \"1 Special character\";\r\n static readonly passwordNotMatching = \"The passwords do not match. Please try again.\";\r\n static readonly userNamePasswordIncorrect = \"Incorrect username or password\";\r\n static readonly userCodePasswordIncorrect = \"Incorrect usercode or password\";\r\n static readonly userNotFound = \"No registered user found\";\r\n static readonly loginAgain = LoginConstant.login + \" again\";\r\n static readonly firstTimeLoginUserTempPasswordMsg = \"You are logging in for the first time. Kindly use the temporary password provided in the welcome email, to login to your account. \";\r\n static readonly tempPasswordExpiryError = \"Temporary password has expired and must be reset by an administrator.\"\r\n static readonly tempPasswordOnExpiryErrorMsg = \"Password has expired. A new password has been sent to your registered email. Kindly login again with new link and credentials.\";\r\n\r\n // verify OTP & set new password\r\n static readonly verifyAndSetNewPasswordheading = \"Enter \" + LoginConstant.otp + \" & set new password\";\r\n static readonly verifyAndSetNewPasswordMessage = \"An \" + LoginConstant.otp + \" has been succesfully emailed to \";\r\n static readonly pleaseEnterItBelow = \". Please enter it below.\";\r\n static readonly regenerateOtp = \"Regenerate \" + LoginConstant.otp;\r\n static readonly enterOtp = \"Enter \" + LoginConstant.otp;\r\n static readonly submit = \"Submit\";\r\n static readonly attempt = \"Attempt\";\r\n static readonly attemptLimitExceeded =\r\n \"You have exceeded the maximum number of allowed attempts. Please try again after 15 minutes.\";\r\n static readonly attemptMessage = \" of 5. The OTP entered is incorrect. Please try again with the right one.\";\r\n static readonly sessionExpired = \"The session has expired. Please try again.\";\r\n static readonly sessionExpiredError = \"Your session has expired. Please login again\";\r\n\r\n // forgot password\r\n static readonly forgotPasswordHeading = \"Forgot your password?\";\r\n static readonly PleaseEnterYourUsernameMessage = \"Please enter your username.\";\r\n static readonly PleaseEnterYourUsercodeMessage = \"Please enter your usercode.\";\r\n static readonly forgotPasswordButton = \"Get \" + LoginConstant.otp;\r\n static readonly apiFailErrorMessage = \"Unable to connect to server right now. Please try after some time.\";\r\n\r\n //url\r\n static readonly setNewPasswordUrl = \"/set-new-password\";\r\n static readonly forgortPasswordPageUrl = \"/forgot-password\";\r\n static readonly verifyAndSetNewPasswordUrl = \"/verify-and-set-new-password\";\r\n static readonly loginPageUrl = \"/login\";\r\n static readonly coPilotloginPageUrl = \"/co-pilot-login\";\r\n static readonly welcomeScrreenUrl = \"/welcome-screen\";\r\n static readonly homePageUrl = \"/dashboard\";\r\n static readonly stationSettingUrl = \"/station-settings\";\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { AuthTokens } from 'aws-amplify/auth';\r\nimport { Observable } from 'rxjs';\r\n\r\n/** Token to inject the auth service */\r\nexport const AUTH_SERVICE_TOKEN:\r\n InjectionToken<IAuthService> =\r\n new InjectionToken<IAuthService>('Auth service token');\r\n\r\nexport interface IAuthService {\r\n isLoggingIn: boolean;\r\n userName: any;\r\n accessToken: string;\r\n IdToken: any;\r\n defaultLoginPageUrl: \"co-pilot-login\" | \"login\";\r\n onSuccessfulAuthenticatingUser(loggedInViaSso: boolean): void;\r\n getAllCognitoTokenAndGroups(tokens: AuthTokens):void;\r\n isUsernameAvailable(username: string): Observable<any>;\r\n isEmailAvailable(emailId: string, ogId: number): Observable<any>;\r\n getUserState(username: string): Observable<any>;\r\n navigateBasedOnUserRole(loginUserData: any): void;\r\n getPublicIp(): string;\r\n sendRegenerationEmail(userCode: string): void;\r\n onPasswordUpdate(userName: string): void;\r\n newPasswordSetThenUpdateToBackend(userCode: string): void;\r\n signInWithSSO(): void;\r\n}","import { InjectionToken } from '@angular/core';\r\n\r\n/** Token to inject the acl service */\r\nexport const ACL_SERVICE_TOKEN:\r\n InjectionToken<IAclService> =\r\n new InjectionToken<IAclService>('ACL service token');\r\n\r\nexport interface IAclService {\r\n urlToCognitoPrivilegeMap: {[key: string]: string};\r\n MANAGE_USERS_WRITE: string;\r\n ORDER_BIZ_RULES_WRITE: string;\r\n ORDER_REVISIONS_WRITE: string;\r\n ORDER_SPOTS_REPORT_WRITE: string;\r\n POLITICAL_WINDOW_WRITE: string;\r\n DASHBOARD_DAILY_REVISIONS_READ: string;\r\n ENTER_EDIT_TARGET_LUR_WRITE: string;\r\n ENTER_EDIT_TARGET_CSR_WRITE: string;\r\n MANAGE_ROLES_WRITE: string;\r\n ACTIVE_STATION_USER_READ: string;\r\n USER_AWAITING_ACTIVATION_WRITE: string;\r\n DAILY_REVISION_ONGOING_AND_DAILY_COMPLETED_READ: string;\r\n USER_MANAGEMENT_READ: string;\r\n USER_MANAGEMENT_WRITE: string;\r\n STATION_BUSINESS_RULE_WRITE: string;\r\n ADVERTISER_BUSINESS_RULE_WRITE: string;\r\n EC_LISTING_READ: string;\r\n EC_LISTING_WRITE: string;\r\n ORDER_DISCREPANCIES: string;\r\n REVISION_CYCLE_SETTINGS_READ: string;\r\n REVISION_CYCLE_SETTINGS_WRITE: string;\r\n ROLLING_AVERAGES_READ: string;\r\n ROLLING_AVERAGES_WRITE: string;\r\n WRITE_ENABLED_ORDERS_READ: string;\r\n WRITE_ENABLED_ORDERS_WRITE: string;\r\n STATION_POLITICAL_RATE_CARD_READ: string;\r\n STATION_POLITICAL_RATE_CARD_WRITE: string;\r\n AUDIENCE_ESTIMATES_READ: string;\r\n}","import { Inject, Injectable } from \"@angular/core\";\r\nimport { IAclService, ACL_SERVICE_TOKEN } from '../config/acl-service.token';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaLibAclService {\r\n constructor(@Inject(ACL_SERVICE_TOKEN) public consumingProjectAclService: IAclService) {}\r\n\r\n userGroupsInCognitoJWT: string[];\r\n isUserAuthorisedToAccessPage(url: string): boolean {\r\n let privilegeName = this.consumingProjectAclService.urlToCognitoPrivilegeMap[url];\r\n return this.userGroupsInCognitoJWT.includes(privilegeName);\r\n }\r\n\r\n isUserAuthorisedToAccessElement(privilege: string): boolean {\r\n return this.userGroupsInCognitoJWT.includes(privilege);\r\n }\r\n\r\n}\r\n","// Angular import statements\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { Inject, Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// Third party import statements\r\nimport {\r\n AuthTokens, SignInInput, confirmResetPassword, confirmSignIn, fetchAuthSession,\r\n getCurrentUser, resetPassword, signIn, signOut\r\n} from \"aws-amplify/auth\";\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n// User defined import statements\r\nimport { AUTH_SERVICE_TOKEN, IAuthService } from '../config/auth-service.token';\r\nimport { LoginConstant } from \"../constants/loginConstant\";\r\nimport { AnnaLibAclService } from './acl.service';\r\nimport { ISSOLoginService, SSO_LOGIN_SERVICE_TOKEN } from '../config/sso-login-service.token';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaLibAuthService {\r\n loginErrorMessage: string | null;\r\n setNewPasswordErrorMessage: string;\r\n setNewPasswordButtonMessage: string;\r\n verifyAndSetNewPasswordErrorMessage: string;\r\n verifyAndSetNewPasswordMessage: string;\r\n verifyAndSetNewPasswordButton: string;\r\n noOfAttempts = 0;\r\n sessionLocked = false;\r\n accessTokenTimerId: any;\r\n forgotPasswordAndGlobalSignoutLoader: boolean;\r\n\r\n constructor(\r\n private router: Router,\r\n public aclService: AnnaLibAclService,\r\n public httpClient: HttpClient,\r\n private toastr: ToastrService,\r\n @Inject(SSO_LOGIN_SERVICE_TOKEN) public consumingProjectSSOLoginService: ISSOLoginService,\r\n @Inject(AUTH_SERVICE_TOKEN) public consumingProjectAuthService: IAuthService) {\r\n if (!consumingProjectAuthService) {\r\n throw new Error('You must provide a authService');\r\n }\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n async isUserLoggedIn(): Promise<boolean> {\r\n try {\r\n // await getCurrentUser();\r\n return new Promise(async (resolve, reject) => {\r\n const session: any = await fetchAuthSession();\r\n if (session?.tokens) {\r\n this.consumingProjectAuthService.IdToken = session?.tokens.idToken.toString();\r\n this.consumingProjectAuthService.getAllCognitoTokenAndGroups(session.tokens);\r\n resolve(true);\r\n } else {\r\n this.toastr.error(LoginConstant.sessionExpiredError);\r\n this.handleSignOut();\r\n resolve(false);\r\n }\r\n });\r\n } catch (error) {\r\n return new Promise((resolve) => {\r\n clearInterval(this.accessTokenTimerId);\r\n resolve(false);\r\n });\r\n }\r\n }\r\n\r\n sessionTimeout() {\r\n localStorage.clear();\r\n clearInterval(this.accessTokenTimerId);\r\n let afterLogoutRedirectTo: string;\r\n if (this.consumingProjectSSOLoginService.isSsoIntegrated && !this.consumingProjectSSOLoginService.loggedInViaSso) {\r\n afterLogoutRedirectTo = LoginConstant.coPilotloginPageUrl;\r\n }\r\n else {\r\n afterLogoutRedirectTo = LoginConstant.loginPageUrl;\r\n }\r\n this.router.navigate([afterLogoutRedirectTo]);\r\n }\r\n\r\n computeTokenExpiration(idToken: any) {\r\n let currentTime = Math.floor(Date.now() / 1000);\r\n let tokenTime = idToken.payload.exp;\r\n let expTime = (tokenTime - currentTime) * 1000;\r\n return expTime;\r\n }\r\n\r\n async handleSignIn({ username, password }: SignInInput) {\r\n try {\r\n let session = await fetchAuthSession();\r\n if (session?.tokens) {\r\n await this.handleSignOut();\r\n }\r\n const { isSignedIn, nextStep } = await signIn({ username, password });\r\n switch (nextStep?.signInStep) {\r\n case \"DONE\":\r\n let session = await fetchAuthSession();\r\n this.onLoginOrSetNewPassword(session);\r\n await this.consumingProjectAuthService.onSuccessfulAuthenticatingUser(false);\r\n this.consumingProjectAuthService.getAllCognitoTokenAndGroups(session.tokens);\r\n this.refreshAccessToken();\r\n break;\r\n\r\n case \"CONFIRM_SIGN_IN_WITH_NEW_PASSWORD_REQUIRED\":\r\n this.consumingProjectAuthService.isLoggingIn = false;\r\n this.consumingProjectAuthService.userName = username;\r\n this.router.navigate([LoginConstant.setNewPasswordUrl]);\r\n this.setNewPasswordErrorMessage = null;\r\n break;\r\n\r\n case \"RESET_PASSWORD\":\r\n break;\r\n }\r\n } catch (error: any) {\r\n console.log(error);\r\n this.consumingProjectAuthService.isLoggingIn = false;\r\n if (error?.message == LoginConstant.tempPasswordExpiryError) {\r\n this.loginErrorMessage = LoginConstant.tempPasswordOnExpiryErrorMsg;\r\n this.consumingProjectAuthService.sendRegenerationEmail(username);\r\n } else if (error?.message === \"Password attempts exceeded\") {\r\n this.loginErrorMessage = LoginConstant.attemptLimitExceeded;\r\n } else {\r\n this.loginErrorMessage = this.consumingProjectSSOLoginService.isSsoIntegrated ?\r\n LoginConstant.userCodePasswordIncorrect : LoginConstant.userNamePasswordIncorrect;\r\n }\r\n }\r\n }\r\n\r\n onLoginOrSetNewPassword(session: any) {\r\n let newExpTime = this.computeTokenExpiration(session.tokens.idToken);\r\n this.consumingProjectAuthService.accessToken = session.tokens.accessToken.toString();\r\n this.consumingProjectAuthService.IdToken = session.tokens.idToken.toString();\r\n localStorage.setItem(\"accessTokenExpiration\", newExpTime.toString());\r\n this.refreshAccessToken();\r\n this.loginErrorMessage = null;\r\n }\r\n\r\n setAccessAndIDTokens(token: AuthTokens) {\r\n this.consumingProjectAuthService.accessToken = token?.accessToken?.toString();\r\n this.consumingProjectAuthService.IdToken = token?.idToken;\r\n }\r\n\r\n async getAllCognitoTokenAndGroups(token: AuthTokens) {\r\n this.setAccessAndIDTokens(token);\r\n if (\"cognito:groups\" in token.accessToken.payload) {\r\n let userGroupsInCognitoJWT: any = token.accessToken.payload[\"cognito:groups\"];\r\n this.aclService.userGroupsInCognitoJWT = userGroupsInCognitoJWT;\r\n } else {\r\n this.aclService.userGroupsInCognitoJWT = [];\r\n }\r\n }\r\n\r\n refreshAccessToken() {\r\n let accessTokenExpiration = localStorage.getItem(\"accessTokenExpiration\");\r\n let expTime = accessTokenExpiration ? parseInt(accessTokenExpiration) : 0;\r\n this.accessTokenTimerId = setInterval(() => {\r\n let counter = 1000;\r\n let delayFunction = setTimeout(async () => {\r\n try {\r\n let session = await fetchAuthSession();\r\n let token = session.tokens;\r\n if (token) {\r\n this.consumingProjectAuthService.getAllCognitoTokenAndGroups(token);\r\n let newExpTime = this.computeTokenExpiration(this.consumingProjectAuthService.IdToken);\r\n\r\n if (newExpTime <= 0) {\r\n newExpTime = 1000;\r\n counter = 0;\r\n if (delayFunction) {\r\n clearInterval(delayFunction);\r\n }\r\n }\r\n expTime = newExpTime;\r\n localStorage.setItem(\"accessTokenExpiration\", newExpTime.toString());\r\n clearInterval(this.accessTokenTimerId);\r\n this.refreshAccessToken();\r\n } else {\r\n this.toastr.error(LoginConstant.sessionExpiredError);\r\n this.handleSignOut();\r\n }\r\n } catch (error) {\r\n this.toastr.error(LoginConstant.sessionExpiredError);\r\n this.handleSignOut();\r\n }\r\n }, counter);\r\n }, expTime);\r\n }\r\n\r\n async changePassword(newPassword: string) {\r\n try {\r\n let inputParam = {\r\n challengeResponse: newPassword,\r\n }\r\n const data = await confirmSignIn(inputParam);\r\n const { username } = await getCurrentUser();\r\n console.log(data);\r\n let session = await fetchAuthSession();\r\n this.onLoginOrSetNewPassword(session);\r\n this.consumingProjectAuthService.onPasswordUpdate(username);\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n this.consumingProjectAuthService.newPasswordSetThenUpdateToBackend(username);\r\n } catch (err) {\r\n console.log(err);\r\n this.setNewPasswordErrorMessage = LoginConstant.sessionExpired;\r\n this.setNewPasswordButtonMessage = LoginConstant.loginAgain;\r\n }\r\n }\r\n\r\n async onForgotPasswordGenerateOTP(email: string) {\r\n let username = email;\r\n this.consumingProjectAuthService.userName = email;\r\n try {\r\n let result: any = await resetPassword({ username });\r\n this.verifyAndSetNewPasswordMessage =\r\n LoginConstant.verifyAndSetNewPasswordMessage +\r\n result?.nextStep?.codeDeliveryDetails?.destination +\r\n LoginConstant.pleaseEnterItBelow;\r\n this.router.navigate([LoginConstant.verifyAndSetNewPasswordUrl]);\r\n } catch (err) {\r\n }\r\n }\r\n\r\n async verifyCode(confirmationCode: string, newPassword: string) {\r\n try {\r\n confirmResetPassword({ username: this.consumingProjectAuthService.userName, newPassword: newPassword, confirmationCode: confirmationCode }).then(\r\n (response) => {\r\n this.expiryAllExistingCurrentSession(this.consumingProjectAuthService.userName, newPassword);\r\n },\r\n (err) => {\r\n this.noOfAttempts = this.noOfAttempts + 1;\r\n this.verifyAndSetNewPasswordErrorMessage = this.forgotPasswordError(err, this.noOfAttempts);\r\n });\r\n } catch (err) {\r\n this.noOfAttempts = this.noOfAttempts + 1;\r\n this.verifyAndSetNewPasswordErrorMessage = this.forgotPasswordError(err, this.noOfAttempts);\r\n }\r\n finally {\r\n this.forgotPasswordAndGlobalSignoutLoader = false;\r\n }\r\n }\r\n\r\n forgotPasswordError(err: any, noOfAttempts: number) {\r\n let errorMessage = '';\r\n console.log(err)\r\n let errorThrown = JSON.stringify(err);\r\n if (errorThrown.includes(\"LimitExceededException\")) {\r\n this.sessionLocked = true;\r\n errorMessage = LoginConstant.attemptLimitExceeded;\r\n }\r\n else if (errorThrown.includes(\"ExpiredCodeException\")) {\r\n errorMessage = LoginConstant.sessionExpired;\r\n this.verifyAndSetNewPasswordButton = LoginConstant.regenerateOtp;\r\n }\r\n else {\r\n errorMessage = LoginConstant.attempt + \" \" + noOfAttempts + LoginConstant.attemptMessage;\r\n }\r\n return errorMessage;\r\n }\r\n\r\n async signInWithSSO() {\r\n let session = await fetchAuthSession();\r\n if (session?.tokens) {\r\n await this.handleSignOut().then(response => {\r\n this.consumingProjectAuthService.signInWithSSO();\r\n });\r\n } else {\r\n this.consumingProjectAuthService.signInWithSSO();\r\n }\r\n }\r\n\r\n async handleSignOut() {\r\n try {\r\n await signOut({ global: false });\r\n this.sessionTimeout();\r\n } catch (error) {\r\n console.log('error signing out: ', error);\r\n }\r\n }\r\n\r\n expiryAllExistingCurrentSession(username: string, newPassword: string) {\r\n this.loginErrorMessage = null;\r\n this.onLoginInCogntioToGetAccessToken(username, newPassword);\r\n }\r\n\r\n async onLoginInCogntioToGetAccessToken(username: string, password: string) {\r\n try {\r\n const { nextStep } = await signIn({ username, password });\r\n switch (nextStep?.signInStep) {\r\n case \"DONE\":\r\n this.setAccessAndIDTokens(await (await fetchAuthSession()).tokens);\r\n this.consumingProjectAuthService.onPasswordUpdate(this.consumingProjectAuthService.userName);\r\n this.onCallGlobalSignout();\r\n break;\r\n }\r\n } catch (error: any) {\r\n this.noOfAttempts = this.noOfAttempts + 1;\r\n this.verifyAndSetNewPasswordErrorMessage = this.forgotPasswordError(error, this.noOfAttempts);\r\n }\r\n }\r\n\r\n async onCallGlobalSignout() {\r\n try {\r\n await signOut({ global: true });\r\n this.forgotPasswordAndGlobalSignoutLoader = false;\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n } catch (error) {\r\n console.log('error signing out: ', error);\r\n }\r\n }\r\n}\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\r\n\r\n@Component({\n selector: 'anna-cognito-lib-version-and-term-policy',\n templateUrl: './version-and-term-policy.component.html',\n styleUrls: ['./version-and-term-policy.component.scss'],\n standalone: true\n})\r\nexport class VersionAndTermPolicyComponent implements OnInit {\r\n\r\n constructor(\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<p class=\"verison-and-policy\"> Version {{consumingProjectConfigService.appGenericConfig.currentAnnaVersion}} </p>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\n selector: 'anna-cognito-lib-surewaves-year-logo',\n templateUrl: './surewaves-year-logo.component.html',\n styleUrls: ['./surewaves-year-logo.component.scss'],\n standalone: true\n})\r\nexport class SurewavesYearLogoComponent implements OnInit {\r\n currentYear: number;\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.currentYear = new Date().getFullYear();\r\n }\r\n\r\n}\r\n","<div class=\"surewaves-year-logo\">\r\n © SureWaves {{currentYear}}. All rights reserved. \r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\n selector: 'anna-cognito-lib-powered-by-logo-template',\n templateUrl: './powered-by-logo-template.component.html',\n styleUrls: ['./powered-by-logo-template.component.scss'],\n standalone: true,\n imports: [NgTemplateOutlet]\n})\r\nexport class PoweredByLogoTemplateComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"poweredBySurewavesLogo\"> \r\n</ng-container>\r\n\r\n<ng-template #poweredBySurewavesLogo>\r\n<svg width=\"230px\" height=\"69px\" viewBox=\"0 0 230 69\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <defs>\r\n <path d=\"M2.576,1.064 C3.93866667,1.064 4.98633333,1.323 5.719,1.841 C6.45166667,2.359 6.818,3.13133333 6.818,4.158 C6.818,4.718 6.71766667,5.19633333 6.517,5.593 C6.31633333,5.98966667 6.027,6.31166667 5.649,6.559 C5.271,6.80633333 4.81133333,6.986 4.27,7.098 C3.72866667,7.21 3.11733333,7.266 2.436,7.266 L1.358,7.266 L1.358,10.864 L0,10.864 L0,1.302 C0.382666667,1.20866667 0.809666667,1.14566667 1.281,1.113 C1.75233333,1.08033333 2.184,1.064 2.576,1.064 Z M2.688,2.254 C2.10933333,2.254 1.666,2.268 1.358,2.296 L1.358,6.104 L2.38,6.104 C2.84666667,6.104 3.26666667,6.07366667 3.64,6.013 C4.01333333,5.95233333 4.32833333,5.84966667 4.585,5.705 C4.84166667,5.56033333 5.04,5.362 5.18,5.11 C5.32,4.858 5.39,4.536 5.39,4.144 C5.39,3.77066667 5.31766667,3.46266667 5.173,3.22 C5.02833333,2.97733333 4.83233333,2.78366667 4.585,2.639 C4.33766667,2.49433333 4.05066667,2.394 3.724,2.338 C3.39733333,2.282 3.052,2.254 2.688,2.254 Z\" id=\"path-1\"></path>\r\n <path d=\"M14.56,7.224 C14.56,7.80266667 14.476,8.32533333 14.308,8.792 C14.14,9.25866667 13.9043333,9.66 13.601,9.996 C13.2976667,10.332 12.936,10.591 12.516,10.773 C12.096,10.955 11.6386667,11.046 11.144,11.046 C10.6493333,11.046 10.192,10.955 9.772,10.773 C9.352,10.591 8.99033333,10.332 8.687,9.996 C8.38366667,9.66 8.148,9.25866667 7.98,8.792 C7.812,8.32533333 7.728,7.80266667 7.728,7.224 C7.728,6.65466667 7.812,6.13433333 7.98,5.663 C8.148,5.19166667 8.38366667,4.788 8.687,4.452 C8.99033333,4.116 9.352,3.857 9.772,3.675 C10.192,3.493 10.6493333,3.402 11.144,3.402 C11.6386667,3.402 12.096,3.493 12.516,3.675 C12.936,3.857 13.2976667,4.116 13.601,4.452 C13.9043333,4.788 14.14,5.19166667 14.308,5.663 C14.476,6.13433333 14.56,6.65466667 14.56,7.224 Z M13.202,7.224 C13.202,6.40266667 13.0176667,5.75166667 12.649,5.271 C12.2803333,4.79033333 11.7786667,4.55 11.144,4.55 C10.5093333,4.55 10.0076667,4.79033333 9.639,5.271 C9.27033333,5.75166667 9.086,6.40266667 9.086,7.224 C9.086,8.04533333 9.27033333,8.69633333 9.639,9.177 C10.0076667,9.65766667 10.5093333,9.898 11.144,9.898 C11.7786667,9.898 12.2803333,9.65766667 12.649,9.177 C13.0176667,8.69633333 13.202,8.04533333 13.202,7.224 Z\" id=\"path-2\"></path>\r\n <path d=\"M22.162,10.864 C21.9006667,10.192 21.623,9.42433333 21.329,8.561 C21.035,7.69766667 20.7666667,6.79933333 20.524,5.866 C20.2813333,6.79933333 20.0153333,7.69766667 19.726,8.561 C19.4366667,9.42433333 19.1613333,10.192 18.9,10.864 L17.766,10.864 C17.3366667,9.90266667 16.9166667,8.806 16.506,7.574 C16.0953333,6.342 15.708,5.012 15.344,3.584 L16.744,3.584 C16.8373333,4.02266667 16.9493333,4.49866667 17.08,5.012 C17.2106667,5.52533333 17.3483333,6.03866667 17.493,6.552 C17.6376667,7.06533333 17.7893333,7.56 17.948,8.036 C18.1066667,8.512 18.256,8.92733333 18.396,9.282 C18.5546667,8.84333333 18.711,8.379 18.865,7.889 C19.019,7.399 19.166,6.90433333 19.306,6.405 C19.446,5.90566667 19.579,5.41566667 19.705,4.935 C19.831,4.45433333 19.9406667,4.004 20.034,3.584 L21.112,3.584 C21.196,4.004 21.2986667,4.45433333 21.42,4.935 C21.5413333,5.41566667 21.672,5.90566667 21.812,6.405 C21.952,6.90433333 22.099,7.399 22.253,7.889 C22.407,8.379 22.5633333,8.84333333 22.722,9.282 C22.862,8.92733333 23.009,8.512 23.163,8.036 C23.317,7.56 23.4686667,7.06533333 23.618,6.552 C23.7673333,6.03866667 23.9073333,5.52533333 24.038,5.012 C24.1686667,4.49866667 24.2806667,4.02266667 24.374,3.584 L25.718,3.584 C25.354,5.012 24.9666667,6.342 24.556,7.574 C24.1453333,8.806 23.7253333,9.90266667 23.296,10.864 L22.162,10.864 Z\" id=\"path-3\"></path>\r\n <path d=\"M26.684,7.238 C26.684,6.594 26.7773333,6.03166667 26.964,5.551 C27.1506667,5.07033333 27.398,4.67133333 27.706,4.354 C28.014,4.03666667 28.3686667,3.79866667 28.77,3.64 C29.1713333,3.48133333 29.582,3.402 30.002,3.402 C30.982,3.402 31.7333333,3.70766667 32.256,4.319 C32.7786667,4.93033333 33.04,5.86133333 33.04,7.112 C33.04,7.168 33.04,7.24033333 33.04,7.329 C33.04,7.41766667 33.0353333,7.49933333 33.026,7.574 L28.042,7.574 C28.098,8.33 28.3173333,8.904 28.7,9.296 C29.0826667,9.688 29.68,9.884 30.492,9.884 C30.9493333,9.884 31.3343333,9.84433333 31.647,9.765 C31.9596667,9.68566667 32.1953333,9.60866667 32.354,9.534 L32.536,10.626 C32.3773333,10.71 32.0996667,10.7986667 31.703,10.892 C31.3063333,10.9853333 30.856,11.032 30.352,11.032 C29.7173333,11.032 29.169,10.9363333 28.707,10.745 C28.245,10.5536667 27.8646667,10.29 27.566,9.954 C27.2673333,9.618 27.0456667,9.219 26.901,8.757 C26.7563333,8.295 26.684,7.78866667 26.684,7.238 Z M31.682,6.524 C31.6913333,5.936 31.5443333,5.453 31.241,5.075 C30.9376667,4.697 30.52,4.508 29.988,4.508 C29.6893333,4.508 29.4256667,4.56633333 29.197,4.683 C28.9683333,4.79966667 28.7746667,4.95133333 28.616,5.138 C28.4573333,5.32466667 28.3336667,5.53933333 28.245,5.782 C28.1563333,6.02466667 28.098,6.272 28.07,6.524 L31.682,6.524 Z\" id=\"path-4\"></path>\r\n <path d=\"M37.604,3.43 C37.716,3.43 37.8443333,3.437 37.989,3.451 C38.1336667,3.465 38.276,3.48366667 38.416,3.507 C38.556,3.53033333 38.6843333,3.55366667 38.801,3.577 C38.9176667,3.60033333 39.004,3.62133333 39.06,3.64 L38.836,4.774 C38.7333333,4.73666667 38.563,4.69233333 38.325,4.641 C38.087,4.58966667 37.7813333,4.564 37.408,4.564 C37.1653333,4.564 36.925,4.58966667 36.687,4.641 C36.449,4.69233333 36.2926667,4.72733333 36.218,4.746 L36.218,10.864 L34.916,10.864 L34.916,3.892 C35.224,3.78 35.6066667,3.675 36.064,3.577 C36.5213333,3.479 37.0346667,3.43 37.604,3.43 Z\" id=\"path-5\"></path>\r\n <path d=\"M39.914,7.238 C39.914,6.594 40.0073333,6.03166667 40.194,5.551 C40.3806667,5.07033333 40.628,4.67133333 40.936,4.354 C41.244,4.03666667 41.5986667,3.79866667 42,3.64 C42.4013333,3.48133333 42.812,3.402 43.232,3.402 C44.212,3.402 44.9633333,3.70766667 45.486,4.319 C46.0086667,4.93033333 46.27,5.86133333 46.27,7.112 C46.27,7.168 46.27,7.24033333 46.27,7.329 C46.27,7.41766667 46.2653333,7.49933333 46.256,7.574 L41.272,7.574 C41.328,8.33 41.5473333,8.904 41.93,9.296 C42.3126667,9.688 42.91,9.884 43.722,9.884 C44.1793333,9.884 44.5643333,9.84433333 44.877,9.765 C45.1896667,9.68566667 45.4253333,9.60866667 45.584,9.534 L45.766,10.626 C45.6073333,10.71 45.3296667,10.7986667 44.933,10.892 C44.5363333,10.9853333 44.086,11.032 43.582,11.032 C42.9473333,11.032 42.399,10.9363333 41.937,10.745 C41.475,10.5536667 41.0946667,10.29 40.796,9.954 C40.4973333,9.618 40.2756667,9.219 40.131,8.757 C39.9863333,8.295 39.914,7.78866667 39.914,7.238 Z M44.912,6.524 C44.9213333,5.936 44.7743333,5.453 44.471,5.075 C44.1676667,4.697 43.75,4.508 43.218,4.508 C42.9193333,4.508 42.6556667,4.56633333 42.427,4.683 C42.1983333,4.79966667 42.0046667,4.95133333 41.846,5.138 C41.6873333,5.32466667 41.5636667,5.53933333 41.475,5.782 C41.3863333,6.02466667 41.328,6.272 41.3,6.524 L44.912,6.524 Z\" id=\"path-6\"></path>\r\n <path d=\"M52.85,5.124 C52.6913333,4.99333333 52.4626667,4.86733333 52.164,4.746 C51.8653333,4.62466667 51.5386667,4.564 51.184,4.564 C50.8106667,4.564 50.491,4.63166667 50.225,4.767 C49.959,4.90233333 49.742,5.089 49.574,5.327 C49.406,5.565 49.2846667,5.84733333 49.21,6.174 C49.1353333,6.50066667 49.098,6.85066667 49.098,7.224 C49.098,8.07333333 49.308,8.729 49.728,9.191 C50.148,9.653 50.708,9.884 51.408,9.884 C51.7626667,9.884 52.059,9.86766667 52.297,9.835 C52.535,9.80233333 52.7193333,9.76733333 52.85,9.73 L52.85,5.124 Z M52.85,0.224 L54.152,0 L54.152,10.654 C53.8533333,10.738 53.4706667,10.822 53.004,10.906 C52.5373333,10.99 52.0006667,11.032 51.394,11.032 C50.834,11.032 50.33,10.9433333 49.882,10.766 C49.434,10.5886667 49.0513333,10.3366667 48.734,10.01 C48.4166667,9.68333333 48.1716667,9.28433333 47.999,8.813 C47.8263333,8.34166667 47.74,7.812 47.74,7.224 C47.74,6.664 47.8123333,6.15066667 47.957,5.684 C48.1016667,5.21733333 48.314,4.816 48.594,4.48 C48.874,4.144 49.217,3.88266667 49.623,3.696 C50.029,3.50933333 50.4933333,3.416 51.016,3.416 C51.436,3.416 51.807,3.472 52.129,3.584 C52.451,3.696 52.6913333,3.80333333 52.85,3.906 L52.85,0.224 Z\" id=\"path-7\"></path>\r\n <path d=\"M60.928,3.906 C61.0866667,3.80333333 61.327,3.696 61.649,3.584 C61.971,3.472 62.342,3.416 62.762,3.416 C63.2846667,3.416 63.749,3.50933333 64.155,3.696 C64.561,3.88266667 64.904,4.144 65.184,4.48 C65.464,4.816 65.6763333,5.21733333 65.821,5.684 C65.9656667,6.15066667 66.038,6.664 66.038,7.224 C66.038,7.812 65.9516667,8.34166667 65.779,8.813 C65.6063333,9.28433333 65.3613333,9.68333333 65.044,10.01 C64.7266667,10.3366667 64.344,10.5886667 63.896,10.766 C63.448,10.9433333 62.944,11.032 62.384,11.032 C61.7773333,11.032 61.2406667,10.99 60.774,10.906 C60.3073333,10.822 59.9246667,10.738 59.626,10.654 L59.626,0.224 L60.928,0 L60.928,3.906 Z M60.928,9.73 C61.0586667,9.76733333 61.243,9.80233333 61.481,9.835 C61.719,9.86766667 62.0153333,9.884 62.37,9.884 C63.07,9.884 63.63,9.653 64.05,9.191 C64.47,8.729 64.68,8.07333333 64.68,7.224 C64.68,6.85066667 64.6426667,6.50066667 64.568,6.174 C64.4933333,5.84733333 64.372,5.565 64.204,5.327 C64.036,5.089 63.819,4.90233333 63.553,4.767 C63.287,4.63166667 62.9673333,4.564 62.594,4.564 C62.2393333,4.564 61.9126667,4.62466667 61.614,4.746 C61.3153333,4.86733333 61.0866667,4.99333333 60.928,5.124 L60.928,9.73 Z\" id=\"path-8\"></path>\r\n <path d=\"M66.836,12.222 C66.9386667,12.2686667 67.0716667,12.313 67.235,12.355 C67.3983333,12.397 67.5593333,12.418 67.718,12.418 C68.2313333,12.418 68.6326667,12.3036667 68.922,12.075 C69.2113333,11.8463333 69.4726667,11.4753333 69.706,10.962 C69.118,9.842 68.5696667,8.65433333 68.061,7.399 C67.5523333,6.14366667 67.13,4.872 66.794,3.584 L68.194,3.584 C68.2966667,4.004 68.4203333,4.45666667 68.565,4.942 C68.7096667,5.42733333 68.8706667,5.92666667 69.048,6.44 C69.2253333,6.95333333 69.4166667,7.46666667 69.622,7.98 C69.8273333,8.49333333 70.042,8.988 70.266,9.464 C70.6206667,8.484 70.9286667,7.51333333 71.19,6.552 C71.4513333,5.59066667 71.6986667,4.60133333 71.932,3.584 L73.276,3.584 C72.94,4.956 72.5666667,6.27433333 72.156,7.539 C71.7453333,8.80366667 71.302,9.98666667 70.826,11.088 C70.6393333,11.508 70.4456667,11.8696667 70.245,12.173 C70.0443333,12.4763333 69.8226667,12.726 69.58,12.922 C69.3373333,13.118 69.0643333,13.2626667 68.761,13.356 C68.4576667,13.4493333 68.1146667,13.496 67.732,13.496 C67.6293333,13.496 67.522,13.489 67.41,13.475 C67.298,13.461 67.1883333,13.4423333 67.081,13.419 C66.9736667,13.3956667 66.8756667,13.37 66.787,13.342 C66.6983333,13.314 66.6353333,13.2906667 66.598,13.272 L66.836,12.222 Z\" id=\"path-9\"></path>\r\n </defs>\r\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g id=\"Group-Copy-2\" transform=\"translate(0.338000, 0.500000)\">\r\n <g id=\"Powered-by\" transform=\"translate(0.000000, 45.636000)\" fill-rule=\"nonzero\" opacity=\"0.900000036\">\r\n <g id=\"Shape\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-1\"></use>\r\n <use xlink:href=\"#path-1\"></use>\r\n </g>\r\n <g id=\"Shape\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-2\"></use>\r\n <use xlink:href=\"#path-2\"></use>\r\n </g>\r\n <g id=\"Path\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-3\"></use>\r\n <use xlink:href=\"#path-3\"></use>\r\n </g>\r\n <g id=\"Shape\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-4\"></use>\r\n <use xlink:href=\"#path-4\"></use>\r\n </g>\r\n <g id=\"Path\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-5\"></use>\r\n <use xlink:href=\"#path-5\"></use>\r\n </g>\r\n <g id=\"Shape\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-6\"></use>\r\n <use xlink:href=\"#path-6\"></use>\r\n </g>\r\n <g id=\"Shape\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-7\"></use>\r\n <use xlink:href=\"#path-7\"></use>\r\n </g>\r\n <g id=\"Shape\">\r\n <use fill=\"#FFFFFF\" xlink:href=\"#path-8\"></use>\r\n <use fill=\"#6E6E6E\" xlink:href=\"#path-8\"></use>\r\n </g>\r\n <g id=\"Path\">\r\n <use fill=\"#FFFFFF\" xlink:href=\"#path-9\"></use>\r\n <use fill=\"#6E6E6E\" xlink:href=\"#path-9\"></use>\r\n </g>\r\n </g>\r\n <image id=\"Bitmap\" x=\"77.662\" y=\"0\" width=\"151.111111\" height=\"68\" xlink:href=\"data:image/png;base64,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\"></image>\r\n </g>\r\n </g>\r\n</svg>\r\n</ng-template>","import { Component, Inject } from '@angular/core';\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\r\nimport { LoginConstant } from '../../constants/loginConstant';\r\nimport { AnnaLibAuthService } from '../../services/auth.service';\nimport { VersionAndTermPolicyComponent } from '../version-and-term-policy/version-and-term-policy.component';\nimport { SurewavesYearLogoComponent } from '../surewaves-year-logo/surewaves-year-logo.component';\nimport { PoweredByLogoTemplateComponent } from '../powered-by-logo-template/powered-by-logo-template.component';\nimport { NgIf, NgOptimizedImage } from '@angular/common';\r\n\r\n@Component({\n selector: 'anna-cognito-lib-sso-login',\n templateUrl: './sso-login.component.html',\n styleUrls: ['./sso-login.component.scss'],\n standalone: true,\n imports: [NgIf, NgOptimizedImage, PoweredByLogoTemplateComponent, SurewavesYearLogoComponent, VersionAndTermPolicyComponent]\n})\r\nexport class SsoLoginComponent {\r\n constants: typeof LoginConstant;\r\n\r\n constructor(\r\n public authService: AnnaLibAuthService,\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n }\r\n\r\n signInWithSSO() {\r\n this.authService.signInWithSSO();\r\n }\r\n}\r\n","<div class=\"main\">\r\n <section *ngIf=\"constants.forgotPassword\">\r\n <header>\r\n <img [ngSrc]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" width=\"145\" height=\"50\"\r\n alt=\"Anna Logo\" priority />\r\n </header>\r\n <article>\r\n <p class=\"sub-title\">Login</p>\r\n <p>Sign in using your corporate ID (SSO)</p>\r\n <button class=\"login-btn\" (click)=\"signInWithSSO()\">Login with Duo</button>\r\n <div class=\"dashed-line\"></div>\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template>\r\n </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>","import { Directive, ElementRef, Input, Renderer2, SimpleChanges, OnChanges, OnInit } from \"@angular/core\";\r\n\r\n@Directive({\n selector: \"[anna-cognito-lib-SpinnerButton]\",\n standalone: true,\n})\r\nexport class SpinnerButtonDirective implements OnInit, OnChanges {\r\n @Input(\"anna-cognito-lib-SpinnerButton\") loading: boolean;\r\n @Input(\"spinnerButtonText\") spinnerButtonText: string;\r\n child: HTMLDivElement;\r\n button: any;\r\n\r\n constructor(\r\n private el: ElementRef, \r\n private renderer: Renderer2) {\r\n this.button = this.el.nativeElement;\r\n this.child = document.createElement(\"div\");\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['spinnerButtonText'] && changes['spinnerButtonText'].currentValue) {\r\n this.button.innerHTML = this.spinnerButtonText;\r\n }\r\n if (changes['loading'] && changes['loading'].currentValue) {\r\n this.button.innerHTML = \"\";\r\n this.button.setAttribute(\"disabled\", \"true\");\r\n this.child.classList.add(\"spinner-for-button-directive\");\r\n this.renderer.appendChild(this.button, this.child);\r\n } else {\r\n this.child.classList.remove(\"spinner-for-button-directive\");\r\n this.button.removeAttribute(\"disabled\");\r\n this.button.innerHTML = this.spinnerButtonText;\r\n }\r\n }\r\n}\r\n","// Angular import statements\r\nimport { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { AnnaLibAuthService } from '../../services/auth.service';\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\r\nimport { ISSOLoginService, SSO_LOGIN_SERVICE_TOKEN } from \"../../config/sso-login-service.token\";\r\nimport { VersionAndTermPolicyComponent } from \"../version-and-term-policy/version-and-term-policy.component\";\r\nimport { SurewavesYearLogoComponent } from \"../surewaves-year-logo/surewaves-year-logo.component\";\r\nimport { PoweredByLogoTemplateComponent } from \"../powered-by-logo-template/powered-by-logo-template.component\";\r\nimport { SpinnerButtonDirective } from \"../../directives/spinner-button/spinner-button.directive\";\r\nimport { RouterLink } from \"@angular/router\";\r\nimport { NgIf, NgOptimizedImage, NgClass } from \"@angular/common\";\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-anna-login',\r\n templateUrl: './anna-login.component.html',\r\n styleUrls: ['./anna-login.component.scss'],\r\n standalone: true,\r\n imports: [NgIf, NgOptimizedImage, FormsModule, ReactiveFormsModule, NgClass, RouterLink, SpinnerButtonDirective, PoweredByLogoTemplateComponent, SurewavesYearLogoComponent, VersionAndTermPolicyComponent]\r\n})\r\nexport class AnnaLoginComponent {\r\n loginForm: FormGroup;\r\n constants: typeof LoginConstant;\r\n\r\n constructor(\r\n public authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService,\r\n @Inject(SSO_LOGIN_SERVICE_TOKEN) public consumingProjectSSOLoginService: ISSOLoginService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.authService.consumingProjectAuthService.isLoggingIn = false;\r\n this.consumingProjectSSOLoginService.loggedInViaSso = false;\r\n this.constants = LoginConstant;\r\n this.onIntialiseForm();\r\n }\r\n\r\n onIntialiseForm() {\r\n this.loginForm = this.fb.group({\r\n username: [null],\r\n password: [null],\r\n });\r\n }\r\n\r\n OnLogin() {\r\n this.authService.consumingProjectAuthService.isLoggingIn = true;\r\n const username = this.loginForm.controls['username'].value;\r\n const password = this.loginForm.controls['password'].value;\r\n this.authService.handleSignIn({ username, password });\r\n }\r\n}\r\n","<div class=\"main\">\r\n <!-- Load login page when all constant variable are intiated otherwise it will show a glitch. that's why ngIf check of constants.forgotPassword -->\r\n <section *ngIf=\"constants.forgotPassword\">\r\n <header>\r\n <img [ngSrc]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" width=\"145\" height=\"50\"\r\n alt=\"Anna Logo\" priority />\r\n </header>\r\n <article>\r\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"OnLogin()\">\r\n <div id=\"alert-div\" *ngIf=\"authService.loginErrorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p>{{ authService.loginErrorMessage }}</p>\r\n </div>\r\n\r\n <input type=\"text\" tabindex=\"1\" formControlName=\"username\"\r\n [ngClass]=\"{ 'input-invalid': authService.loginErrorMessage }\"\r\n [placeholder]=\"consumingProjectSSOLoginService?.isSsoIntegrated ? constants.enterUserCode : constants.enterEmail\"\r\n autocomplete=\"username\" autofocus />\r\n\r\n <input type=\"password\" tabindex=\"2\" formControlName=\"password\"\r\n [ngClass]=\"{ 'input-invalid': authService.loginErrorMessage }\" [placeholder]=\"constants.password\"\r\n autocomplete=\"current-password\" autofocus />\r\n\r\n <a tabindex=\"4\" [routerLink]=\"constants.forgortPasswordPageUrl\">{{ constants.forgotPassword }}</a>\r\n <button tabindex=\"3\" class=\"login-btn\"\r\n [anna-cognito-lib-SpinnerButton]=\"authService.consumingProjectAuthService.isLoggingIn\"\r\n [spinnerButtonText]=\"constants.login\"></button>\r\n </form>\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template>\r\n </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>","import { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { ISSOLoginService, SSO_LOGIN_SERVICE_TOKEN } from \"../../config/sso-login-service.token\";\nimport { SsoLoginComponent } from \"../sso-login/sso-login.component\";\nimport { AnnaLoginComponent } from \"../anna-login/anna-login.component\";\nimport { NgIf } from \"@angular/common\";\r\n\r\n@Component({\n selector: \"anna-cognito-lib-cognito-and-sso-login-container\",\n templateUrl: \"./cognito-and-sso-login-container.component.html\",\n styleUrls: [\"./cognito-and-sso-login-container.component.scss\"],\n standalone: true,\n imports: [\n NgIf,\n AnnaLoginComponent,\n SsoLoginComponent,\n ],\n})\r\nexport class CognitoAndSSOLoginContainerComponent implements OnInit {\r\n\r\n constructor(@Inject(SSO_LOGIN_SERVICE_TOKEN) public consumingProjectSSOLoginService: ISSOLoginService) { }\r\n\r\n ngOnInit() { }\r\n}\r\n","<anna-cognito-lib-anna-login *ngIf=\"!consumingProjectSSOLoginService?.isSsoIntegrated\"></anna-cognito-lib-anna-login>\r\n<anna-cognito-lib-sso-login *ngIf=\"consumingProjectSSOLoginService?.isSsoIntegrated\"></anna-cognito-lib-sso-login>","export class AuthenticationData {\r\n Username: string;\r\n Password: string;\r\n constructor(Username: string, Password: string) {\r\n this.Username = Username;\r\n this.Password = Password;\r\n }\r\n}\r\n\r\nexport class UserPoolInformation {\r\n UserPoolId: string;\r\n ClientId: string;\r\n constructor(UserPoolId: string, ClientId: string) {\r\n this.UserPoolId = UserPoolId;\r\n this.ClientId = ClientId;\r\n }\r\n}\r\n\r\nexport class UsernameInfo {\r\n isUsernameAvailable: boolean;\r\n constructor(object: { isUsernameAvailable: boolean }) {\r\n this.isUsernameAvailable = object.isUsernameAvailable;\r\n }\r\n} \r\n\r\nexport class UserState {\r\n userStatus: string;\r\n isUserWithTempPassword: boolean;\r\n constructor(userState: string ) {\r\n this.userStatus = userState;\r\n this.isUserWithTempPassword = userState == 'FORCE_CHANGE_PASSWORD';\r\n }\r\n}","// Angular import statements\r\nimport { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators, FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\n\r\n// Third party import statements\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { forkJoin, catchError, pipe, map } from \"rxjs\";\r\n\r\n// User defined import statements\r\nimport { UsernameInfo, UserState } from \"../../models/auth.model\";\r\nimport { AnnaLibAuthService } from \"../../services/auth.service\";\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { Router } from '@angular/router';\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\r\nimport { AUTH_SERVICE_TOKEN, IAuthService } from \"../../config/auth-service.token\";\r\nimport { ISSOLoginService, SSO_LOGIN_SERVICE_TOKEN } from \"../../config/sso-login-service.token\";\nimport { VersionAndTermPolicyComponent } from \"../version-and-term-policy/version-and-term-policy.component\";\nimport { SurewavesYearLogoComponent } from \"../surewaves-year-logo/surewaves-year-logo.component\";\nimport { PoweredByLogoTemplateComponent } from \"../powered-by-logo-template/powered-by-logo-template.component\";\nimport { SpinnerButtonDirective } from \"../../directives/spinner-button/spinner-button.directive\";\nimport { NgIf, NgClass } from \"@angular/common\";\r\n\r\ntype passwordType = {value: string, status: string};\r\n@Component({\n selector: 'anna-cognito-lib-forgot-password',\n templateUrl: './forgot-password.component.html',\n styleUrls: ['./forgot-password.component.scss'],\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule, NgIf, NgClass, SpinnerButtonDirective, PoweredByLogoTemplateComponent, SurewavesYearLogoComponent, VersionAndTermPolicyComponent]\n})\r\nexport class ForgotPasswordComponent implements OnInit {\r\n errorMessage: string;\r\n verifyRegisteredEmail: FormGroup;\r\n passwordNotMatching = false;\r\n constants: typeof LoginConstant;\r\n password: passwordType = { value: null, status: null };\r\n confirmPassword: passwordType = { value: null, status: null };\r\n infoMessageToRedirectLogin: string = null;\r\n isLoading: boolean = false;\r\n\r\n constructor(\r\n private authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n private toastr: ToastrService,\r\n private router: Router,\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService,\r\n @Inject(AUTH_SERVICE_TOKEN) public consumingProjectAuthService: IAuthService,\r\n @Inject(SSO_LOGIN_SERVICE_TOKEN) public consumingProjectSSOLoginService: ISSOLoginService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.infoMessageToRedirectLogin = null;\r\n this.constants = LoginConstant;\r\n this.onIntialiseForm();\r\n if (this.consumingProjectAuthService.userName) {\r\n this.onUpdateForm();\r\n }\r\n this.authService.forgotPasswordAndGlobalSignoutLoader = false;\r\n }\r\n\r\n onIntialiseForm() {\r\n this.verifyRegisteredEmail = this.fb.group({\r\n email: [null, [Validators.required]],\r\n });\r\n }\r\n\r\n onUpdateForm() {\r\n this.verifyRegisteredEmail.patchValue({\r\n email: this.consumingProjectAuthService.userName,\r\n });\r\n }\r\n\r\n isFormValid() {\r\n return this.verifyRegisteredEmail.valid;\r\n }\r\n\r\n onLoginOrGetOtpButtonClick(){\r\n if(this.infoMessageToRedirectLogin){\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n }\r\n else {\r\n this.onVerifyRegisteredEmail();\r\n }\r\n }\r\n\r\n onVerifyRegisteredEmail() {\r\n this.isLoading = true;\r\n this.errorMessage = null;\r\n this.infoMessageToRedirectLogin = null;\r\n let username = this.verifyRegisteredEmail.controls['email'].value;\r\n\r\n let isUsernameAvailable = this.authService.consumingProjectAuthService.isUsernameAvailable(username);\r\n let isUsernameTempPasswordSet = this.authService.consumingProjectAuthService.getUserState(username);\r\n\r\n forkJoin([isUsernameAvailable, isUsernameTempPasswordSet]).subscribe(\r\n { next: (result) => {\r\n let isUsernameAvailable = new UsernameInfo(result[0]).isUsernameAvailable;\r\n let isUserWithTempPassword = new UserState(result[1]).isUserWithTempPassword;\r\n this.onGettingUserStatus(isUsernameAvailable,isUserWithTempPassword,username);\r\n this.isLoading = false;\r\n },\r\n error: (error) => {\r\n if(error.status == 400){\r\n this.errorMessage = this.constants.userNotFound;\r\n }\r\n else {\r\n this.toastr.error(LoginConstant.apiFailErrorMessage);\r\n }\r\n this.isLoading = false;\r\n }\r\n });\r\n }\r\n\r\n onGettingUserStatus(isUsernameAvailable: boolean, isUserWithTempPassword: boolean, username: string){\r\n if(!isUsernameAvailable){\r\n if(!isUserWithTempPassword){\r\n this.authService.onForgotPasswordGenerateOTP(username);\r\n }\r\n else {\r\n this.infoMessageToRedirectLogin = this.constants.firstTimeLoginUserTempPasswordMsg;\r\n }\r\n }\r\n else {\r\n this.errorMessage = this.constants.userNotFound;\r\n }\r\n }\r\n}\r\n","<div class=\"main\">\r\n <section>\r\n <header>\r\n <img [src]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <form [formGroup]=\"verifyRegisteredEmail\">\r\n <ng-container *ngIf=\"!infoMessageToRedirectLogin\">\r\n <div id=\"heading\">\r\n {{ constants.forgotPasswordHeading }}\r\n </div>\r\n <p>\r\n {{consumingProjectSSOLoginService?.isSsoIntegrated ? constants.PleaseEnterYourUsercodeMessage : constants.PleaseEnterYourUsernameMessage }}\r\n </p>\r\n </ng-container>\r\n <div id=\"alert-div\" *ngIf=\"errorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p id=\"alert-msg\">{{ errorMessage }}</p>\r\n </div>\r\n <div id=\"info-div\" *ngIf=\"infoMessageToRedirectLogin\">\r\n <i class=\"mi mdi-info\"></i>\r\n <p>{{ infoMessageToRedirectLogin }}</p>\r\n </div>\r\n\r\n <input *ngIf=\"!infoMessageToRedirectLogin\"\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"email\"\r\n [placeholder]=\"consumingProjectSSOLoginService?.isSsoIntegrated ? constants.enterUserCode : constants.enterEmail\"\r\n [ngClass]=\"{\r\n 'input-invalid': verifyRegisteredEmail.get('email')?.dirty && verifyRegisteredEmail.get('email')?.errors\r\n }\"\r\n />\r\n\r\n <button\r\n tabindex=\"2\"\r\n type=\"submit\"\r\n class=\"login-btn\"\r\n [anna-cognito-lib-SpinnerButton]=\"isLoading\"\r\n (click)=\"onLoginOrGetOtpButtonClick()\"\r\n [spinnerButtonText]=\"infoMessageToRedirectLogin ? constants.login : constants.forgotPasswordButton\"\r\n ></button>\r\n </form>\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template>\r\n </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>\r\n","// Angular import statements\r\nimport { EventEmitter, Inject, Input, Output } from \"@angular/core\";\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { AbstractControl, FormBuilder, FormGroup, ValidationErrors, ValidatorFn, Validators, FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\n\r\n// Third party import statements\r\nimport { debounceTime } from \"rxjs/operators\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\nimport { NgIf, NgClass } from \"@angular/common\";\r\n\r\n@Component({\n selector: 'anna-cognito-lib-password-matching',\n templateUrl: './password-matching.component.html',\n styleUrls: ['./password-matching.component.scss'],\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule, NgIf, NgClass]\n})\r\nexport class PasswordMatchingComponent implements OnInit {\r\n @Output() passwordChange = new EventEmitter();\r\n @Output() confirmPasswordChange = new EventEmitter();\r\n\r\n @Input() passwordNotMatching: boolean;\r\n passwordForm: FormGroup;\r\n constants: typeof LoginConstant;\r\n constructor(@Inject(FormBuilder) private fb: FormBuilder) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.createGroup();\r\n this.formValueChanged();\r\n }\r\n\r\n formValueChanged() {\r\n const password = this.passwordForm.get(\"password\");\r\n const confirmPassword = this.passwordForm.get(\"confirmPassword\");\r\n\r\n password && password.valueChanges.subscribe(() => {\r\n password && password.setValidators([\r\n Validators.required,\r\n this.regexValidator(new RegExp(\".{8,}\"), { minLength: true }),\r\n this.regexValidator(new RegExp(\"[a-z]\"), { lowercase: true }),\r\n this.regexValidator(new RegExp(\"[A-Z]\"), { uppercase: true }),\r\n this.regexValidator(new RegExp(\"[0-9]\"), { number: true }),\r\n this.regexValidator(new RegExp(\"[^a-zA-Z0-9]\"), { specialCharacter: true }),\r\n ]);\r\n password.updateValueAndValidity({ emitEvent: false });\r\n this.onPasswordChange();\r\n });\r\n\r\n if(confirmPassword){\r\n confirmPassword.valueChanges.pipe(debounceTime(300)).subscribe(() => {\r\n confirmPassword.setValidators([Validators.required]);\r\n confirmPassword.updateValueAndValidity({ emitEvent: false });\r\n this.onConfirmPasswordChange();\r\n });\r\n }\r\n \r\n }\r\n\r\n onPasswordChange() {\r\n let result = {\r\n value: this.passwordForm.value.password,\r\n status: this.passwordForm.controls['password'].status,\r\n };\r\n this.passwordChange.emit(result);\r\n }\r\n\r\n onConfirmPasswordChange() {\r\n let result = {\r\n value: this.passwordForm.value.confirmPassword,\r\n status: this.passwordForm.controls['confirmPassword'].status,\r\n };\r\n this.confirmPasswordChange.emit(result);\r\n }\r\n\r\n createGroup() {\r\n this.passwordForm = this.fb.group({\r\n password: [null],\r\n confirmPassword: [null],\r\n });\r\n return this.passwordForm;\r\n }\r\n\r\n // TODO: check the return again\r\n regexValidator(regex: RegExp, error: ValidationErrors): any\r\n {\r\n return (control: AbstractControl): { [key: string]: boolean } => {\r\n const valid = regex.test(control.value);\r\n return (valid ? null : error) as any;\r\n };\r\n }\r\n\r\n}\r\n","<form [formGroup]=\"passwordForm\">\r\n <div id=\"alert-div\" *ngIf=\"passwordNotMatching\">\r\n <div id=\"icon-div\">\r\n <span class=\"material-icons\">report</span>\r\n </div>\r\n <p>{{ constants.passwordNotMatching }}</p>\r\n </div>\r\n <div class=\"password-policies\">\r\n <ng-container *ngIf=\"!passwordForm.get('password')?.dirty\">\r\n <p>\r\n <b>{{ constants.passwordMustContain }} </b>\r\n </p>\r\n <p>{{ constants.minimumCharacter }}</p>\r\n <p>{{ constants.oneUppercase }}</p>\r\n <p>{{ constants.oneLowercase }}</p>\r\n <p>{{ constants.oneNumber }}</p>\r\n <p>{{ constants.specialCharacter }}</p>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"passwordForm.get('password')?.dirty\">\r\n <p>\r\n <b>{{ constants.passwordMustContain }}</b>\r\n </p>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('minLength') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('minLength')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('minLength')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.minimumCharacter }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('uppercase') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('uppercase')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('uppercase')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneUppercase }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('lowercase') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('lowercase')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('lowercase')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneLowercase }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('number') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('number')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('number')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneNumber }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('specialCharacter') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('specialCharacter')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('specialCharacter')\">\r\n check_circle\r\n </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.specialCharacter }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"2\"\r\n formControlName=\"password\"\r\n [placeholder]=\"constants.password\"\r\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\r\n />\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"3\"\r\n formControlName=\"confirmPassword\"\r\n [placeholder]=\"constants.confirmPassword\"\r\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\r\n />\r\n</form>\r\n","\r\n// Angular import statements\r\nimport { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// User defined import statements\r\nimport { AnnaLibAuthService } from \"../../services/auth.service\";\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\n\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\nimport { VersionAndTermPolicyComponent } from \"../version-and-term-policy/version-and-term-policy.component\";\nimport { SurewavesYearLogoComponent } from \"../surewaves-year-logo/surewaves-year-logo.component\";\nimport { PoweredByLogoTemplateComponent } from \"../powered-by-logo-template/powered-by-logo-template.component\";\nimport { PasswordMatchingComponent } from \"../password-matching/password-matching.component\";\nimport { NgIf } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\r\ntype passwordType = { value: string | null, status: string | null };\r\n\r\n@Component({\n selector: 'anna-cognito-lib-set-new-password',\n templateUrl: './set-new-password.component.html',\n styleUrls: ['./set-new-password.component.scss'],\n standalone: true,\n imports: [FormsModule, NgIf, PasswordMatchingComponent, PoweredByLogoTemplateComponent, SurewavesYearLogoComponent, VersionAndTermPolicyComponent]\n})\r\nexport class SetNewPasswordComponent implements OnInit {\r\n passwordNotMatching = false;\r\n\r\n password: passwordType = { value: null, status: null };\r\n confirmPassword: passwordType = { value: null, status: null };\r\n constants: typeof LoginConstant;\r\n\r\n constructor(public authService: AnnaLibAuthService,\r\n private router: Router,\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.authService.setNewPasswordButtonMessage = LoginConstant.setNewPasswordButton;\r\n }\r\n\r\n isFormValid() {\r\n return this.password.status === \"VALID\" && this.confirmPassword.status === \"VALID\";\r\n }\r\n onPasswordChange($event: passwordType) {\r\n this.password = $event;\r\n }\r\n\r\n onConfirmPasswordChange($event: passwordType) {\r\n this.confirmPassword = $event;\r\n }\r\n\r\n onSettingNewPassword() {\r\n if (this.password.value != this.confirmPassword.value) {\r\n this.passwordNotMatching = true;\r\n } else {\r\n this.passwordNotMatching = false;\r\n if (this.authService.setNewPasswordButtonMessage === LoginConstant.loginAgain) {\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n } else {\r\n this.authService.changePassword(this.password.value);\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"main\">\r\n <section>\r\n <header>\r\n <img [src]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <form>\r\n <div id=\"heading\">\r\n {{ constants.setNewPasswordHeading }}\r\n </div>\r\n\r\n <div id=\"alert-div\" *ngIf=\"authService.setNewPasswordErrorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p>{{ authService.setNewPasswordErrorMessage }}</p>\r\n </div>\r\n <anna-cognito-lib-password-matching\r\n (passwordChange)=\"onPasswordChange($event)\"\r\n (confirmPasswordChange)=\"onConfirmPasswordChange($event)\"\r\n [passwordNotMatching]=\"passwordNotMatching\"\r\n >\r\n </anna-cognito-lib-password-matching>\r\n <button tabindex=\"3\" class=\"login-btn\" [disabled]=\"!isFormValid()\" (click)=\"onSettingNewPassword()\">\r\n {{ authService.setNewPasswordButtonMessage }}\r\n </button>\r\n </form>\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template>\r\n </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>\r\n","// Angular import statements\r\nimport { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators, FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { Router, RouterLink } from \"@angular/router\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { AnnaLibAuthService } from '../../services/auth.service';\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\nimport { VersionAndTermPolicyComponent } from \"../version-and-term-policy/version-and-term-policy.component\";\nimport { SurewavesYearLogoComponent } from \"../surewaves-year-logo/surewaves-year-logo.component\";\nimport { PoweredByLogoTemplateComponent } from \"../powered-by-logo-template/powered-by-logo-template.component\";\nimport { SpinnerButtonDirective } from \"../../directives/spinner-button/spinner-button.directive\";\nimport { PasswordMatchingComponent } from \"../password-matching/password-matching.component\";\nimport { NgClass, NgIf } from \"@angular/common\";\r\ntype passwordType = { value: string | null, status: string | null };\r\n\r\n@Component({\n selector: 'anna-cognito-lib-verify-and-set-new-password',\n templateUrl: './verify-and-set-new-password.component.html',\n styleUrls: ['./verify-and-set-new-password.component.scss'],\n standalone: true,\n imports: [NgClass, RouterLink, FormsModule, ReactiveFormsModule, NgIf, PasswordMatchingComponent, SpinnerButtonDirective, PoweredByLogoTemplateComponent, SurewavesYearLogoComponent, VersionAndTermPolicyComponent]\n})\r\nexport class VerifyAndSetNewPasswordComponent implements OnInit {\r\n verifyOtpForm: FormGroup;\r\n passwordNotMatching = false;\r\n constants: typeof LoginConstant;\r\n password: passwordType = { value: null, status: null };\r\n confirmPassword: passwordType = { value: null, status: null };\r\n\r\n constructor(\r\n public authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n private router: Router,\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.authService.verifyAndSetNewPasswordButton = LoginConstant.setNewPasswordButton;\r\n this.onIntialiseForm();\r\n }\r\n\r\n onIntialiseForm() {\r\n this.verifyOtpForm = this.fb.group({\r\n otp: [null, [Validators.required]],\r\n });\r\n }\r\n\r\n isFormValid() {\r\n if (\r\n this.password.status === \"VALID\" &&\r\n this.confirmPassword.status === \"VALID\" &&\r\n this.verifyOtpForm.controls['otp'].valid\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n onPasswordChange($event: passwordType) {\r\n this.password = $event;\r\n }\r\n\r\n onConfirmPasswordChange($event: passwordType) {\r\n this.confirmPassword = $event;\r\n }\r\n\r\n onVerifyOtpSettingNewPassword() {\r\n if (this.password.value != this.confirmPassword.value) {\r\n this.passwordNotMatching = true;\r\n } else {\r\n this.passwordNotMatching = false;\r\n this.authService.forgotPasswordAndGlobalSignoutLoader = true;\r\n if (this.authService.verifyAndSetNewPasswordButton === LoginConstant.regenerateOtp) {\r\n this.router.navigate([LoginConstant.forgortPasswordPageUrl]);\r\n } else {\r\n this.password.value && this.authService.verifyCode(this.verifyOtpForm.controls['otp'].value, this.password.value);\r\n }\r\n }\r\n }\r\n\r\n\r\n}\r\n","<div class=\"main\" [ngClass]=\"{ 'main-height': authService.verifyAndSetNewPasswordErrorMessage }\">\r\n <section>\r\n <header>\r\n <img [src]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <span class=\"back-btn\" [routerLink]=\"constants.forgortPasswordPageUrl\">\r\n <i class=\"mdi mdi-arrow-left\"></i>\r\n </span>\r\n\r\n <form [formGroup]=\"verifyOtpForm\">\r\n <div class=\"pull-left\" id=\"heading\">\r\n {{ constants.verifyAndSetNewPasswordheading }}\r\n </div>\r\n <p>{{ authService.verifyAndSetNewPasswordMessage }}</p>\r\n\r\n <div id=\"alert-div\" *ngIf=\"authService.verifyAndSetNewPasswordErrorMessage\">\r\n <div id=\"icon-div\">\r\n <span class=\"material-icons\">report</span>\r\n </div>\r\n <p id=\"display-block-msg\">{{ authService.verifyAndSetNewPasswordErrorMessage }}</p>\r\n </div>\r\n\r\n <input\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"otp\"\r\n [placeholder]=\"constants.enterOtp\"\r\n autocomplete=\"new-field-name\"\r\n [ngClass]=\"{ 'input-invalid': authService.verifyAndSetNewPasswordErrorMessage }\"\r\n />\r\n\r\n <anna-cognito-lib-password-matching\r\n (passwordChange)=\"onPasswordChange($event)\"\r\n (confirmPasswordChange)=\"onConfirmPasswordChange($event)\"\r\n [passwordNotMatching]=\"passwordNotMatching\"\r\n >\r\n </anna-cognito-lib-password-matching>\r\n <button\r\n tabindex=\"4\"\r\n class=\"login-btn\"\r\n type=\"submit\"\r\n [disabled]=\"authService.sessionLocked || !isFormValid()\"\r\n (click)=\"onVerifyOtpSettingNewPassword()\"\r\n [anna-cognito-lib-SpinnerButton]=\"authService.forgotPasswordAndGlobalSignoutLoader\"\r\n [spinnerButtonText]=\"authService.verifyAndSetNewPasswordButton\"\r\n ></button>\r\n </form>\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template>\r\n </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>\r\n","import { Inject, Injectable } from \"@angular/core\";\r\nimport { IConfigService, CONFIG_SERVICE_TOKEN } from '../config/config-service.token';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaConfigService {\r\n \r\n constructor(@Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService) {}\r\n\r\n\r\n}\r\n","import { Inject, Injectable } from \"@angular/core\";\r\nimport { ISSOLoginService, SSO_LOGIN_SERVICE_TOKEN } from '../config/sso-login-service.token';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaSSOLoginService {\r\n \r\n constructor(@Inject(SSO_LOGIN_SERVICE_TOKEN) public consumingProjectSSOLoginService: ISSOLoginService) {}\r\n\r\n\r\n}\r\n","/*\r\n * Public API Surface of anna-cognito-lib\r\n */\r\n\r\n\r\n\r\n//COMPONENTS \r\nexport * from './lib/components/cognito-and-sso-login-container/cognito-and-sso-login-container.component';\r\nexport * from './lib/components/anna-login/anna-login.component';\r\nexport * from './lib/components/sso-login/sso-login.component';\r\nexport * from './lib/components/forgot-password/forgot-password.component';\r\nexport * from './lib/components/set-new-password/set-new-password.component';\r\nexport * from './lib/components/password-matching/password-matching.component';\r\nexport * from './lib/components/verify-and-set-new-password/verify-and-set-new-password.component';\r\nexport * from './lib/components/version-and-term-policy/version-and-term-policy.component';\r\nexport * from './lib/components/powered-by-logo-template/powered-by-logo-template.component';\r\nexport * from './lib/components/surewaves-year-logo/surewaves-year-logo.component';\r\n\r\n//SERVICES \r\nexport * from './lib/services/auth.service';\r\nexport * from './lib/services/acl.service';\r\nexport * from './lib/config/auth-service.token';\r\nexport * from './lib/config/acl-service.token';\r\nexport * from './lib/config/config-service.token';\r\nexport * from './lib/config/sso-login-service.token';\r\nexport * from './lib/services/config.service';\r\nexport * from './lib/services/sso-login.service';\r\n\r\n//DIRECTIVES \r\nexport * from './lib/directives/spinner-button';\r\n\r\n//CONSTANTS \r\nexport * from './lib/constants/loginConstant';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.AnnaLibAclService","i1.AnnaLibAuthService","i3","i4","i1"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@annalib/anna-cognito-lib",
3
- "version": "2.3.2",
3
+ "version": "2.3.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^16.2.12",
6
6
  "@angular/core": "^16.2.12",