@alauda-fe/common 1.3.0-beta.0 → 1.3.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,4 +9,3 @@ export * from './interceptor.service';
9
9
  export * from './app-init-url';
10
10
  export * from './session-manage.service';
11
11
  export * from './state.service';
12
- export * from './storage-token';
@@ -9,5 +9,4 @@ export * from './interceptor.service';
9
9
  export * from './app-init-url';
10
10
  export * from './session-manage.service';
11
11
  export * from './state.service';
12
- export * from './storage-token';
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILGNBQWM7QUFDZCxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogW1tpbmNsdWRlOmF1dGhvcml6YXRpb24vUkVBRE1FLm1kXV1cbiAqIEBtb2R1bGUgYXV0aG9yaXphdGlvblxuICogQHByZWZlcnJlZFxuICovXG5cbi8qKiBpbXBvcnRzICovXG5leHBvcnQgKiBmcm9tICcuL2d1YXJkLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmNlcHRvci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXBwLWluaXQtdXJsJztcbmV4cG9ydCAqIGZyb20gJy4vc2Vzc2lvbi1tYW5hZ2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0YXRlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yYWdlLXRva2VuJztcbiJdfQ==
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILGNBQWM7QUFDZCxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFtbaW5jbHVkZTphdXRob3JpemF0aW9uL1JFQURNRS5tZF1dXG4gKiBAbW9kdWxlIGF1dGhvcml6YXRpb25cbiAqIEBwcmVmZXJyZWRcbiAqL1xuXG4vKiogaW1wb3J0cyAqL1xuZXhwb3J0ICogZnJvbSAnLi9ndWFyZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJjZXB0b3Iuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2FwcC1pbml0LXVybCc7XG5leHBvcnQgKiBmcm9tICcuL3Nlc3Npb24tbWFuYWdlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zdGF0ZS5zZXJ2aWNlJztcbiJdfQ==
@@ -57,9 +57,11 @@ export class AuthorizationStateService {
57
57
  console.error(e);
58
58
  }
59
59
  }
60
- const href = redirectUrl
61
- ? replaceRedirectUrl(this.stateSnapshot.authUrl, redirectUrl)
62
- : this.stateSnapshot.authUrl;
60
+ const href = replaceRedirectUrl(this.stateSnapshot.authUrl,
61
+ // authUrl 中的 redirectUrl 是根路由,根路由二次重定向回 portal 时会丢失 code 导致登录失败
62
+ // 如果后期有定制化要求默认首页不是 portal,可以改回之前的方案,使用浏览器导航打开 logoutUrl,然后 dex 重定向到根路由,根路由重定向到默认首页,首页再将 authUrl 中的 redirectUrl 替换为当前 url 跳转到 dex 进行登录;
63
+ // 最好环境变量增加默认首页地址或者 dex redirectUrl 直接是正确地址
64
+ redirectUrl || location.origin + '/console-portal');
63
65
  try {
64
66
  getTopWindow().location.href = href;
65
67
  }
@@ -222,4 +224,4 @@ function mapTokenResponse() {
222
224
  refreshToken: refresh_token,
223
225
  })));
224
226
  }
225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL3N0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUNMLEtBQUssRUFFTCxPQUFPLEVBQ1AsTUFBTSxFQUNOLEVBQUUsRUFDRixVQUFVLEVBQ1YsR0FBRyxFQUNILFdBQVcsRUFDWCxTQUFTLEVBQ1QsR0FBRyxFQUNILElBQUksRUFDSixJQUFJLEdBQ0wsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBRUwsV0FBVyxFQUNYLDJCQUEyQixFQUMzQixVQUFVLEVBQ1YsWUFBWSxHQUNiLE1BQU0sb0JBQW9CLENBQUM7QUFHNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsaUJBQWlCLEdBQ2xCLE1BQU0saUJBQWlCLENBQUM7O0FBa0J6QixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7QUFDaEQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUM7QUFDakQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQztBQUUvQixNQUFNLFNBQVMsR0FBRyw2QkFBNkIsQ0FBQztBQUNoRCxNQUFNLFlBQVksR0FBRyxnQ0FBZ0MsQ0FBQztBQUN0RCxNQUFN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QztBQUVELFNBQVMsY0FBYyxDQUFDLEtBQXlCO0lBQy9DLE9BQU8sS0FBSyxDQUFDLE9BQU87UUFDbEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNYLENBQUM7QUFFRCxTQUFTLGdCQUFnQjtJQUN2QixPQUFPLElBQUksQ0FDVCxHQUFHLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFpQixFQUFFLEVBQUU7UUFDaEUsaUJBQWlCLENBQUM7WUFDaEIsV0FBVyxFQUFFLGFBQWE7WUFDMUIsT0FBTyxFQUFFLFFBQVE7WUFDakIsWUFBWSxFQUFFLGFBQWE7U0FDNUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEMsT0FBTyxFQUFFLFFBQVE7UUFDakIsWUFBWSxFQUFFLGFBQWE7S0FDNUIsQ0FBQyxDQUFDLENBQ0osQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICogQG1vZHVsZSBhdXRob3JpemF0aW9uXG4gKi9cblxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGVjb2RlVXJsIH0gZnJvbSAnYWI2NCc7XG5pbXBvcnQge1xuICBFTVBUWSxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgY29uY2F0LFxuICBvZixcbiAgY2F0Y2hFcnJvcixcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbiAgc3dpdGNoTWFwLFxuICB0YXAsXG4gIHBpcGUsXG4gIGZyb20sXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBTdHJpbmdNYXAsXG4gIEFQSV9HQVRFV0FZLFxuICBOT1RfTk9USUZZX09OX0VSUk9SX0hFQURFUlMsXG4gIHB1Ymxpc2hSZWYsXG4gIGdldFRvcFdpbmRvdyxcbn0gZnJvbSAnLi4vY29yZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IEFjY291bnRJbmZvIH0gZnJvbSAnLi4vcGFnZS1zY2FmZm9sZC9wdWJsaWMtYXBpJztcblxuaW1wb3J0IHsgZ2V0SW5pdFVybCB9IGZyb20gJy4vYXBwLWluaXQtdXJsJztcbmltcG9ydCB7XG4gIGFzeW5jUmVhZFN0b3JhZ2VUb2tlbixcbiAgY2xlYW5TdG9yYWdlVG9rZW4sXG4gIHJlYWRTdG9yYWdlVG9rZW4sXG4gIHJlYWRTdG9yYWdlVHlwZSxcbiAgd3JpdGVTdG9yYWdlVG9rZW4sXG59IGZyb20gJy4vc3RvcmFnZS10b2tlbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yaXphdGlvblN0YXRlIHtcbiAgaWRUb2tlbj86IHN0cmluZztcbiAgcmVmcmVzaFRva2VuPzogc3RyaW5nO1xuICBzdGF0ZT86IHN0cmluZztcbiAgYXV0aFVybD86IHN0cmluZztcbiAgbG9nb3V0VXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuUmVzcG9uc2Uge1xuICB0b2tlbl9zdG9yYWdlOiBTdG9yYWdlVHlwZTtcbiAgaWRfdG9rZW46IHN0cmluZztcbiAgcmVmcmVzaF90b2tlbjogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBTdG9yYWdlVHlwZSA9ICdsb2NhbCcgfCAnc2Vzc2lvbic7XG5cbmV4cG9ydCBjb25zdCBTVE9SQUdFX1RZUEVfS0VZID0gJ3Rva2VuX3N0b3JhZ2UnO1xuZXhwb3J0IGNvbnN0IElEX1RPS0VOX0tFWSA9ICdpZF90b2tlbic7XG5leHBvcnQgY29uc3QgUkVGUkVTSF9UT0tFTl9LRVkgPSAncmVmcmVzaF90b2tlbic7XG5leHBvcnQgY29uc3QgQ09ERV9LRVkgPSAnY29kZSc7XG5cbmNvbnN0IExPR0lOX0FQSSA9ICcvY29uc29sZS9hcGkvdjEvdG9rZW4vbG9naW4nO1xuY29uc3QgQ0FMTEJBQ0tfQVBJID0gJy9jb25zb2xlL2FwaS92MS90b2tlbi9jYWxsYmFjayc7XG5jb25zdCBUT0tFTl9SRUZSRVNIX0FQSSA9ICcvY29uc29sZS9hcGkvdjEvdG9rZW4vcmVmcmVzaCc7XG5jb25zdCBUT0tFTl9JTkZPX0FQSSA9ICcvY29uc29sZS9hcGkvdjEvdG9rZW4vaW5mbyc7XG5cbmNvbnN0IFJFRElSRUNUX1VSSVMgPSBuZXcgU2V0KFsncmVkaXJlY3RfdXJpJywgJ3Bvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSddKTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBdXRob3JpemF0aW9uU3RhdGVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVmcmVzaFRva2VuJCQgPSBuZXcgU3ViamVjdDx7XG4gICAgaWRUb2tlbjogc3RyaW5nO1xuICAgIHJlZnJlc2hUb2tlbjogc3RyaW5nO1xuICB9PigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhdGUkID0gdGhpcy5nZXRBdXRoQ29uZmlndXJhdGlvbigpLnBpcGUoXG4gICAgc3dpdGNoTWFwKGNvbmZpZyA9PlxuICAgICAgY29uY2F0KHRoaXMuZ2V0RXhpc3RlZFRva2VuKGNvbmZpZyksIHRoaXMucmVmcmVzaFRva2VuJCQpLnBpcGUoXG4gICAgICAgIG1hcCh0b2tlbiA9PiAoeyAuLi5jb25maWcsIC4uLnRva2VuIH0pKSxcbiAgICAgICksXG4gICAgKSxcbiAgICB0YXAoc3RhdGUgPT4ge1xuICAgICAgdGhpcy5zdGF0ZVNuYXBzaG90ID0gc3RhdGU7XG4gICAgICBpZiAoIXN0YXRlLmlkVG9rZW4pIHtcbiAgICAgICAgdGhpcy5sb2dvdXQodHJ1ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLnBheWxvYWRTbmFwc2hvdCA9IGdldEFjY291bnRJbmZvKHN0YXRlKTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgKTtcblxuICBwcml2YXRlIGNoZWNrVG9rZW5DYWNoZTogUmVjb3JkPHN0cmluZywgT2JzZXJ2YWJsZTx1bmtub3duPj4gPSB7fTtcbiAgcHJpdmF0ZSByZWZyZXNoVG9rZW5DYWNoZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBzdGF0ZVNuYXBzaG90OiBBdXRob3JpemF0aW9uU3RhdGUgPSBudWxsO1xuXG4gIHBheWxvYWRTbmFwc2hvdDogQWNjb3VudEluZm87XG5cbiAgbG9nb3V0KHNwZWNpZmljVXJsID0gZmFsc2UpIHtcbiAgICBjbGVhblN0b3JhZ2VUb2tlbigpO1xuICAgIHRoaXMucmVkaXJlY3RUb0RleChzcGVjaWZpY1VybCAmJiBsb2NhdGlvbi5ocmVmKTtcbiAgfVxuXG4gIGxvZ291dEF1ZGl0KCkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcbiAgICAgIGAke0FQSV9HQVRFV0FZfS9hdXRoL3YxL2xvZ291dGAsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyczogTk9UX05PVElGWV9PTl9FUlJPUl9IRUFERVJTLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgcmVkaXJlY3RUb0RleChyZWRpcmVjdFVybDogc3RyaW5nID0gbnVsbCkge1xuICAgIGlmICghdGhpcy5zdGF0ZVNuYXBzaG90KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8g5Li75Yqo6YCA5Ye65oiWIHNlc3Npb24g5qih5byP6Lez6L2s5YiwIGRleCDliY3pnIDopoHkuLvliqjmuIXpmaQgYHVzZXJfbG9naW5gIGNvb2tpZSDpmLLmraLoh6rliqjmjojmnYNcbiAgICBpZiAoISF0aGlzLnN0YXRlU25hcHNob3QuaWRUb2tlbiB8fCByZWFkU3RvcmFnZVR5cGUoKSA9PT0gJ3Nlc3Npb24nKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBmZXRjaChcbiAgICAgICAgICBgJHt0aGlzLnN0YXRlU25hcHNob3QubG9nb3V0VXJsfSZpZF90b2tlbl9oaW50PSR7XG4gICAgICAgICAgICAvLyDkuLvliqjpgIDlh7rml7bnpoHnlKjnjrDmnIkgdG9rZW5cbiAgICAgICAgICAgIHRoaXMuc3RhdGVTbmFwc2hvdC5pZFRva2VuIHx8ICcnXG4gICAgICAgICAgfWAsXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaHJlZiA9IHJlZGlyZWN0VXJsXG4gICAgICA/IHJlcGxhY2VSZWRpcmVjdFVybCh0aGlzLnN0YXRlU25hcHNob3QuYXV0aFVybCwgcmVkaXJlY3RVcmwpXG4gICAgICA6IHRoaXMuc3RhdGVTbmFwc2hvdC5hdXRoVXJsO1xuXG4gICAgdHJ5IHtcbiAgICAgIGdldFRvcFdpbmRvdygpLmxvY2F0aW9uLmhyZWYgPSBocmVmO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gc2hvdWxkIG5ldmVyIGhhcHBlbiwganVzdCBmb3Igcm9idXN0bmVzcyBpbiBjYXNlIG9mIGNyb3NzLW9yaWdpbiBpZnJhbWVcbiAgICAgIGxvY2F0aW9uLmhyZWYgPSBocmVmO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2hUb2tlbigpIHtcbiAgICBjb25zdCByZWZyZXNoVG9rZW4gPSByZWFkU3RvcmFnZVRva2VuKCk/LnJlZnJlc2hUb2tlbjtcbiAgICBpZiAocmVmcmVzaFRva2VuKSB7XG4gICAgICBpZiAoIXRoaXMucmVmcmVzaFRva2VuQ2FjaGUkKSB7XG4gICAgICAgIHRoaXMucmVmcmVzaFRva2VuQ2FjaGUkID0gdGhpcy5nZXRUb2tlbkJ5UmVmcmVzaFRva2VuKFxuICAgICAgICAgIHJlZnJlc2hUb2tlbixcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgIHRhcCh0b2tlbiA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbkNhY2hlJCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbiQkLm5leHQodG9rZW4pO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIG1hcCgoeyBpZFRva2VuIH0pID0+IGlkVG9rZW4pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2dvdXQodHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgcHVibGlzaFJlZigpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuQ2FjaGUkO1xuICAgIH1cbiAgICB0aGlzLmxvZ291dCh0cnVlKTtcbiAgICByZXR1cm4gRU1QVFk7XG4gIH1cblxuICBjaGVja1Rva2VuKHRva2VuOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuY2hlY2tUb2tlbkNhY2hlW3Rva2VuXSkge1xuICAgICAgdGhpcy5jaGVja1Rva2VuQ2FjaGVbdG9rZW5dID0gdGhpcy5odHRwXG4gICAgICAgIC5nZXQoVE9LRU5fSU5GT19BUEksIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dG9rZW59YCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YXAoe1xuICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmNoZWNrVG9rZW5DYWNoZVt0b2tlbl0gPSBudWxsO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tUb2tlbkNhY2hlW3Rva2VuXSA9IG51bGw7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHB1Ymxpc2hSZWYoKSxcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tUb2tlbkNhY2hlW3Rva2VuXTtcbiAgfVxuXG4gIGdldFRva2VuKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlJC5waXBlKG1hcChzdGF0ZSA9PiBzdGF0ZS5pZFRva2VuKSk7XG4gIH1cblxuICBnZXRUb2tlblBheWxvYWQ8VD4oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUkLnBpcGUobWFwKHN0YXRlID0+IGdldEFjY291bnRJbmZvKHN0YXRlKSBhcyBUKSk7XG4gIH1cblxuICBnZXRBY2NvdW50SW5mbygpIHtcbiAgICBpZiAodGhpcy5wYXlsb2FkU25hcHNob3QpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLnBheWxvYWRTbmFwc2hvdCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0YXRlJC5waXBlKG1hcChzdGF0ZSA9PiBnZXRBY2NvdW50SW5mbyhzdGF0ZSkgfHwge30pKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXV0aENvbmZpZ3VyYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDx7IGF1dGhfdXJsOiBzdHJpbmc7IHN0YXRlOiBzdHJpbmc7IGxvZ291dF91cmw6IHN0cmluZyB9PihMT0dJTl9BUEkpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiAoe1xuICAgICAgICAgIGF1dGhVcmw6IHJlcy5hdXRoX3VybCxcbiAgICAgICAgICBzdGF0ZTogcmVzLnN0YXRlLFxuICAgICAgICAgIGxvZ291dFVybDogcmVzLmxvZ291dF91cmwgfHwgJycsXG4gICAgICAgIH0pKSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEV4aXN0ZWRUb2tlbihjb25maWc6IEF1dGhvcml6YXRpb25TdGF0ZSkge1xuICAgIHJldHVybiB0aGlzLmdldFRva2VuRnJvbUxvY2FsKGNvbmZpZykucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIG9mKHsgaWRUb2tlbjogJycsIHJlZnJlc2hUb2tlbjogJycgfSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb2tlbkZyb21Mb2NhbChcbiAgICBjb25maWc6IEF1dGhvcml6YXRpb25TdGF0ZSxcbiAgKTogT2JzZXJ2YWJsZTx7IGlkVG9rZW4/OiBzdHJpbmc7IHJlZnJlc2hUb2tlbj86IHN0cmluZyB9PiB7XG4gICAgY29uc3QgeyBxdWVyeVBhcmFtcywgaGFzaFBhcmFtcyB9ID0gdGhpcy5nZXRQYXJhbXMoKTtcblxuICAgIGNvbnN0IGNvZGUgPSBxdWVyeVBhcmFtc1tDT0RFX0tFWV0gfHwgaGFzaFBhcmFtc1tDT0RFX0tFWV07XG5cbiAgICBpZiAoY29kZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VG9rZW5CeUNvZGUoY29kZSwgY29uZmlnLnN0YXRlKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWZyZXNoVG9rZW4gPVxuICAgICAgcXVlcnlQYXJhbXNbUkVGUkVTSF9UT0tFTl9LRVldIHx8IGhhc2hQYXJhbXNbUkVGUkVTSF9UT0tFTl9LRVldO1xuXG4gICAgaWYgKHJlZnJlc2hUb2tlbikge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VG9rZW5CeVJlZnJlc2hUb2tlbihyZWZyZXNoVG9rZW4pO1xuICAgIH1cblxuICAgIGNvbnN0IGlkVG9rZW4gPSBxdWVyeVBhcmFtc1tJRF9UT0tFTl9LRVldIHx8IGhhc2hQYXJhbXNbSURfVE9LRU5fS0VZXTtcblxuICAgIGlmIChpZFRva2VuKSB7XG4gICAgICB3cml0ZVN0b3JhZ2VUb2tlbih7XG4gICAgICAgIHN0b3JhZ2VUeXBlOiAocXVlcnlQYXJhbXNbU1RPUkFHRV9UWVBFX0tFWV0gfHxcbiAgICAgICAgICBoYXNoUGFyYW1zW1NUT1JBR0VfVFlQRV9LRVldKSBhcyBUb2tlblJlc3BvbnNlWyd0b2tlbl9zdG9yYWdlJ10sXG4gICAgICAgIGlkVG9rZW4sXG4gICAgICAgIHJlZnJlc2hUb2tlbjogJycsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJvbShhc3luY1JlYWRTdG9yYWdlVG9rZW4oKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFRva2VuQnlSZWZyZXNoVG9rZW4ocmVmcmVzaFRva2VuOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PFRva2VuUmVzcG9uc2U+KFRPS0VOX1JFRlJFU0hfQVBJLCB7XG4gICAgICAgIHBhcmFtczogeyByZWZyZXNoX3Rva2VuOiByZWZyZXNoVG9rZW4gfSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUb2tlblJlc3BvbnNlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb2tlbkJ5Q29kZShjb2RlOiBzdHJpbmcsIHN0YXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PFRva2VuUmVzcG9uc2U+KENBTExCQUNLX0FQSSwge1xuICAgICAgICBwYXJhbXM6IHsgY29kZSwgc3RhdGUgfSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUb2tlblJlc3BvbnNlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJhbXMoKSB7XG4gICAgY29uc3QgaW5pdFVybCA9IGdldEluaXRVcmwoKTtcblxuICAgIGNvbnN0IGluaXRMb2NhdGlvbiA9IG5ldyBVUkwoaW5pdFVybCk7XG5cbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHBhcnNlUGFyYW1zKFxuICAgICAgaW5pdExvY2F0aW9uLnNlYXJjaCA/IGluaXRMb2NhdGlvbi5zZWFyY2guc2xpY2UoMSkgOiAnJyxcbiAgICApO1xuXG4gICAgY29uc3QgaGFzaFBhcmFtcyA9IHBhcnNlUGFyYW1zKFxuICAgICAgaW5pdExvY2F0aW9uLmhhc2ggPyBpbml0TG9jYXRpb24uaGFzaC5zbGljZSgxKSA6ICcnLFxuICAgICk7XG5cbiAgICByZXR1cm4geyBxdWVyeVBhcmFtcywgaGFzaFBhcmFtcyB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VSZWRpcmVjdFVybChkZXhVcmw6IHN0cmluZywgcmVkaXJlY3RVcmw6IHN0cmluZykge1xuICBjb25zdCBbcGF0aCwgcXVlcnlQYXJhbXNdID0gZGV4VXJsLnNwbGl0KCc/Jyk7XG5cbiAgY29uc3QgcmVwbGFjZWRRdWVyeVBhcmFtcyA9IHF1ZXJ5UGFyYW1zXG4gICAgLnNwbGl0KCcmJylcbiAgICAubWFwKHBhaXIgPT4ge1xuICAgICAgY29uc3QgW2tleSwgdmFsdWVdID0gcGFpci5zcGxpdCgnPScpO1xuICAgICAgcmV0dXJuIFJFRElSRUNUX1VSSVMuaGFzKGtleSlcbiAgICAgICAgPyBgJHtrZXl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHJlZGlyZWN0VXJsKX1gXG4gICAgICAgIDogYCR7a2V5fT0ke3ZhbHVlfWA7XG4gICAgfSlcbiAgICAuam9pbignJicpO1xuXG4gIHJldHVybiBgJHtwYXRofT8ke3JlcGxhY2VkUXVlcnlQYXJhbXN9YDtcbn1cblxuZnVuY3Rpb24gcGFyc2VQYXJhbXMocXVlcnk6IHN0cmluZyk6IFN0cmluZ01hcCB7XG4gIGlmICghcXVlcnkpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICByZXR1cm4gcXVlcnkuc3BsaXQoJyYnKS5yZWR1Y2UoKGFjYywgcGFyYW0pID0+IHtcbiAgICBjb25zdCBba2V5LCB2YWx1ZV0gPSBwYXJhbS5zcGxpdCgnPScpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmFjYyxcbiAgICAgIFtrZXldOiB2YWx1ZSxcbiAgICB9O1xuICB9LCB7fSk7XG59XG5cbmZ1bmN0aW9uIGdldEFjY291bnRJbmZvKHN0YXRlOiBBdXRob3JpemF0aW9uU3RhdGUpOiBBY2NvdW50SW5mbyB7XG4gIHJldHVybiBzdGF0ZS5pZFRva2VuXG4gICAgPyBKU09OLnBhcnNlKGRlY29kZVVybChzdGF0ZS5pZFRva2VuLnNwbGl0KCcuJylbMV0pKVxuICAgIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gbWFwVG9rZW5SZXNwb25zZSgpIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgdGFwKCh7IHRva2VuX3N0b3JhZ2UsIGlkX3Rva2VuLCByZWZyZXNoX3Rva2VuIH06IFRva2VuUmVzcG9uc2UpID0+IHtcbiAgICAgIHdyaXRlU3RvcmFnZVRva2VuKHtcbiAgICAgICAgc3RvcmFnZVR5cGU6IHRva2VuX3N0b3JhZ2UsXG4gICAgICAgIGlkVG9rZW46IGlkX3Rva2VuLFxuICAgICAgICByZWZyZXNoVG9rZW46IHJlZnJlc2hfdG9rZW4sXG4gICAgICB9KTtcbiAgICB9KSxcbiAgICBtYXAoKHsgaWRfdG9rZW4sIHJlZnJlc2hfdG9rZW4gfSkgPT4gKHtcbiAgICAgIGlkVG9rZW46IGlkX3Rva2VuLFxuICAgICAgcmVmcmVzaFRva2VuOiByZWZyZXNoX3Rva2VuLFxuICAgIH0pKSxcbiAgKTtcbn1cbiJdfQ==
227
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL3N0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUNMLEtBQUssRUFFTCxPQUFPLEVBQ1AsTUFBTSxFQUNOLEVBQUUsRUFDRixVQUFVLEVBQ1YsR0FBRyxFQUNILFdBQVcsRUFDWCxTQUFTLEVBQ1QsR0FBRyxFQUNILElBQUksRUFDSixJQUFJLEdBQ0wsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBRUwsV0FBVyxFQUNYLDJCQUEyQixFQUMzQixVQUFVLEVBQ1YsWUFBWSxHQUNiLE1BQU0sb0JBQW9CLENBQUM7QUFHNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsaUJBQWlCLEdBQ2xCLE1BQU0saUJBQWlCLENBQUM7O0FBa0J6QixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7QUFDaEQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUM7QUFDakQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQztBQUUvQixNQUFNLFNBQVMsR0FBRyw2QkFBNkIsQ0FBQztBQUNoRCxNQUFNLFlBQVksR0FBRyxnQ0FBZ0MsQ0FBQztBQUN0RCxNQUFN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QUM7QUFDVCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsS0FBeUI7SUFDL0MsT0FBTyxLQUFLLENBQUMsT0FBTztRQUNsQixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ1gsQ0FBQztBQUVELFNBQVMsZ0JBQWdCO0lBQ3ZCLE9BQU8sSUFBSSxDQUNULEdBQUcsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQWlCLEVBQUUsRUFBRTtRQUNoRSxpQkFBaUIsQ0FBQztZQUNoQixXQUFXLEVBQUUsYUFBYTtZQUMxQixPQUFPLEVBQUUsUUFBUTtZQUNqQixZQUFZLEVBQUUsYUFBYTtTQUM1QixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwQyxPQUFPLEVBQUUsUUFBUTtRQUNqQixZQUFZLEVBQUUsYUFBYTtLQUM1QixDQUFDLENBQUMsQ0FDSixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKiBAbW9kdWxlIGF1dGhvcml6YXRpb25cbiAqL1xuXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWNvZGVVcmwgfSBmcm9tICdhYjY0JztcbmltcG9ydCB7XG4gIEVNUFRZLFxuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBjb25jYXQsXG4gIG9mLFxuICBjYXRjaEVycm9yLFxuICBtYXAsXG4gIHNoYXJlUmVwbGF5LFxuICBzd2l0Y2hNYXAsXG4gIHRhcCxcbiAgcGlwZSxcbiAgZnJvbSxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIFN0cmluZ01hcCxcbiAgQVBJX0dBVEVXQVksXG4gIE5PVF9OT1RJRllfT05fRVJST1JfSEVBREVSUyxcbiAgcHVibGlzaFJlZixcbiAgZ2V0VG9wV2luZG93LFxufSBmcm9tICcuLi9jb3JlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgQWNjb3VudEluZm8gfSBmcm9tICcuLi9wYWdlLXNjYWZmb2xkL3B1YmxpYy1hcGknO1xuXG5pbXBvcnQgeyBnZXRJbml0VXJsIH0gZnJvbSAnLi9hcHAtaW5pdC11cmwnO1xuaW1wb3J0IHtcbiAgYXN5bmNSZWFkU3RvcmFnZVRva2VuLFxuICBjbGVhblN0b3JhZ2VUb2tlbixcbiAgcmVhZFN0b3JhZ2VUb2tlbixcbiAgcmVhZFN0b3JhZ2VUeXBlLFxuICB3cml0ZVN0b3JhZ2VUb2tlbixcbn0gZnJvbSAnLi9zdG9yYWdlLXRva2VuJztcblxuZXhwb3J0IGludGVyZmFjZSBBdXRob3JpemF0aW9uU3RhdGUge1xuICBpZFRva2VuPzogc3RyaW5nO1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmc7XG4gIHN0YXRlPzogc3RyaW5nO1xuICBhdXRoVXJsPzogc3RyaW5nO1xuICBsb2dvdXRVcmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5SZXNwb25zZSB7XG4gIHRva2VuX3N0b3JhZ2U6IFN0b3JhZ2VUeXBlO1xuICBpZF90b2tlbjogc3RyaW5nO1xuICByZWZyZXNoX3Rva2VuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFN0b3JhZ2VUeXBlID0gJ2xvY2FsJyB8ICdzZXNzaW9uJztcblxuZXhwb3J0IGNvbnN0IFNUT1JBR0VfVFlQRV9LRVkgPSAndG9rZW5fc3RvcmFnZSc7XG5leHBvcnQgY29uc3QgSURfVE9LRU5fS0VZID0gJ2lkX3Rva2VuJztcbmV4cG9ydCBjb25zdCBSRUZSRVNIX1RPS0VOX0tFWSA9ICdyZWZyZXNoX3Rva2VuJztcbmV4cG9ydCBjb25zdCBDT0RFX0tFWSA9ICdjb2RlJztcblxuY29uc3QgTE9HSU5fQVBJID0gJy9jb25zb2xlL2FwaS92MS90b2tlbi9sb2dpbic7XG5jb25zdCBDQUxMQkFDS19BUEkgPSAnL2NvbnNvbGUvYXBpL3YxL3Rva2VuL2NhbGxiYWNrJztcbmNvbnN0IFRPS0VOX1JFRlJFU0hfQVBJID0gJy9jb25zb2xlL2FwaS92MS90b2tlbi9yZWZyZXNoJztcbmNvbnN0IFRPS0VOX0lORk9fQVBJID0gJy9jb25zb2xlL2FwaS92MS90b2tlbi9pbmZvJztcblxuY29uc3QgUkVESVJFQ1RfVVJJUyA9IG5ldyBTZXQoWydyZWRpcmVjdF91cmknLCAncG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpJ10pO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEF1dGhvcml6YXRpb25TdGF0ZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZWZyZXNoVG9rZW4kJCA9IG5ldyBTdWJqZWN0PHtcbiAgICBpZFRva2VuOiBzdHJpbmc7XG4gICAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG4gIH0+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdGF0ZSQgPSB0aGlzLmdldEF1dGhDb25maWd1cmF0aW9uKCkucGlwZShcbiAgICBzd2l0Y2hNYXAoY29uZmlnID0+XG4gICAgICBjb25jYXQodGhpcy5nZXRFeGlzdGVkVG9rZW4oY29uZmlnKSwgdGhpcy5yZWZyZXNoVG9rZW4kJCkucGlwZShcbiAgICAgICAgbWFwKHRva2VuID0+ICh7IC4uLmNvbmZpZywgLi4udG9rZW4gfSkpLFxuICAgICAgKSxcbiAgICApLFxuICAgIHRhcChzdGF0ZSA9PiB7XG4gICAgICB0aGlzLnN0YXRlU25hcHNob3QgPSBzdGF0ZTtcbiAgICAgIGlmICghc3RhdGUuaWRUb2tlbikge1xuICAgICAgICB0aGlzLmxvZ291dCh0cnVlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGF5bG9hZFNuYXBzaG90ID0gZ2V0QWNjb3VudEluZm8oc3RhdGUpO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICApO1xuXG4gIHByaXZhdGUgY2hlY2tUb2tlbkNhY2hlOiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPHVua25vd24+PiA9IHt9O1xuICBwcml2YXRlIHJlZnJlc2hUb2tlbkNhY2hlJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIHN0YXRlU25hcHNob3Q6IEF1dGhvcml6YXRpb25TdGF0ZSA9IG51bGw7XG5cbiAgcGF5bG9hZFNuYXBzaG90OiBBY2NvdW50SW5mbztcblxuICBsb2dvdXQoc3BlY2lmaWNVcmwgPSBmYWxzZSkge1xuICAgIGNsZWFuU3RvcmFnZVRva2VuKCk7XG4gICAgdGhpcy5yZWRpcmVjdFRvRGV4KHNwZWNpZmljVXJsICYmIGxvY2F0aW9uLmhyZWYpO1xuICB9XG5cbiAgbG9nb3V0QXVkaXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgYCR7QVBJX0dBVEVXQVl9L2F1dGgvdjEvbG9nb3V0YCxcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBoZWFkZXJzOiBOT1RfTk9USUZZX09OX0VSUk9SX0hFQURFUlMsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBhc3luYyByZWRpcmVjdFRvRGV4KHJlZGlyZWN0VXJsOiBzdHJpbmcgPSBudWxsKSB7XG4gICAgaWYgKCF0aGlzLnN0YXRlU25hcHNob3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyDkuLvliqjpgIDlh7rmiJYgc2Vzc2lvbiDmqKHlvI/ot7PovazliLAgZGV4IOWJjemcgOimgeS4u+WKqOa4hemZpCBgdXNlcl9sb2dpbmAgY29va2llIOmYsuatouiHquWKqOaOiOadg1xuICAgIGlmICghIXRoaXMuc3RhdGVTbmFwc2hvdC5pZFRva2VuIHx8IHJlYWRTdG9yYWdlVHlwZSgpID09PSAnc2Vzc2lvbicpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGZldGNoKFxuICAgICAgICAgIGAke3RoaXMuc3RhdGVTbmFwc2hvdC5sb2dvdXRVcmx9JmlkX3Rva2VuX2hpbnQ9JHtcbiAgICAgICAgICAgIC8vIOS4u+WKqOmAgOWHuuaXtuemgeeUqOeOsOaciSB0b2tlblxuICAgICAgICAgICAgdGhpcy5zdGF0ZVNuYXBzaG90LmlkVG9rZW4gfHwgJydcbiAgICAgICAgICB9YCxcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBocmVmID0gcmVwbGFjZVJlZGlyZWN0VXJsKFxuICAgICAgdGhpcy5zdGF0ZVNuYXBzaG90LmF1dGhVcmwsXG4gICAgICAvLyBhdXRoVXJsIOS4reeahCByZWRpcmVjdFVybCDmmK/moLnot6/nlLHvvIzmoLnot6/nlLHkuozmrKHph43lrprlkJHlm54gcG9ydGFsIOaXtuS8muS4ouWksSBjb2RlIOWvvOiHtOeZu+W9leWksei0pVxuICAgICAgLy8g5aaC5p6c5ZCO5pyf5pyJ5a6a5Yi25YyW6KaB5rGC6buY6K6k6aaW6aG15LiN5pivIHBvcnRhbO+8jOWPr+S7peaUueWbnuS5i+WJjeeahOaWueahiO+8jOS9v+eUqOa1j+iniOWZqOWvvOiIquaJk+W8gCBsb2dvdXRVcmzvvIznhLblkI4gZGV4IOmHjeWumuWQkeWIsOaguei3r+eUse+8jOaguei3r+eUsemHjeWumuWQkeWIsOm7mOiupOmmlumhte+8jOmmlumhteWGjeWwhiBhdXRoVXJsIOS4reeahCByZWRpcmVjdFVybCDmm7/mjaLkuLrlvZPliY0gdXJsIOi3s+i9rOWIsCBkZXgg6L+b6KGM55m75b2V77ybXG4gICAgICAvLyDmnIDlpb3njq/looPlj5jph4/lop7liqDpu5jorqTpppbpobXlnLDlnYDmiJbogIUgZGV4IHJlZGlyZWN0VXJsIOebtOaOpeaYr+ato+ehruWcsOWdgFxuICAgICAgcmVkaXJlY3RVcmwgfHwgbG9jYXRpb24ub3JpZ2luICsgJy9jb25zb2xlLXBvcnRhbCcsXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICBnZXRUb3BXaW5kb3coKS5sb2NhdGlvbi5ocmVmID0gaHJlZjtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIHNob3VsZCBuZXZlciBoYXBwZW4sIGp1c3QgZm9yIHJvYnVzdG5lc3MgaW4gY2FzZSBvZiBjcm9zcy1vcmlnaW4gaWZyYW1lXG4gICAgICBsb2NhdGlvbi5ocmVmID0gaHJlZjtcbiAgICB9XG4gIH1cblxuICByZWZyZXNoVG9rZW4oKSB7XG4gICAgY29uc3QgcmVmcmVzaFRva2VuID0gcmVhZFN0b3JhZ2VUb2tlbigpPy5yZWZyZXNoVG9rZW47XG4gICAgaWYgKHJlZnJlc2hUb2tlbikge1xuICAgICAgaWYgKCF0aGlzLnJlZnJlc2hUb2tlbkNhY2hlJCkge1xuICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbkNhY2hlJCA9IHRoaXMuZ2V0VG9rZW5CeVJlZnJlc2hUb2tlbihcbiAgICAgICAgICByZWZyZXNoVG9rZW4sXG4gICAgICAgICkucGlwZShcbiAgICAgICAgICB0YXAodG9rZW4gPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5DYWNoZSQgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW4kJC5uZXh0KHRva2VuKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBtYXAoKHsgaWRUb2tlbiB9KSA9PiBpZFRva2VuKSxcbiAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9nb3V0KHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHB1Ymxpc2hSZWYoKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnJlZnJlc2hUb2tlbkNhY2hlJDtcbiAgICB9XG4gICAgdGhpcy5sb2dvdXQodHJ1ZSk7XG4gICAgcmV0dXJuIEVNUFRZO1xuICB9XG5cbiAgY2hlY2tUb2tlbih0b2tlbjogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLmNoZWNrVG9rZW5DYWNoZVt0b2tlbl0pIHtcbiAgICAgIHRoaXMuY2hlY2tUb2tlbkNhY2hlW3Rva2VuXSA9IHRoaXMuaHR0cFxuICAgICAgICAuZ2V0KFRPS0VOX0lORk9fQVBJLCB7XG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFwKHtcbiAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5jaGVja1Rva2VuQ2FjaGVbdG9rZW5dID0gbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmNoZWNrVG9rZW5DYWNoZVt0b2tlbl0gPSBudWxsO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBwdWJsaXNoUmVmKCksXG4gICAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNoZWNrVG9rZW5DYWNoZVt0b2tlbl07XG4gIH1cblxuICBnZXRUb2tlbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZSQucGlwZShtYXAoc3RhdGUgPT4gc3RhdGUuaWRUb2tlbikpO1xuICB9XG5cbiAgZ2V0VG9rZW5QYXlsb2FkPFQ+KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlJC5waXBlKG1hcChzdGF0ZSA9PiBnZXRBY2NvdW50SW5mbyhzdGF0ZSkgYXMgVCkpO1xuICB9XG5cbiAgZ2V0QWNjb3VudEluZm8oKSB7XG4gICAgaWYgKHRoaXMucGF5bG9hZFNuYXBzaG90KSB7XG4gICAgICByZXR1cm4gb2YodGhpcy5wYXlsb2FkU25hcHNob3QpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdGF0ZSQucGlwZShtYXAoc3RhdGUgPT4gZ2V0QWNjb3VudEluZm8oc3RhdGUpIHx8IHt9KSk7XG4gIH1cblxuICBwcml2YXRlIGdldEF1dGhDb25maWd1cmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8eyBhdXRoX3VybDogc3RyaW5nOyBzdGF0ZTogc3RyaW5nOyBsb2dvdXRfdXJsOiBzdHJpbmcgfT4oTE9HSU5fQVBJKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXMgPT4gKHtcbiAgICAgICAgICBhdXRoVXJsOiByZXMuYXV0aF91cmwsXG4gICAgICAgICAgc3RhdGU6IHJlcy5zdGF0ZSxcbiAgICAgICAgICBsb2dvdXRVcmw6IHJlcy5sb2dvdXRfdXJsIHx8ICcnLFxuICAgICAgICB9KSksXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFeGlzdGVkVG9rZW4oY29uZmlnOiBBdXRob3JpemF0aW9uU3RhdGUpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRUb2tlbkZyb21Mb2NhbChjb25maWcpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIHJldHVybiBvZih7IGlkVG9rZW46ICcnLCByZWZyZXNoVG9rZW46ICcnIH0pO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VG9rZW5Gcm9tTG9jYWwoXG4gICAgY29uZmlnOiBBdXRob3JpemF0aW9uU3RhdGUsXG4gICk6IE9ic2VydmFibGU8eyBpZFRva2VuPzogc3RyaW5nOyByZWZyZXNoVG9rZW4/OiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IHsgcXVlcnlQYXJhbXMsIGhhc2hQYXJhbXMgfSA9IHRoaXMuZ2V0UGFyYW1zKCk7XG5cbiAgICBjb25zdCBjb2RlID0gcXVlcnlQYXJhbXNbQ09ERV9LRVldIHx8IGhhc2hQYXJhbXNbQ09ERV9LRVldO1xuXG4gICAgaWYgKGNvZGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFRva2VuQnlDb2RlKGNvZGUsIGNvbmZpZy5zdGF0ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVmcmVzaFRva2VuID1cbiAgICAgIHF1ZXJ5UGFyYW1zW1JFRlJFU0hfVE9LRU5fS0VZXSB8fCBoYXNoUGFyYW1zW1JFRlJFU0hfVE9LRU5fS0VZXTtcblxuICAgIGlmIChyZWZyZXNoVG9rZW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFRva2VuQnlSZWZyZXNoVG9rZW4ocmVmcmVzaFRva2VuKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZFRva2VuID0gcXVlcnlQYXJhbXNbSURfVE9LRU5fS0VZXSB8fCBoYXNoUGFyYW1zW0lEX1RPS0VOX0tFWV07XG5cbiAgICBpZiAoaWRUb2tlbikge1xuICAgICAgd3JpdGVTdG9yYWdlVG9rZW4oe1xuICAgICAgICBzdG9yYWdlVHlwZTogKHF1ZXJ5UGFyYW1zW1NUT1JBR0VfVFlQRV9LRVldIHx8XG4gICAgICAgICAgaGFzaFBhcmFtc1tTVE9SQUdFX1RZUEVfS0VZXSkgYXMgVG9rZW5SZXNwb25zZVsndG9rZW5fc3RvcmFnZSddLFxuICAgICAgICBpZFRva2VuLFxuICAgICAgICByZWZyZXNoVG9rZW46ICcnLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyb20oYXN5bmNSZWFkU3RvcmFnZVRva2VuKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb2tlbkJ5UmVmcmVzaFRva2VuKHJlZnJlc2hUb2tlbjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxUb2tlblJlc3BvbnNlPihUT0tFTl9SRUZSRVNIX0FQSSwge1xuICAgICAgICBwYXJhbXM6IHsgcmVmcmVzaF90b2tlbjogcmVmcmVzaFRva2VuIH0sXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwVG9rZW5SZXNwb25zZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VG9rZW5CeUNvZGUoY29kZTogc3RyaW5nLCBzdGF0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxUb2tlblJlc3BvbnNlPihDQUxMQkFDS19BUEksIHtcbiAgICAgICAgcGFyYW1zOiB7IGNvZGUsIHN0YXRlIH0sXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwVG9rZW5SZXNwb25zZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGFyYW1zKCkge1xuICAgIGNvbnN0IGluaXRVcmwgPSBnZXRJbml0VXJsKCk7XG5cbiAgICBjb25zdCBpbml0TG9jYXRpb24gPSBuZXcgVVJMKGluaXRVcmwpO1xuXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSBwYXJzZVBhcmFtcyhcbiAgICAgIGluaXRMb2NhdGlvbi5zZWFyY2ggPyBpbml0TG9jYXRpb24uc2VhcmNoLnNsaWNlKDEpIDogJycsXG4gICAgKTtcblxuICAgIGNvbnN0IGhhc2hQYXJhbXMgPSBwYXJzZVBhcmFtcyhcbiAgICAgIGluaXRMb2NhdGlvbi5oYXNoID8gaW5pdExvY2F0aW9uLmhhc2guc2xpY2UoMSkgOiAnJyxcbiAgICApO1xuXG4gICAgcmV0dXJuIHsgcXVlcnlQYXJhbXMsIGhhc2hQYXJhbXMgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXBsYWNlUmVkaXJlY3RVcmwoZGV4VXJsOiBzdHJpbmcsIHJlZGlyZWN0VXJsOiBzdHJpbmcpIHtcbiAgY29uc3QgW3BhdGgsIHF1ZXJ5UGFyYW1zXSA9IGRleFVybC5zcGxpdCgnPycpO1xuXG4gIGNvbnN0IHJlcGxhY2VkUXVlcnlQYXJhbXMgPSBxdWVyeVBhcmFtc1xuICAgIC5zcGxpdCgnJicpXG4gICAgLm1hcChwYWlyID0+IHtcbiAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IHBhaXIuc3BsaXQoJz0nKTtcbiAgICAgIHJldHVybiBSRURJUkVDVF9VUklTLmhhcyhrZXkpXG4gICAgICAgID8gYCR7a2V5fT0ke2VuY29kZVVSSUNvbXBvbmVudChyZWRpcmVjdFVybCl9YFxuICAgICAgICA6IGAke2tleX09JHt2YWx1ZX1gO1xuICAgIH0pXG4gICAgLmpvaW4oJyYnKTtcblxuICByZXR1cm4gYCR7cGF0aH0/JHtyZXBsYWNlZFF1ZXJ5UGFyYW1zfWA7XG59XG5cbmZ1bmN0aW9uIHBhcnNlUGFyYW1zKHF1ZXJ5OiBzdHJpbmcpOiBTdHJpbmdNYXAge1xuICBpZiAoIXF1ZXJ5KSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcmV0dXJuIHF1ZXJ5LnNwbGl0KCcmJykucmVkdWNlKChhY2MsIHBhcmFtKSA9PiB7XG4gICAgY29uc3QgW2tleSwgdmFsdWVdID0gcGFyYW0uc3BsaXQoJz0nKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5hY2MsXG4gICAgICBba2V5XTogdmFsdWUsXG4gICAgfTtcbiAgfSwge30pO1xufVxuXG5mdW5jdGlvbiBnZXRBY2NvdW50SW5mbyhzdGF0ZTogQXV0aG9yaXphdGlvblN0YXRlKTogQWNjb3VudEluZm8ge1xuICByZXR1cm4gc3RhdGUuaWRUb2tlblxuICAgID8gSlNPTi5wYXJzZShkZWNvZGVVcmwoc3RhdGUuaWRUb2tlbi5zcGxpdCgnLicpWzFdKSlcbiAgICA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIG1hcFRva2VuUmVzcG9uc2UoKSB7XG4gIHJldHVybiBwaXBlKFxuICAgIHRhcCgoeyB0b2tlbl9zdG9yYWdlLCBpZF90b2tlbiwgcmVmcmVzaF90b2tlbiB9OiBUb2tlblJlc3BvbnNlKSA9PiB7XG4gICAgICB3cml0ZVN0b3JhZ2VUb2tlbih7XG4gICAgICAgIHN0b3JhZ2VUeXBlOiB0b2tlbl9zdG9yYWdlLFxuICAgICAgICBpZFRva2VuOiBpZF90b2tlbixcbiAgICAgICAgcmVmcmVzaFRva2VuOiByZWZyZXNoX3Rva2VuLFxuICAgICAgfSk7XG4gICAgfSksXG4gICAgbWFwKCh7IGlkX3Rva2VuLCByZWZyZXNoX3Rva2VuIH0pID0+ICh7XG4gICAgICBpZFRva2VuOiBpZF90b2tlbixcbiAgICAgIHJlZnJlc2hUb2tlbjogcmVmcmVzaF90b2tlbixcbiAgICB9KSksXG4gICk7XG59XG4iXX0=
@@ -1,7 +1,11 @@
1
1
  import { ID_TOKEN_KEY, REFRESH_TOKEN_KEY, STORAGE_TYPE_KEY, } from './state.service';
2
- const getStorage = (storageType) => storageType === 'session' ? sessionStorage : localStorage;
3
2
  let sessionTokenShareChannel;
4
3
  const SESSION_TOKEN_SHARE_CHANNEL = 'SESSION_TOKEN_SHARE_CHANNEL';
4
+ const SESSION_CLOSE_TIMESTAMP = 'session_close_timestamp';
5
+ const recordSessionTimestamp = () => {
6
+ sessionStorage.setItem(SESSION_CLOSE_TIMESTAMP, Date.now().toString());
7
+ };
8
+ const getStorage = (storageType) => storageType === 'session' ? sessionStorage : localStorage;
5
9
  export function readStorageType() {
6
10
  return (localStorage.getItem(STORAGE_TYPE_KEY) === 'session' ? 'session' : 'local');
7
11
  }
@@ -13,21 +17,30 @@ export function cleanStorageToken() {
13
17
  }
14
18
  export function writeStorageToken(token) {
15
19
  cleanStorageToken();
16
- localStorage.setItem(STORAGE_TYPE_KEY, token.storageType);
20
+ sessionStorage.removeItem(SESSION_CLOSE_TIMESTAMP);
17
21
  const storage = getStorage(token.storageType);
18
22
  storage.setItem(ID_TOKEN_KEY, token.idToken);
19
23
  storage.setItem(REFRESH_TOKEN_KEY, token.refreshToken);
24
+ localStorage.setItem(STORAGE_TYPE_KEY, token.storageType);
20
25
  if (token.storageType === 'session') {
21
- setupRequestSessionTokenChannel();
26
+ setupSessionTokenShareChannel();
22
27
  }
23
28
  else {
24
- closeRequestSessionTokenChannel();
29
+ closeSessionTokenShareChannel();
25
30
  }
26
31
  }
27
32
  export function readStorageToken() {
28
33
  const storageType = readStorageType();
29
34
  if (storageType === 'session') {
30
- setupRequestSessionTokenChannel();
35
+ const sessionTimestamp = sessionStorage.getItem(SESSION_CLOSE_TIMESTAMP);
36
+ sessionStorage.removeItem(SESSION_CLOSE_TIMESTAMP);
37
+ if (sessionTimestamp &&
38
+ Date.now() - parseInt(sessionTimestamp) > 10 * 1000) {
39
+ // 浏览器恢复标签时清除 session token
40
+ cleanStorageToken();
41
+ console.warn('session timeout');
42
+ }
43
+ setupSessionTokenShareChannel();
31
44
  }
32
45
  const storage = getStorage(storageType);
33
46
  return {
@@ -37,9 +50,8 @@ export function readStorageToken() {
37
50
  };
38
51
  }
39
52
  export function asyncReadStorageToken() {
40
- const storageType = readStorageType();
41
- if (storageType === 'session' && !sessionStorage.getItem(ID_TOKEN_KEY)) {
42
- setupRequestSessionTokenChannel();
53
+ const storageToken = readStorageToken();
54
+ if (storageToken.storageType === 'session' && !storageToken.idToken) {
43
55
  return new Promise(resolve => {
44
56
  const timer = window.setTimeout(() => {
45
57
  console.warn('request session token timeout');
@@ -58,11 +70,9 @@ export function asyncReadStorageToken() {
58
70
  sessionTokenShareChannel.postMessage({ type: 'request' });
59
71
  });
60
72
  }
61
- return Promise.resolve(readStorageToken()).then(token => {
62
- return token;
63
- });
73
+ return Promise.resolve(storageToken);
64
74
  }
65
- function setupRequestSessionTokenChannel() {
75
+ function setupSessionTokenShareChannel() {
66
76
  if (sessionTokenShareChannel) {
67
77
  return;
68
78
  }
@@ -75,11 +85,14 @@ function setupRequestSessionTokenChannel() {
75
85
  });
76
86
  }
77
87
  });
88
+ window.addEventListener('beforeunload', recordSessionTimestamp);
78
89
  }
79
- function closeRequestSessionTokenChannel() {
80
- if (sessionTokenShareChannel) {
81
- sessionTokenShareChannel.close();
82
- sessionTokenShareChannel = null;
90
+ function closeSessionTokenShareChannel() {
91
+ if (!sessionTokenShareChannel) {
92
+ return;
83
93
  }
94
+ sessionTokenShareChannel.close();
95
+ sessionTokenShareChannel = null;
96
+ window.removeEventListener('beforeunload', recordSessionTimestamp);
84
97
  }
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS10b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL3N0b3JhZ2UtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixpQkFBaUIsRUFDakIsZ0JBQWdCLEdBRWpCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxXQUF3QixFQUFXLEVBQUUsQ0FDdkQsV0FBVyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7QUFFNUQsSUFBSSx3QkFBMEMsQ0FBQztBQUUvQyxNQUFNLDJCQUEyQixHQUFHLDZCQUE2QixDQUFDO0FBZWxFLE1BQU0sVUFBVSxlQUFlO0lBQzdCLE9BQU8sQ0FDTCxZQUFZLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDNUQsQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixZQUFZLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RDLFlBQVksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUUzQyxjQUFjLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hDLGNBQWMsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQW1CO0lBQ25ELGlCQUFpQixFQUFFLENBQUM7SUFFcEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFMUQsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMs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RUFBRTthQUNELENBQUMsQ0FBQztTQUM3QjtJQUNILENBQUMsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsK0JBQStCO0lBQ3RDLElBQUksd0JBQXdCLEVBQUU7UUFDNUIsd0JBQXdCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO0tBQ2pDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIElEX1RPS0VOX0tFWSxcbiAgUkVGUkVTSF9UT0tFTl9LRVksXG4gIFNUT1JBR0VfVFlQRV9LRVksXG4gIFN0b3JhZ2VUeXBlLFxufSBmcm9tICcuL3N0YXRlLnNlcnZpY2UnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBTdG9yYWdlVHlwZSk6IFN0b3JhZ2UgPT5cbiAgc3RvcmFnZVR5cGUgPT09ICdzZXNzaW9uJyA/IHNlc3Npb25TdG9yYWdlIDogbG9jYWxTdG9yYWdlO1xuXG5sZXQgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsOiBCcm9hZGNhc3RDaGFubmVsO1xuXG5jb25zdCBTRVNTSU9OX1RPS0VOX1NIQVJFX0NIQU5ORUwgPSAnU0VTU0lPTl9UT0tFTl9TSEFSRV9DSEFOTkVMJztcblxudHlwZSBTZXNzaW9uVG9rZW5TaGFyZURhdGEgPVxuICB8IHtcbiAgICAgIHR5cGU6ICdwcm92aWRlJztcbiAgICAgIHRva2VuOiBTdG9yYWdlVG9rZW47XG4gICAgfVxuICB8IHsgdHlwZTogJ3JlcXVlc3QnIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZVRva2VuIHtcbiAgc3RvcmFnZVR5cGU6IFN0b3JhZ2VUeXBlO1xuICBpZFRva2VuOiBzdHJpbmc7XG4gIHJlZnJlc2hUb2tlbjogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFN0b3JhZ2VUeXBlKCkge1xuICByZXR1cm4gKFxuICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfVFlQRV9LRVkpID09PSAnc2Vzc2lvbicgPyAnc2Vzc2lvbicgOiAnbG9jYWwnXG4gICkgYXMgU3RvcmFnZVR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhblN0b3JhZ2VUb2tlbigpIHtcbiAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oSURfVE9LRU5fS0VZKTtcbiAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oUkVGUkVTSF9UT0tFTl9LRVkpO1xuXG4gIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oSURfVE9LRU5fS0VZKTtcbiAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShSRUZSRVNIX1RPS0VOX0tFWSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVN0b3JhZ2VUb2tlbih0b2tlbjogU3RvcmFnZVRva2VuKSB7XG4gIGNsZWFuU3RvcmFnZVRva2VuKCk7XG5cbiAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oU1RPUkFHRV9UWVBFX0tFWSwgdG9rZW4uc3RvcmFnZVR5cGUpO1xuXG4gIGNvbnN0IHN0b3JhZ2UgPSBnZXRTdG9yYWdlKHRva2VuLnN0b3JhZ2VUeXBlKTtcblxuICBzdG9yYWdlLnNldEl0ZW0oSURfVE9LRU5fS0VZLCB0b2tlbi5pZFRva2VuKTtcbiAgc3RvcmFnZS5zZXRJdGVtKFJFRlJFU0hfVE9LRU5fS0VZLCB0b2tlbi5yZWZyZXNoVG9rZW4pO1xuXG4gIGlmICh0b2tlbi5zdG9yYWdlVHlwZSA9PT0gJ3Nlc3Npb24nKSB7XG4gICAgc2V0dXBSZXF1ZXN0U2Vzc2lvblRva2VuQ2hhbm5lbCgpO1xuICB9IGVsc2Uge1xuICAgIGNsb3NlUmVxdWVzdFNlc3Npb25Ub2tlbkNoYW5uZWwoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFN0b3JhZ2VUb2tlbigpOiBQYXJ0aWFsPFN0b3JhZ2VUb2tlbj4ge1xuICBjb25zdCBzdG9yYWdlVHlwZSA9IHJlYWRTdG9yYWdlVHlwZSgpO1xuXG4gIGlmIChzdG9yYWdlVHlwZSA9PT0gJ3Nlc3Npb24nKSB7XG4gICAgc2V0dXBSZXF1ZXN0U2Vzc2lvblRva2VuQ2hhbm5lbCgpO1xuICB9XG5cbiAgY29uc3Qgc3RvcmFnZSA9IGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUpO1xuXG4gIHJldHVybiB7XG4gICAgc3RvcmFnZVR5cGUsXG4gICAgaWRUb2tlbjogc3RvcmFnZS5nZXRJdGVtKElEX1RPS0VOX0tFWSksXG4gICAgcmVmcmVzaFRva2VuOiBzdG9yYWdlLmdldEl0ZW0oUkVGUkVTSF9UT0tFTl9LRVkpLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXN5bmNSZWFkU3RvcmFnZVRva2VuKCk6IFByb21pc2U8UGFydGlhbDxTdG9yYWdlVG9rZW4+PiB7XG4gIGNvbnN0IHN0b3JhZ2VUeXBlID0gcmVhZFN0b3JhZ2VUeXBlKCk7XG5cbiAgaWYgKHN0b3JhZ2VUeXBlID09PSAnc2Vzc2lvbicgJiYgIXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oSURfVE9LRU5fS0VZKSkge1xuICAgIHNldHVwUmVxdWVzdFNlc3Npb25Ub2tlbkNoYW5uZWwoKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGNvbnN0IHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zb2xlLndhcm4oJ3JlcXVlc3Qgc2Vzc2lvbiB0b2tlbiB0aW1lb3V0Jyk7XG4gICAgICAgIHNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbC5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgICdtZXNzYWdlJyxcbiAgICAgICAgICByZWNlaXZlU2Vzc2lvblRva2VuLFxuICAgICAgICApO1xuICAgICAgICByZXNvbHZlKHt9KTtcbiAgICAgIH0sIDUwKTtcblxuICAgICAgZnVuY3Rpb24gcmVjZWl2ZVNlc3Npb25Ub2tlbih7XG4gICAgICAgIGRhdGEsXG4gICAgICB9OiBNZXNzYWdlRXZlbnQ8U2Vzc2lvblRva2VuU2hhcmVEYXRhPikge1xuICAgICAgICBpZiAoZGF0YS50eXBlID09PSAncHJvdmlkZScpIHtcbiAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgICBzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgICdtZXNzYWdlJyxcbiAgICAgICAgICAgIHJlY2VpdmVTZXNzaW9uVG9rZW4sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHdyaXRlU3RvcmFnZVRva2VuKGRhdGEudG9rZW4pO1xuICAgICAgICAgIHJlc29sdmUoZGF0YS50b2tlbik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCByZWNlaXZlU2Vzc2lvblRva2VuKTtcblxuICAgICAgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsLnBvc3RNZXNzYWdlKHsgdHlwZTogJ3JlcXVlc3QnIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZWFkU3RvcmFnZVRva2VuKCkpLnRoZW4odG9rZW4gPT4ge1xuICAgIHJldHVybiB0b2tlbjtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNldHVwUmVxdWVzdFNlc3Npb25Ub2tlbkNoYW5uZWwoKSB7XG4gIGlmIChzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChTRVNTSU9OX1RPS0VOX1NIQVJFX0NIQU5ORUwpO1xuXG4gIHNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbC5hZGRFdmVudExpc3RlbmVyKFxuICAgICdtZXNzYWdlJyxcbiAgICAoeyBkYXRhIH06IE1lc3NhZ2VFdmVudDxTZXNzaW9uVG9rZW5TaGFyZURhdGE+KSA9PiB7XG4gICAgICBpZiAoZGF0YS50eXBlID09PSAncmVxdWVzdCcpIHtcbiAgICAgICAgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICB0eXBlOiAncHJvdmlkZScsXG4gICAgICAgICAgdG9rZW46IHJlYWRTdG9yYWdlVG9rZW4oKSxcbiAgICAgICAgfSBhcyBTZXNzaW9uVG9rZW5TaGFyZURhdGEpO1xuICAgICAgfVxuICAgIH0sXG4gICk7XG59XG5cbmZ1bmN0aW9uIGNsb3NlUmVxdWVzdFNlc3Npb25Ub2tlbkNoYW5uZWwoKSB7XG4gIGlmIChzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwpIHtcbiAgICBzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwuY2xvc2UoKTtcbiAgICBzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwgPSBudWxsO1xuICB9XG59XG4iXX0=
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS10b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL3N0b3JhZ2UtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixpQkFBaUIsRUFDakIsZ0JBQWdCLEdBRWpCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsSUFBSSx3QkFBMEMsQ0FBQztBQUUvQyxNQUFNLDJCQUEyQixHQUFHLDZCQUE2QixDQUFDO0FBRWxFLE1BQU0sdUJBQXVCLEdBQUcseUJBQXlCLENBQUM7QUFFMUQsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLEVBQUU7SUFDbEMsY0FBYyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUN6RSxDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsR0FBRyxDQUFDLFdBQXdCLEVBQVcsRUFBRSxDQUN2RCxXQUFXLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztBQWU1RCxNQUFNLFVBQVUsZUFBZTtJQUM3QixPQUFPLENBQ0wsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQzVELENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUI7SUFDL0IsWUFBWSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN0QyxZQUFZLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFM0MsY0FBYyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QyxjQUFjLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVE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QUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQyxDQUFDO0tBQ0o7SUFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQUVELFNBQVMsNkJBQTZCO0lBQ3BDLElBQUksd0JBQXdCLEVBQUU7UUFDNUIsT0FBTztLQUNSO0lBRUQsd0JBQXdCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBRTdFLHdCQUF3QixDQUFDLGdCQUFnQixDQUN2QyxTQUFTLEVBQ1QsQ0FBQyxFQUFFLElBQUksRUFBdUMsRUFBRSxFQUFFO1FBQ2hELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDM0Isd0JBQXdCLENBQUMsV0FBVyxDQUFDO2dCQUNuQyxJQUFJLEVBQUUsU0FBUztnQkFDZixLQUFLLEVBQUUsZ0JBQWdCLEVBQUU7YUFDRCxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDLENBQ0YsQ0FBQztJQUVGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztBQUNsRSxDQUFDO0FBRUQsU0FBUyw2QkFBNkI7SUFDcEMsSUFBSSxDQUFDLHdCQUF3QixFQUFFO1FBQzdCLE9BQU87S0FDUjtJQUVELHdCQUF3QixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pDLHdCQUF3QixHQUFHLElBQUksQ0FBQztJQUVoQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFLHNCQUFzQixDQUFDLENBQUM7QUFDckUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIElEX1RPS0VOX0tFWSxcbiAgUkVGUkVTSF9UT0tFTl9LRVksXG4gIFNUT1JBR0VfVFlQRV9LRVksXG4gIFN0b3JhZ2VUeXBlLFxufSBmcm9tICcuL3N0YXRlLnNlcnZpY2UnO1xuXG5sZXQgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsOiBCcm9hZGNhc3RDaGFubmVsO1xuXG5jb25zdCBTRVNTSU9OX1RPS0VOX1NIQVJFX0NIQU5ORUwgPSAnU0VTU0lPTl9UT0tFTl9TSEFSRV9DSEFOTkVMJztcblxuY29uc3QgU0VTU0lPTl9DTE9TRV9USU1FU1RBTVAgPSAnc2Vzc2lvbl9jbG9zZV90aW1lc3RhbXAnO1xuXG5jb25zdCByZWNvcmRTZXNzaW9uVGltZXN0YW1wID0gKCkgPT4ge1xuICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFNFU1NJT05fQ0xPU0VfVElNRVNUQU1QLCBEYXRlLm5vdygpLnRvU3RyaW5nKCkpO1xufTtcblxuY29uc3QgZ2V0U3RvcmFnZSA9IChzdG9yYWdlVHlwZTogU3RvcmFnZVR5cGUpOiBTdG9yYWdlID0+XG4gIHN0b3JhZ2VUeXBlID09PSAnc2Vzc2lvbicgPyBzZXNzaW9uU3RvcmFnZSA6IGxvY2FsU3RvcmFnZTtcblxudHlwZSBTZXNzaW9uVG9rZW5TaGFyZURhdGEgPVxuICB8IHtcbiAgICAgIHR5cGU6ICdwcm92aWRlJztcbiAgICAgIHRva2VuOiBTdG9yYWdlVG9rZW47XG4gICAgfVxuICB8IHsgdHlwZTogJ3JlcXVlc3QnIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZVRva2VuIHtcbiAgc3RvcmFnZVR5cGU6IFN0b3JhZ2VUeXBlO1xuICBpZFRva2VuOiBzdHJpbmc7XG4gIHJlZnJlc2hUb2tlbjogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFN0b3JhZ2VUeXBlKCkge1xuICByZXR1cm4gKFxuICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfVFlQRV9LRVkpID09PSAnc2Vzc2lvbicgPyAnc2Vzc2lvbicgOiAnbG9jYWwnXG4gICkgYXMgU3RvcmFnZVR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhblN0b3JhZ2VUb2tlbigpIHtcbiAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oSURfVE9LRU5fS0VZKTtcbiAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oUkVGUkVTSF9UT0tFTl9LRVkpO1xuXG4gIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oSURfVE9LRU5fS0VZKTtcbiAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShSRUZSRVNIX1RPS0VOX0tFWSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVN0b3JhZ2VUb2tlbih0b2tlbjogU3RvcmFnZVRva2VuKSB7XG4gIGNsZWFuU3RvcmFnZVRva2VuKCk7XG4gIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oU0VTU0lPTl9DTE9TRV9USU1FU1RBTVApO1xuXG4gIGNvbnN0IHN0b3JhZ2UgPSBnZXRTdG9yYWdlKHRva2VuLnN0b3JhZ2VUeXBlKTtcblxuICBzdG9yYWdlLnNldEl0ZW0oSURfVE9LRU5fS0VZLCB0b2tlbi5pZFRva2VuKTtcbiAgc3RvcmFnZS5zZXRJdGVtKFJFRlJFU0hfVE9LRU5fS0VZLCB0b2tlbi5yZWZyZXNoVG9rZW4pO1xuICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX1RZUEVfS0VZLCB0b2tlbi5zdG9yYWdlVHlwZSk7XG5cbiAgaWYgKHRva2VuLnN0b3JhZ2VUeXBlID09PSAnc2Vzc2lvbicpIHtcbiAgICBzZXR1cFNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbCgpO1xuICB9IGVsc2Uge1xuICAgIGNsb3NlU2Vzc2lvblRva2VuU2hhcmVDaGFubmVsKCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRTdG9yYWdlVG9rZW4oKTogUGFydGlhbDxTdG9yYWdlVG9rZW4+IHtcbiAgY29uc3Qgc3RvcmFnZVR5cGUgPSByZWFkU3RvcmFnZVR5cGUoKTtcblxuICBpZiAoc3RvcmFnZVR5cGUgPT09ICdzZXNzaW9uJykge1xuICAgIGNvbnN0IHNlc3Npb25UaW1lc3RhbXAgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFNFU1NJT05fQ0xPU0VfVElNRVNUQU1QKTtcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKFNFU1NJT05fQ0xPU0VfVElNRVNUQU1QKTtcblxuICAgIGlmIChcbiAgICAgIHNlc3Npb25UaW1lc3RhbXAgJiZcbiAgICAgIERhdGUubm93KCkgLSBwYXJzZUludChzZXNzaW9uVGltZXN0YW1wKSA+IDEwICogMTAwMFxuICAgICkge1xuICAgICAgLy8g5rWP6KeI5Zmo5oGi5aSN5qCH562+5pe25riF6ZmkIHNlc3Npb24gdG9rZW5cbiAgICAgIGNsZWFuU3RvcmFnZVRva2VuKCk7XG4gICAgICBjb25zb2xlLndhcm4oJ3Nlc3Npb24gdGltZW91dCcpO1xuICAgIH1cblxuICAgIHNldHVwU2Vzc2lvblRva2VuU2hhcmVDaGFubmVsKCk7XG4gIH1cblxuICBjb25zdCBzdG9yYWdlID0gZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzdG9yYWdlVHlwZSxcbiAgICBpZFRva2VuOiBzdG9yYWdlLmdldEl0ZW0oSURfVE9LRU5fS0VZKSxcbiAgICByZWZyZXNoVG9rZW46IHN0b3JhZ2UuZ2V0SXRlbShSRUZSRVNIX1RPS0VOX0tFWSksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3luY1JlYWRTdG9yYWdlVG9rZW4oKTogUHJvbWlzZTxQYXJ0aWFsPFN0b3JhZ2VUb2tlbj4+IHtcbiAgY29uc3Qgc3RvcmFnZVRva2VuID0gcmVhZFN0b3JhZ2VUb2tlbigpO1xuXG4gIGlmIChzdG9yYWdlVG9rZW4uc3RvcmFnZVR5cGUgPT09ICdzZXNzaW9uJyAmJiAhc3RvcmFnZVRva2VuLmlkVG9rZW4pIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBjb25zdCB0aW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc29sZS53YXJuKCdyZXF1ZXN0IHNlc3Npb24gdG9rZW4gdGltZW91dCcpO1xuXG4gICAgICAgIHNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbC5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgICdtZXNzYWdlJyxcbiAgICAgICAgICByZWNlaXZlU2Vzc2lvblRva2VuLFxuICAgICAgICApO1xuICAgICAgICByZXNvbHZlKHt9KTtcbiAgICAgIH0sIDUwKTtcblxuICAgICAgZnVuY3Rpb24gcmVjZWl2ZVNlc3Npb25Ub2tlbih7XG4gICAgICAgIGRhdGEsXG4gICAgICB9OiBNZXNzYWdlRXZlbnQ8U2Vzc2lvblRva2VuU2hhcmVEYXRhPikge1xuICAgICAgICBpZiAoZGF0YS50eXBlID09PSAncHJvdmlkZScpIHtcbiAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgICBzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgICdtZXNzYWdlJyxcbiAgICAgICAgICAgIHJlY2VpdmVTZXNzaW9uVG9rZW4sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHdyaXRlU3RvcmFnZVRva2VuKGRhdGEudG9rZW4pO1xuICAgICAgICAgIHJlc29sdmUoZGF0YS50b2tlbik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCByZWNlaXZlU2Vzc2lvblRva2VuKTtcblxuICAgICAgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsLnBvc3RNZXNzYWdlKHsgdHlwZTogJ3JlcXVlc3QnIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShzdG9yYWdlVG9rZW4pO1xufVxuXG5mdW5jdGlvbiBzZXR1cFNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbCgpIHtcbiAgaWYgKHNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbCA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKFNFU1NJT05fVE9LRU5fU0hBUkVfQ0hBTk5FTCk7XG5cbiAgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgJ21lc3NhZ2UnLFxuICAgICh7IGRhdGEgfTogTWVzc2FnZUV2ZW50PFNlc3Npb25Ub2tlblNoYXJlRGF0YT4pID0+IHtcbiAgICAgIGlmIChkYXRhLnR5cGUgPT09ICdyZXF1ZXN0Jykge1xuICAgICAgICBzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgIHR5cGU6ICdwcm92aWRlJyxcbiAgICAgICAgICB0b2tlbjogcmVhZFN0b3JhZ2VUb2tlbigpLFxuICAgICAgICB9IGFzIFNlc3Npb25Ub2tlblNoYXJlRGF0YSk7XG4gICAgICB9XG4gICAgfSxcbiAgKTtcblxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgcmVjb3JkU2Vzc2lvblRpbWVzdGFtcCk7XG59XG5cbmZ1bmN0aW9uIGNsb3NlU2Vzc2lvblRva2VuU2hhcmVDaGFubmVsKCkge1xuICBpZiAoIXNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbC5jbG9zZSgpO1xuICBzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwgPSBudWxsO1xuXG4gIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCByZWNvcmRTZXNzaW9uVGltZXN0YW1wKTtcbn1cbiJdfQ==
@@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
2
2
  import { Router } from '@angular/router';
3
3
  import { get } from 'lodash-es';
4
4
  import { combineLatest, map, switchMap } from 'rxjs';
5
- import { readStorageToken } from '../../../../authorization/public-api';
5
+ import { AuthorizationStateService } from '../../../../authorization/public-api';
6
6
  import { publishRef, } from '../../../../core/public-api';
7
7
  import { K8sPermissionService } from '../../../../permission/k8s-permission.service';
8
8
  import { ProductEntryName } from '../context.service';
@@ -13,6 +13,7 @@ import * as i1 from "../store.service";
13
13
  import * as i2 from "@angular/router";
14
14
  import * as i3 from "../../../../permission/k8s-permission.service";
15
15
  import * as i4 from "./service";
16
+ import * as i5 from "../../../../authorization/public-api";
16
17
  function ProductSelectComponent_span_7_Template(rf, ctx) { if (rf & 1) {
17
18
  i0.ɵɵelementStart(0, "span", 5);
18
19
  i0.ɵɵtext(1);
@@ -155,11 +156,12 @@ export const PRODUCT_ICON_MAP = {
155
156
  'console-cec': 'cloud_edge_collaboration',
156
157
  };
157
158
  export class ProductSelectComponent {
158
- constructor(store, router, k8sPermission, productSelectService) {
159
+ constructor(store, router, k8sPermission, productSelectService, authState) {
159
160
  this.store = store;
160
161
  this.router = router;
161
162
  this.k8sPermission = k8sPermission;
162
163
  this.productSelectService = productSelectService;
164
+ this.authState = authState;
163
165
  this.platformPath = '/console-platform';
164
166
  this.PRODUCT_ICON_MAP = PRODUCT_ICON_MAP;
165
167
  this.allProducts$ = combineLatest([
@@ -188,7 +190,7 @@ export class ProductSelectComponent {
188
190
  }
189
191
  jump(entrypoint, ssoEnabled, target = '_self') {
190
192
  window.open(ssoEnabled
191
- ? `${entrypoint}?id_token=${window.localStorage.getItem(readStorageToken()?.idToken)}`
193
+ ? `${entrypoint}?id_token=${this.authState.stateSnapshot.idToken}`
192
194
  : entrypoint, target);
193
195
  }
194
196
  navigateToPortal(event) {
@@ -230,7 +232,7 @@ export class ProductSelectComponent {
230
232
  isPortalProduct(item) {
231
233
  return item.metadata.name === 'console-portal';
232
234
  }
233
- static { this.ɵfac = function ProductSelectComponent_Factory(t) { return new (t || ProductSelectComponent)(i0.ɵɵdirectiveInject(i1.CommonLayoutStoreService), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i3.K8sPermissionService), i0.ɵɵdirectiveInject(i4.ProductSelectService)); }; }
235
+ static { this.ɵfac = function ProductSelectComponent_Factory(t) { return new (t || ProductSelectComponent)(i0.ɵɵdirectiveInject(i1.CommonLayoutStoreService), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i3.K8sPermissionService), i0.ɵɵdirectiveInject(i4.ProductSelectService), i0.ɵɵdirectiveInject(i5.AuthorizationStateService)); }; }
234
236
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ProductSelectComponent, selectors: [["acl-product-select"]], inputs: { platformPath: "platformPath", current: "current", title: "title" }, decls: 17, vars: 36, consts: [["auiTooltipType", "plain", "auiTooltipTrigger", "click", "auiTooltipPosition", "bottom start", "auiTooltipClass", "aui-product-select-tooltip", 1, "acl-product-select", 3, "auiTooltip", "auiTooltipHideOnClick", "disabled", "title", "ngClass"], ["class", "acl-product-select__title", 4, "ngIf"], ["icon", "menu_dot_s", "size", "16px", "auiTooltipPosition", "bottom start", 3, "auiTooltip", "auiTooltipDisabled"], ["menu", ""], ["loading", ""], [1, "acl-product-select__title"], [1, "menu"], [4, "ngIf", "ngIfElse"], ["class", "portal", 3, "ngClass", 4, "ngIf"], ["class", "menu__item", 3, "ngClass", "click", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "menu__item", 3, "ngClass", "click"], [1, "menu__item-icon"], ["logo", ""], [1, "menu__item-info", "tw-line-clamp-2"], ["class", "check-triangle-badge", "icon", "check", 4, "ngIf"], ["size", "50", 1, "acl-colorful-icon", 3, "ngClass", "icon"], [1, "default", 3, "src"], ["icon", "check", 1, "check-triangle-badge"], [1, "portal", 3, "ngClass"], [1, "portal__item", 3, "click"], ["icon", "home_s"], [2, "height", "148px", 3, "loading"]], template: function ProductSelectComponent_Template(rf, ctx) { if (rf & 1) {
235
237
  i0.ɵɵelementStart(0, "button", 0);
236
238
  i0.ɵɵpipe(1, "async");
@@ -260,11 +262,11 @@ export class ProductSelectComponent {
260
262
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProductSelectComponent, [{
261
263
  type: Component,
262
264
  args: [{ selector: 'acl-product-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"acl-product-select\"\n [auiTooltip]=\"menu\"\n auiTooltipType=\"plain\"\n auiTooltipTrigger=\"click\"\n auiTooltipPosition=\"bottom start\"\n auiTooltipClass=\"aui-product-select-tooltip\"\n [auiTooltipHideOnClick]=\"true\"\n [disabled]=\"disabled$ | async\"\n [title]=\"\n (disabled$ | async)\n ? ''\n : (allProducts$ | async | pure: getProductTitle:title:current | translate)\n \"\n [ngClass]=\"{ 'acl-product-select--disabled': disabled$ | async }\"\n>\n <span\n *ngIf=\"\n allProducts$ | async | pure: getProductTitle:title:current as productTitle\n \"\n class=\"acl-product-select__title\"\n >\n {{ productTitle | translate }}\n </span>\n <aui-icon\n icon=\"menu_dot_s\"\n size=\"16px\"\n [auiTooltip]=\"'no_product_and_contact_admin' | translate\"\n [auiTooltipDisabled]=\"!(disabled$ | async)\"\n auiTooltipPosition=\"bottom start\"\n ></aui-icon>\n</button>\n<ng-template #menu>\n <div class=\"menu\">\n <ng-container *ngIf=\"selectableProducts$ | async as products; else loading\">\n <div\n class=\"menu__item\"\n [ngClass]=\"{\n 'menu__item--active': item | pure: isProductActive:current\n }\"\n *ngFor=\"let item of products; trackBy: trackFn\"\n (click)=\"navigateToProduct(item, $event)\"\n >\n <div class=\"menu__item-icon\">\n <ng-container\n *ngIf=\"\n item.spec.packType !== 'Integrated' && !item.spec.logo;\n else logo\n \"\n >\n <aui-icon\n class=\"acl-colorful-icon\"\n [ngClass]=\"{\n highlight: item | pure: isProductActive:current\n }\"\n size=\"50\"\n [icon]=\"'bicolor:' + PRODUCT_ICON_MAP[item.metadata.name]\"\n ></aui-icon>\n </ng-container>\n <ng-template #logo>\n <img\n [src]=\"\n (item.spec.logo | aclImageHeader) ||\n 'images/product-default-logo.png' | aclSafe: 'url'\n \"\n class=\"default\"\n />\n </ng-template>\n </div>\n <div class=\"menu__item-info tw-line-clamp-2\">\n {{ item.spec.displayName | translate: {}:true }}\n </div>\n <aui-icon\n *ngIf=\"item | pure: isProductActive:current\"\n class=\"check-triangle-badge\"\n icon=\"check\"\n ></aui-icon>\n </div>\n </ng-container>\n </div>\n <div\n *ngIf=\"portalProduct$ | async as portalMenu\"\n class=\"portal\"\n [ngClass]=\"{ 'portal--active': isPortal }\"\n >\n <div\n class=\"portal__item\"\n (click)=\"navigateToPortal($event)\"\n >\n <aui-icon icon=\"home_s\"></aui-icon>\n {{ portalMenu.spec.displayName | translate: {}:true }}\n </div>\n </div>\n</ng-template>\n\n<ng-template #loading>\n <acl-loading-mask\n style=\"height: 148px\"\n [loading]=\"true\"\n ></acl-loading-mask>\n</ng-template>\n", styles: ["::ng-deep .aui-product-select-tooltip.aui-tooltip{margin-top:calc((var(--acl-page-header-height) - 32px) / 2 + 4px);background-color:rgb(var(--aui-color-n-10));padding:20px 20px 12px;border-radius:var(--aui-border-radius-l);max-width:840px}.portal{display:flex;justify-content:flex-end}.portal__item{display:flex;align-items:center;height:26px;padding:0 8px;font-size:var(--aui-font-size-l);font-weight:var(--aui-font-weight-bolder);color:rgb(var(--aui-color-primary));border-radius:var(--aui-border-radius-m);cursor:pointer}.portal__item:hover{color:rgb(var(--aui-color-p-1))}.portal aui-icon{font-size:var(--aui-icon-size-l);margin-right:8px}.acl-product-select{width:100%;min-height:32px;border-radius:2px;border:none;background:none;padding:4px 8px;cursor:pointer;outline:none;display:flex;align-items:center}.acl-product-select__title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.acl-product-select--disabled{opacity:.3;cursor:default}.acl-product-select span{margin-right:8px;height:24px;line-height:24px;font-size:18px;font-weight:var(--aui-font-weight-bolder);color:var(--acl-page-header-title-color);white-space:nowrap;word-break:keep-all}.acl-product-select aui-icon{height:16px;color:rgb(var(--aui-color-n-4))}.acl-product-select.isActive,.acl-product-select:not(.acl-product-select--disabled):hover{background-color:rgb(var(--aui-color-primary))}.acl-product-select.isActive aui-icon,.acl-product-select.isActive span,.acl-product-select:not(.acl-product-select--disabled):hover aui-icon,.acl-product-select:not(.acl-product-select--disabled):hover span{color:#fff}::ng-deep .acl-product-select__menu .aui-menu{padding:0;max-width:unset}.menu{display:flex;flex-wrap:wrap;width:calc(100% + 16px)}.menu__item{width:120px;height:148px;display:flex;position:relative;flex-direction:column;border-radius:4px;padding:20px 8px 12px;margin-right:16px;margin-bottom:12px;align-items:center;cursor:pointer;background-color:rgb(var(--aui-color-n-9))}.menu__item:hover{border-color:rgb(var(--aui-color-primary));box-shadow:0 0 8px rgba(var(--aui-color-primary),.5)}.menu__item:not(.menu__item--active){position:relative}.menu__item:not(.menu__item--active):after{position:absolute;content:\"\";top:0;right:0;bottom:0;left:0;border:1px solid rgb(var(--aui-color-n-7));border-radius:4px;pointer-events:none;transition:all .2s ease-in-out}.menu__item:not(.menu__item--active).disabled{background-color:rgb(var(--aui-color-n-8));color:rgb(var(--aui-color-n-6));cursor:not-allowed}.menu__item:not(.menu__item--active):not(.disabled):hover:after{top:-4px;right:-4px;bottom:-4px;left:-4px;border-color:rgb(var(--aui-color-primary));box-shadow:inset 0 0 0 4px rgb(var(--aui-color-n-10)),0 0 8px rgba(var(--aui-color-primary),.5)}.menu__item:not(.menu__item--active):not(.disabled):active:after{top:0;right:0;bottom:0;left:0;box-shadow:0 0 4px rgba(var(--aui-color-primary),.5)}.menu__item:not(.menu__item--active):hover:after{box-shadow:inset 0 0 0 4px rgb(var(--aui-color-n-9)),0 0 8px rgba(var(--aui-color-primary),.5)!important}.menu__item-icon{height:60px;width:60px;display:flex;justify-content:center;align-items:center;color:rgb(var(--aui-color-primary));margin-bottom:12px}.menu__item-icon img{display:block;width:50px}.menu__item-icon img.activated{display:none}.menu__item-info{min-width:0;height:44px;line-height:22px;font-size:16px;font-weight:var(--aui-font-weight-bolder);color:rgb(var(--aui-color-n-1));text-align:center;overflow:hidden;overflow-wrap:anywhere}.menu__item--active{border:1px solid rgb(var(--aui-color-n-7));border-radius:var(--aui-border-radius-l);background-color:rgb(var(--aui-color-primary));border-color:rgb(var(--aui-color-primary));color:#fff;cursor:default;position:relative}.menu__item--active:hover{box-shadow:none}.menu__item--active .menu__item-info{color:#fff;width:90px;height:40px}acl-loading-mask{height:148px;width:800px;display:flex;align-items:center;justify-content:center}\n"] }]
263
- }], function () { return [{ type: i1.CommonLayoutStoreService }, { type: i2.Router }, { type: i3.K8sPermissionService }, { type: i4.ProductSelectService }]; }, { platformPath: [{
265
+ }], function () { return [{ type: i1.CommonLayoutStoreService }, { type: i2.Router }, { type: i3.K8sPermissionService }, { type: i4.ProductSelectService }, { type: i5.AuthorizationStateService }]; }, { platformPath: [{
264
266
  type: Input
265
267
  }], current: [{
266
268
  type: Input
267
269
  }], title: [{
268
270
  type: Input
269
271
  }] }); })();
270
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3BhZ2Utc2NhZmZvbGQvcGFnZS1oZWFkZXIvY29tbW9uLWxheW91dC9wcm9kdWN0LXNlbGVjdC9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvcGFnZS1zY2FmZm9sZC9wYWdlLWhlYWRlci9jb21tb24tbGF5b3V0L3Byb2R1Y3Qtc2VsZWN0L2NvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUdMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7OztJQ0ovQywrQkFLQztJQUNDLFlBQ0Y7O0lBQUEsaUJBQU87OztJQURMLGVBQ0Y7SUFERSxzRUFDRjs7OztJQXFCUSw2QkFLQztJQUNDLCtCQU9ZOztJQUNkLDBCQUFlOzs7O0lBTlgsZUFFRTtJQUZG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QUUsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNyRDthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFrQixFQUFFLE9BQXlCO1FBQzNELE9BQU8sQ0FDTCxPQUFPO1lBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJO2dCQUNoQixDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUM1RCxDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFrQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLGdCQUFnQixDQUFDO0lBQ2pELENBQUM7dUZBNUhVLHNCQUFzQjtvRUFBdEIsc0JBQXNCO1lDcEVuQyxpQ0FlQzs7Ozs7OztZQUNDLHlFQU9POzs7WUFDUCwrQkFNWTs7O1lBQ2QsaUJBQVM7WUFDVCwwSEE2RGM7WUFFZCwwSEFLYzs7O1lBbEdaLGdDQUFtQiwrQkFBQSxpREFBQSx5TEFBQSw4RUFBQTtZQWVoQixlQUNtRTtZQURuRSxrSUFDbUU7WUFTcEUsZUFBeUQ7WUFBekQsbUZBQXlELDhEQUFBOzs7dUZEeUNoRCxzQkFBc0I7Y0FObEMsU0FBUzsyQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTTtzS0FJL0MsWUFBWTtrQkFEWCxLQUFLO1lBSU4sT0FBTztrQkFETixLQUFLO1lBSU4sS0FBSztrQkFESixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IHJlYWRTdG9yYWdlVG9rZW4gfSBmcm9tICcuLi8uLi8uLi8uLi9hdXRob3JpemF0aW9uL3B1YmxpYy1hcGknO1xuaW1wb3J0IHtcbiAgU3RyaW5nTWFwLFxuICBQcm9kdWN0RW50cnksXG4gIHB1Ymxpc2hSZWYsXG59IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBLOHNQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3Blcm1pc3Npb24vazhzLXBlcm1pc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBQcm9kdWN0RW50cnlOYW1lIH0gZnJvbSAnLi4vY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vbkxheW91dFN0b3JlU2VydmljZSB9IGZyb20gJy4uL3N0b3JlLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBQcm9kdWN0U2VsZWN0U2VydmljZSB9IGZyb20gJy4vc2VydmljZSc7XG5cbmNvbnN0IEFETUlOX1ZJRVdfTUFQOiB7XG4gIFtrZXk6IHN0cmluZ106IHtcbiAgICB2aWV3OiBzdHJpbmc7XG4gICAgaHJlZjogc3RyaW5nO1xuICB9O1xufSA9IHtcbiAgJ2NvbnNvbGUtcGxhdGZvcm0nOiB7XG4gICAgaHJlZjogJy9tYW5hZ2UtcGxhdGZvcm0nLFxuICAgIHZpZXc6ICdwbGF0Zm9ybXZpZXcnLFxuICB9LFxuICAnY29uc29sZS1wcm9qZWN0Jzoge1xuICAgIGhyZWY6ICcvaG9tZS9wcm9qZWN0JyxcbiAgICB2aWV3OiAncHJvamVjdHZpZXcnLFxuICB9LFxuICAnY29uc29sZS1zZWN1cml0eSc6IHtcbiAgICBocmVmOiAnL2NvbnRhaW5lci1zZWN1cml0eS9ob21lJyxcbiAgICB2aWV3OiAnY29udGFpbmVyc2VjdXJpdHl2aWV3JyxcbiAgfSxcbn07XG5cbmNvbnN0IFZJRVcgPSB7XG4gIHR5cGU6ICd2aWV3cycsXG4gIGFwaUdyb3VwOiAnYXV0aC5hbGF1ZGEuaW8nLFxufTtcblxuY29uc3QgUFJFRklYID0gJ2NvbnNvbGUtJztcblxuZXhwb3J0IGNvbnN0IFBST0RVQ1RfSUNPTl9NQVA6IFN0cmluZ01hcCA9IHtcbiAgJ2NvbnNvbGUtYWNwJzogJ2FjcCcsXG4gICdjb25zb2xlLWFzbSc6ICdhc20nLFxuICAnY29uc29sZS1kZXZvcHMnOiAnZGV2b3BzJyxcbiAgLy8gY29uc29sZS1lLWFhbSBwcmVmaXgg5Li65LqG5YW85a656buY6K6k5o6S5bqP77yM562J5ZCO57ut5o6S5bqP5pa55qGI5Ye65p2l5Y+v5Lul5pS55oiQY29uc29sZS1hYW1cbiAgJ2NvbnNvbGUtZS1hYW0nOiAnYXBwX3N0b3JlJyxcbiAgJ2NvbnNvbGUtc2VjdXJpdHknOiAnYnVnX3NlYXJjaCcsXG4gICdjb25zb2xlLXBsYXRmb3JtJzogJ3BsYXRmb3JtX21hbmFnZW1lbnQnLFxuICAnY29uc29sZS1wcm9qZWN0JzogJ3Byb2plY3RfbWFuYWdlbWVudCcsXG4gICdjb25zb2xlLWRhdGFzZXJ2aWNlcyc6ICdkYXRhX3NlcnZpY2VzJyxcbiAgJ2NvbnNvbGUtY2VjJzogJ2Nsb3VkX2VkZ2VfY29sbGFib3JhdGlvbicsXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtcHJvZHVjdC1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdFNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHBsYXRmb3JtUGF0aCA9ICcvY29uc29sZS1wbGF0Zm9ybSc7XG5cbiAgQElucHV0KClcbiAgY3VycmVudD86IFByb2R1Y3RFbnRyeU5hbWU7XG5cbiAgQElucHV0KClcbiAgdGl0bGU/OiBzdHJpbmc7XG5cbiAgUFJPRFVDVF9JQ09OX01BUCA9IFBST0RVQ1RfSUNPTl9NQVA7XG5cbiAgYWxsUHJvZHVjdHMkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5wcm9kdWN0U2VsZWN0U2VydmljZS5yZWxvYWQkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5zdG9yZS5zZWxlY3RBbGxQcm9kdWN0cygpKSxcbiAgICApLFxuICAgIHRoaXMuazhzUGVybWlzc2lvbi5pc0FsbG93ZWQoe1xuICAgICAgdHlwZTogVklFVyxcbiAgICAgIG5hbWU6IE9iamVjdC52YWx1ZXMoQURNSU5fVklFV19NQVApLm1hcChpdGVtID0+IGl0ZW0udmlldyksXG4gICAgfSksXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbcHJvZHVjdHMsIHZpZXdzXSkgPT4ge1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKEFETUlOX1ZJRVdfTUFQKTtcbiAgICAgIGNvbnN0IHBlcm1pc3Npb25NYXA6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcbiAgICAgIH0gPSB7fTtcbiAgICAgIGtleXMuZm9yRWFjaCgoa2V5LCBpbmRleCkgPT4gKHBlcm1pc3Npb25NYXBba2V5XSA9IHZpZXdzW2luZGV4XSkpO1xuICAgICAgcmV0dXJuIHByb2R1Y3RzLmZpbHRlcihwID0+XG4gICAgICAgIGtleXMuaW5jbHVkZXMocC5tZXRhZGF0YS5uYW1lKSA/IHBlcm1pc3Npb25NYXBbcC5tZXRhZGF0YS5uYW1lXSA6IHRydWUsXG4gICAgICApO1xuICAgIH0pLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICBzZWxlY3RhYmxlUHJvZHVjdHMkID0gdGhpcy5hbGxQcm9kdWN0cyQucGlwZShcbiAgICBtYXAocHJvZHVjdHMgPT5cbiAgICAgIChwcm9kdWN0cyB8fCBbXSkuZmlsdGVyKFxuICAgICAgICBwcm9kdWN0ID0+XG4gICAgICAgICAgIXRoaXMuaXNQb3J0YWxQcm9kdWN0KHByb2R1Y3QpICYmXG4gICAgICAgICAgKCFwcm9kdWN0LnN0YXR1cyB8fCBwcm9kdWN0LnN0YXR1cy5oaWRkZW5PblBvcnRhbCAhPT0gdHJ1ZSksXG4gICAgICApLFxuICAgICksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIHBvcnRhbFByb2R1Y3QkID0gdGhpcy5hbGxQcm9kdWN0cyQucGlwZShcbiAgICBtYXAocmVzID0+IHJlcy5maW5kKHAgPT4gdGhpcy5pc1BvcnRhbFByb2R1Y3QocCkpKSxcbiAgICBwdWJsaXNoUmVmKCksXG4gICk7XG5cbiAgZGlzYWJsZWQkID0gdGhpcy5zZWxlY3RhYmxlUHJvZHVjdHMkLnBpcGUoXG4gICAgbWFwKHByb2R1Y3RzID0+ICFwcm9kdWN0cy5sZW5ndGgpLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICBpc1BvcnRhbCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmU6IENvbW1vbkxheW91dFN0b3JlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgazhzUGVybWlzc2lvbjogSzhzUGVybWlzc2lvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0U2VsZWN0U2VydmljZTogUHJvZHVjdFNlbGVjdFNlcnZpY2UsXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzUG9ydGFsID0gdGhpcy5yb3V0ZXIudXJsLnN0YXJ0c1dpdGgoJy9wb3J0YWwnKTtcbiAgfVxuXG4gIGp1bXAoZW50cnlwb2ludDogc3RyaW5nLCBzc29FbmFibGVkOiBib29sZWFuLCB0YXJnZXQgPSAnX3NlbGYnKSB7XG4gICAgd2luZG93Lm9wZW4oXG4gICAgICBzc29FbmFibGVkXG4gICAgICAgID8gYCR7ZW50cnlwb2ludH0/aWRfdG9rZW49JHt3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oXG4gICAgICAgICAgICByZWFkU3RvcmFnZVRva2VuKCk/LmlkVG9rZW4sXG4gICAgICAgICAgKX1gXG4gICAgICAgIDogZW50cnlwb2ludCxcbiAgICAgIHRhcmdldCxcbiAgICApO1xuICB9XG5cbiAgbmF2aWdhdGVUb1BvcnRhbChldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgd2luZG93Lm9wZW4oJy9jb25zb2xlLXBvcnRhbCcsICdfc2VsZicpO1xuICB9XG5cbiAgbmF2aWdhdGVUb1Byb2R1Y3QoaXRlbTogUHJvZHVjdEVudHJ5LCBldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICh0aGlzLmlzUHJvZHVjdEFjdGl2ZShpdGVtLCB0aGlzLmN1cnJlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpdGVtLnNwZWMucGFja1R5cGUgPT09ICdBZG1pblBhZ2UnKSB7XG4gICAgICB0aGlzLm5hdmlnYXRlVG9QbGF0Zm9ybShpdGVtKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGl0ZW0uc3BlYy5wYWNrVHlwZSA9PT0gJ0J1aWxkSW4nKSB7XG4gICAgICB0aGlzLmp1bXAoaXRlbS5zcGVjLmVudHJ5cG9pbnQsIGZhbHNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGl0ZW0uc3BlYy5wYWNrVHlwZSA9PT0gJ0ludGVncmF0ZWQnKSB7XG4gICAgICB0aGlzLmp1bXAoaXRlbS5zcGVjLmVudHJ5cG9pbnQsIGl0ZW0uc3BlYy5zc29FbmFibGVkLCAnX2JsYW5rJyk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tGbiA9IChfOiBudW1iZXIsIGl0ZW06IFByb2R1Y3RFbnRyeSkgPT4gaXRlbS5tZXRhZGF0YS5uYW1lO1xuXG4gIG5hdmlnYXRlVG9QbGF0Zm9ybShpdGVtOiBQcm9kdWN0RW50cnkpIHtcbiAgICBjb25zdCBocmVmID0gQURNSU5fVklFV19NQVBbaXRlbS5tZXRhZGF0YS5uYW1lXS5ocmVmO1xuICAgIGlmICh0aGlzLnBsYXRmb3JtUGF0aCkge1xuICAgICAgd2luZG93Lm9wZW4oYCR7dGhpcy5wbGF0Zm9ybVBhdGh9JHtocmVmfWAsICdfc2VsZicpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbaHJlZl0pO1xuICAgIH1cbiAgfVxuXG4gIGlzUHJvZHVjdEFjdGl2ZShpdGVtOiBQcm9kdWN0RW50cnksIGN1cnJlbnQ6IFByb2R1Y3RFbnRyeU5hbWUpIHtcbiAgICByZXR1cm4gKFxuICAgICAgY3VycmVudCAmJlxuICAgICAgaXRlbS5tZXRhZGF0YS5uYW1lID09PVxuICAgICAgICAoY3VycmVudC5zdGFydHNXaXRoKFBSRUZJWCkgPyBjdXJyZW50IDogUFJFRklYICsgY3VycmVudClcbiAgICApO1xuICB9XG5cbiAgaXNQb3J0YWxQcm9kdWN0KGl0ZW06IFByb2R1Y3RFbnRyeSkge1xuICAgIHJldHVybiBpdGVtLm1ldGFkYXRhLm5hbWUgPT09ICdjb25zb2xlLXBvcnRhbCc7XG4gIH1cblxuICBnZXRQcm9kdWN0VGl0bGUgPSAoXG4gICAgcHJvZHVjdHM6IFByb2R1Y3RFbnRyeVtdLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgY3VycmVudDogUHJvZHVjdEVudHJ5TmFtZSxcbiAgKSA9PlxuICAgIHRpdGxlIHx8XG4gICAgZ2V0KFxuICAgICAgKHByb2R1Y3RzIHx8IFtdKS5maW5kKHAgPT4gdGhpcy5pc1Byb2R1Y3RBY3RpdmUocCwgY3VycmVudCkpLFxuICAgICAgWydzcGVjJywgJ2Rpc3BsYXlOYW1lJ10sXG4gICAgKTtcbn1cbiIsIjxidXR0b25cbiAgY2xhc3M9XCJhY2wtcHJvZHVjdC1zZWxlY3RcIlxuICBbYXVpVG9vbHRpcF09XCJtZW51XCJcbiAgYXVpVG9vbHRpcFR5cGU9XCJwbGFpblwiXG4gIGF1aVRvb2x0aXBUcmlnZ2VyPVwiY2xpY2tcIlxuICBhdWlUb29sdGlwUG9zaXRpb249XCJib3R0b20gc3RhcnRcIlxuICBhdWlUb29sdGlwQ2xhc3M9XCJhdWktcHJvZHVjdC1zZWxlY3QtdG9vbHRpcFwiXG4gIFthdWlUb29sdGlwSGlkZU9uQ2xpY2tdPVwidHJ1ZVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZCQgfCBhc3luY1wiXG4gIFt0aXRsZV09XCJcbiAgICAoZGlzYWJsZWQkIHwgYXN5bmMpXG4gICAgICA/ICcnXG4gICAgICA6IChhbGxQcm9kdWN0cyQgfCBhc3luYyB8IHB1cmU6IGdldFByb2R1Y3RUaXRsZTp0aXRsZTpjdXJyZW50IHwgdHJhbnNsYXRlKVxuICBcIlxuICBbbmdDbGFzc109XCJ7ICdhY2wtcHJvZHVjdC1zZWxlY3QtLWRpc2FibGVkJzogZGlzYWJsZWQkIHwgYXN5bmMgfVwiXG4+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCJcbiAgICAgIGFsbFByb2R1Y3RzJCB8IGFzeW5jIHwgcHVyZTogZ2V0UHJvZHVjdFRpdGxlOnRpdGxlOmN1cnJlbnQgYXMgcHJvZHVjdFRpdGxlXG4gICAgXCJcbiAgICBjbGFzcz1cImFjbC1wcm9kdWN0LXNlbGVjdF9fdGl0bGVcIlxuICA+XG4gICAge3sgcHJvZHVjdFRpdGxlIHwgdHJhbnNsYXRlIH19XG4gIDwvc3Bhbj5cbiAgPGF1aS1pY29uXG4gICAgaWNvbj1cIm1lbnVfZG90X3NcIlxuICAgIHNpemU9XCIxNnB4XCJcbiAgICBbYXVpVG9vbHRpcF09XCInbm9fcHJvZHVjdF9hbmRfY29udGFjdF9hZG1pbicgfCB0cmFuc2xhdGVcIlxuICAgIFthdWlUb29sdGlwRGlzYWJsZWRdPVwiIShkaXNhYmxlZCQgfCBhc3luYylcIlxuICAgIGF1aVRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbSBzdGFydFwiXG4gID48L2F1aS1pY29uPlxuPC9idXR0b24+XG48bmctdGVtcGxhdGUgI21lbnU+XG4gIDxkaXYgY2xhc3M9XCJtZW51XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGFibGVQcm9kdWN0cyQgfCBhc3luYyBhcyBwcm9kdWN0czsgZWxzZSBsb2FkaW5nXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibWVudV9faXRlbVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnbWVudV9faXRlbS0tYWN0aXZlJzogaXRlbSB8IHB1cmU6IGlzUHJvZHVjdEFjdGl2ZTpjdXJyZW50XG4gICAgICAgIH1cIlxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwcm9kdWN0czsgdHJhY2tCeTogdHJhY2tGblwiXG4gICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvUHJvZHVjdChpdGVtLCAkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnVfX2l0ZW0taWNvblwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIGl0ZW0uc3BlYy5wYWNrVHlwZSAhPT0gJ0ludGVncmF0ZWQnICYmICFpdGVtLnNwZWMubG9nbztcbiAgICAgICAgICAgICAgZWxzZSBsb2dvXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhdWktaWNvblxuICAgICAgICAgICAgICBjbGFzcz1cImFjbC1jb2xvcmZ1bC1pY29uXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgIGhpZ2hsaWdodDogaXRlbSB8IHB1cmU6IGlzUHJvZHVjdEFjdGl2ZTpjdXJyZW50XG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBzaXplPVwiNTBcIlxuICAgICAgICAgICAgICBbaWNvbl09XCInYmljb2xvcjonICsgUFJPRFVDVF9JQ09OX01BUFtpdGVtLm1ldGFkYXRhLm5hbWVdXCJcbiAgICAgICAgICAgID48L2F1aS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbG9nbz5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAoaXRlbS5zcGVjLmxvZ28gfCBhY2xJbWFnZUhlYWRlcikgfHxcbiAgICAgICAgICAgICAgICAgICdpbWFnZXMvcHJvZHVjdC1kZWZhdWx0LWxvZ28ucG5nJyB8IGFjbFNhZmU6ICd1cmwnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGVmYXVsdFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVudV9faXRlbS1pbmZvIHR3LWxpbmUtY2xhbXAtMlwiPlxuICAgICAgICAgIHt7IGl0ZW0uc3BlYy5kaXNwbGF5TmFtZSB8IHRyYW5zbGF0ZToge306dHJ1ZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGF1aS1pY29uXG4gICAgICAgICAgKm5nSWY9XCJpdGVtIHwgcHVyZTogaXNQcm9kdWN0QWN0aXZlOmN1cnJlbnRcIlxuICAgICAgICAgIGNsYXNzPVwiY2hlY2stdHJpYW5nbGUtYmFkZ2VcIlxuICAgICAgICAgIGljb249XCJjaGVja1wiXG4gICAgICAgID48L2F1aS1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgKm5nSWY9XCJwb3J0YWxQcm9kdWN0JCB8IGFzeW5jIGFzIHBvcnRhbE1lbnVcIlxuICAgIGNsYXNzPVwicG9ydGFsXCJcbiAgICBbbmdDbGFzc109XCJ7ICdwb3J0YWwtLWFjdGl2ZSc6IGlzUG9ydGFsIH1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwb3J0YWxfX2l0ZW1cIlxuICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9Qb3J0YWwoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGF1aS1pY29uIGljb249XCJob21lX3NcIj48L2F1aS1pY29uPlxuICAgICAge3sgcG9ydGFsTWVudS5zcGVjLmRpc3BsYXlOYW1lIHwgdHJhbnNsYXRlOiB7fTp0cnVlIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICA8YWNsLWxvYWRpbmctbWFza1xuICAgIHN0eWxlPVwiaGVpZ2h0OiAxNDhweFwiXG4gICAgW2xvYWRpbmddPVwidHJ1ZVwiXG4gID48L2FjbC1sb2FkaW5nLW1hc2s+XG48L25nLXRlbXBsYXRlPlxuIl19
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3BhZ2Utc2NhZmZvbGQvcGFnZS1oZWFkZXIvY29tbW9uLWxheW91dC9wcm9kdWN0LXNlbGVjdC9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvcGFnZS1zY2FmZm9sZC9wYWdlLWhlYWRlci9jb21tb24tbGF5b3V0L3Byb2R1Y3Qtc2VsZWN0L2NvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDakYsT0FBTyxFQUdMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7SUNKL0MsK0JBS0M7SUFDQyxZQUNGOztJQUFBLGlCQUFPOzs7SUFETCxlQUNGO0lBREUsc0VBQ0Y7Ozs7SUFxQlEsNkJBS0M7SUFDQywrQkFPWTs7SUFDZCwwQkFBZTs7OztJQU5YLGVBRUU7SUFG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WUFBWSxHQUFHLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3JEO2FBQU07WUFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDOUI7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQWtCLEVBQUUsT0FBeUI7UUFDM0QsT0FBTyxDQUNMLE9BQU87WUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7Z0JBQ2hCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQzVELENBQUM7SUFDSixDQUFDO0lBRUQsZUFBZSxDQUFDLElBQWtCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUM7SUFDakQsQ0FBQzt1RkEzSFUsc0JBQXNCO29FQUF0QixzQkFBc0I7WUNwRW5DLGlDQWVDOzs7Ozs7O1lBQ0MseUVBT087OztZQUNQLCtCQU1ZOzs7WUFDZCxpQkFBUztZQUNULDBIQTZEYztZQUVkLDBIQUtjOzs7WUFsR1osZ0NBQW1CLCtCQUFBLGlEQUFBLHlMQUFBLDhFQUFBO1lBZWhCLGVBQ21FO1lBRG5FLGtJQUNtRTtZQVNwRSxlQUF5RDtZQUF6RCxtRkFBeUQsOERBQUE7Ozt1RkR5Q2hELHNCQUFzQjtjQU5sQyxTQUFTOzJCQUNFLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNOzhNQUkvQyxZQUFZO2tCQURYLEtBQUs7WUFJTixPQUFPO2tCQUROLEtBQUs7WUFJTixLQUFLO2tCQURKLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXV0aG9yaXphdGlvblN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2F1dGhvcml6YXRpb24vcHVibGljLWFwaSc7XG5pbXBvcnQge1xuICBTdHJpbmdNYXAsXG4gIFByb2R1Y3RFbnRyeSxcbiAgcHVibGlzaFJlZixcbn0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IEs4c1Blcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGVybWlzc2lvbi9rOHMtcGVybWlzc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2R1Y3RFbnRyeU5hbWUgfSBmcm9tICcuLi9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uTGF5b3V0U3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmUuc2VydmljZSc7XG5cbmltcG9ydCB7IFByb2R1Y3RTZWxlY3RTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlJztcblxuY29uc3QgQURNSU5fVklFV19NQVA6IHtcbiAgW2tleTogc3RyaW5nXToge1xuICAgIHZpZXc6IHN0cmluZztcbiAgICBocmVmOiBzdHJpbmc7XG4gIH07XG59ID0ge1xuICAnY29uc29sZS1wbGF0Zm9ybSc6IHtcbiAgICBocmVmOiAnL21hbmFnZS1wbGF0Zm9ybScsXG4gICAgdmlldzogJ3BsYXRmb3JtdmlldycsXG4gIH0sXG4gICdjb25zb2xlLXByb2plY3QnOiB7XG4gICAgaHJlZjogJy9ob21lL3Byb2plY3QnLFxuICAgIHZpZXc6ICdwcm9qZWN0dmlldycsXG4gIH0sXG4gICdjb25zb2xlLXNlY3VyaXR5Jzoge1xuICAgIGhyZWY6ICcvY29udGFpbmVyLXNlY3VyaXR5L2hvbWUnLFxuICAgIHZpZXc6ICdjb250YWluZXJzZWN1cml0eXZpZXcnLFxuICB9LFxufTtcblxuY29uc3QgVklFVyA9IHtcbiAgdHlwZTogJ3ZpZXdzJyxcbiAgYXBpR3JvdXA6ICdhdXRoLmFsYXVkYS5pbycsXG59O1xuXG5jb25zdCBQUkVGSVggPSAnY29uc29sZS0nO1xuXG5leHBvcnQgY29uc3QgUFJPRFVDVF9JQ09OX01BUDogU3RyaW5nTWFwID0ge1xuICAnY29uc29sZS1hY3AnOiAnYWNwJyxcbiAgJ2NvbnNvbGUtYXNtJzogJ2FzbScsXG4gICdjb25zb2xlLWRldm9wcyc6ICdkZXZvcHMnLFxuICAvLyBjb25zb2xlLWUtYWFtIHByZWZpeCDkuLrkuoblhbzlrrnpu5jorqTmjpLluo/vvIznrYnlkI7nu63mjpLluo/mlrnmoYjlh7rmnaXlj6/ku6XmlLnmiJBjb25zb2xlLWFhbVxuICAnY29uc29sZS1lLWFhbSc6ICdhcHBfc3RvcmUnLFxuICAnY29uc29sZS1zZWN1cml0eSc6ICdidWdfc2VhcmNoJyxcbiAgJ2NvbnNvbGUtcGxhdGZvcm0nOiAncGxhdGZvcm1fbWFuYWdlbWVudCcsXG4gICdjb25zb2xlLXByb2plY3QnOiAncHJvamVjdF9tYW5hZ2VtZW50JyxcbiAgJ2NvbnNvbGUtZGF0YXNlcnZpY2VzJzogJ2RhdGFfc2VydmljZXMnLFxuICAnY29uc29sZS1jZWMnOiAnY2xvdWRfZWRnZV9jb2xsYWJvcmF0aW9uJyxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1wcm9kdWN0LXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0U2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgcGxhdGZvcm1QYXRoID0gJy9jb25zb2xlLXBsYXRmb3JtJztcblxuICBASW5wdXQoKVxuICBjdXJyZW50PzogUHJvZHVjdEVudHJ5TmFtZTtcblxuICBASW5wdXQoKVxuICB0aXRsZT86IHN0cmluZztcblxuICBQUk9EVUNUX0lDT05fTUFQID0gUFJPRFVDVF9JQ09OX01BUDtcblxuICBhbGxQcm9kdWN0cyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLnByb2R1Y3RTZWxlY3RTZXJ2aWNlLnJlbG9hZCQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnN0b3JlLnNlbGVjdEFsbFByb2R1Y3RzKCkpLFxuICAgICksXG4gICAgdGhpcy5rOHNQZXJtaXNzaW9uLmlzQWxsb3dlZCh7XG4gICAgICB0eXBlOiBWSUVXLFxuICAgICAgbmFtZTogT2JqZWN0LnZhbHVlcyhBRE1JTl9WSUVXX01BUCkubWFwKGl0ZW0gPT4gaXRlbS52aWV3KSxcbiAgICB9KSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtwcm9kdWN0cywgdmlld3NdKSA9PiB7XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoQURNSU5fVklFV19NQVApO1xuICAgICAgY29uc3QgcGVybWlzc2lvbk1hcDoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xuICAgICAgfSA9IHt9O1xuICAgICAga2V5cy5mb3JFYWNoKChrZXksIGluZGV4KSA9PiAocGVybWlzc2lvbk1hcFtrZXldID0gdmlld3NbaW5kZXhdKSk7XG4gICAgICByZXR1cm4gcHJvZHVjdHMuZmlsdGVyKHAgPT5cbiAgICAgICAga2V5cy5pbmNsdWRlcyhwLm1ldGFkYXRhLm5hbWUpID8gcGVybWlzc2lvbk1hcFtwLm1ldGFkYXRhLm5hbWVdIDogdHJ1ZSxcbiAgICAgICk7XG4gICAgfSksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIHNlbGVjdGFibGVQcm9kdWN0cyQgPSB0aGlzLmFsbFByb2R1Y3RzJC5waXBlKFxuICAgIG1hcChwcm9kdWN0cyA9PlxuICAgICAgKHByb2R1Y3RzIHx8IFtdKS5maWx0ZXIoXG4gICAgICAgIHByb2R1Y3QgPT5cbiAgICAgICAgICAhdGhpcy5pc1BvcnRhbFByb2R1Y3QocHJvZHVjdCkgJiZcbiAgICAgICAgICAoIXByb2R1Y3Quc3RhdHVzIHx8IHByb2R1Y3Quc3RhdHVzLmhpZGRlbk9uUG9ydGFsICE9PSB0cnVlKSxcbiAgICAgICksXG4gICAgKSxcbiAgICBwdWJsaXNoUmVmKCksXG4gICk7XG5cbiAgcG9ydGFsUHJvZHVjdCQgPSB0aGlzLmFsbFByb2R1Y3RzJC5waXBlKFxuICAgIG1hcChyZXMgPT4gcmVzLmZpbmQocCA9PiB0aGlzLmlzUG9ydGFsUHJvZHVjdChwKSkpLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICBkaXNhYmxlZCQgPSB0aGlzLnNlbGVjdGFibGVQcm9kdWN0cyQucGlwZShcbiAgICBtYXAocHJvZHVjdHMgPT4gIXByb2R1Y3RzLmxlbmd0aCksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIGlzUG9ydGFsID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yZTogQ29tbW9uTGF5b3V0U3RvcmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNQZXJtaXNzaW9uOiBLOHNQZXJtaXNzaW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RTZWxlY3RTZXJ2aWNlOiBQcm9kdWN0U2VsZWN0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTdGF0ZTogQXV0aG9yaXphdGlvblN0YXRlU2VydmljZSxcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaXNQb3J0YWwgPSB0aGlzLnJvdXRlci51cmwuc3RhcnRzV2l0aCgnL3BvcnRhbCcpO1xuICB9XG5cbiAganVtcChlbnRyeXBvaW50OiBzdHJpbmcsIHNzb0VuYWJsZWQ6IGJvb2xlYW4sIHRhcmdldCA9ICdfc2VsZicpIHtcbiAgICB3aW5kb3cub3BlbihcbiAgICAgIHNzb0VuYWJsZWRcbiAgICAgICAgPyBgJHtlbnRyeXBvaW50fT9pZF90b2tlbj0ke3RoaXMuYXV0aFN0YXRlLnN0YXRlU25hcHNob3QuaWRUb2tlbn1gXG4gICAgICAgIDogZW50cnlwb2ludCxcbiAgICAgIHRhcmdldCxcbiAgICApO1xuICB9XG5cbiAgbmF2aWdhdGVUb1BvcnRhbChldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgd2luZG93Lm9wZW4oJy9jb25zb2xlLXBvcnRhbCcsICdfc2VsZicpO1xuICB9XG5cbiAgbmF2aWdhdGVUb1Byb2R1Y3QoaXRlbTogUHJvZHVjdEVudHJ5LCBldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICh0aGlzLmlzUHJvZHVjdEFjdGl2ZShpdGVtLCB0aGlzLmN1cnJlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpdGVtLnNwZWMucGFja1R5cGUgPT09ICdBZG1pblBhZ2UnKSB7XG4gICAgICB0aGlzLm5hdmlnYXRlVG9QbGF0Zm9ybShpdGVtKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGl0ZW0uc3BlYy5wYWNrVHlwZSA9PT0gJ0J1aWxkSW4nKSB7XG4gICAgICB0aGlzLmp1bXAoaXRlbS5zcGVjLmVudHJ5cG9pbnQsIGZhbHNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGl0ZW0uc3BlYy5wYWNrVHlwZSA9PT0gJ0ludGVncmF0ZWQnKSB7XG4gICAgICB0aGlzLmp1bXAoaXRlbS5zcGVjLmVudHJ5cG9pbnQsIGl0ZW0uc3BlYy5zc29FbmFibGVkLCAnX2JsYW5rJyk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tGbiA9IChfOiBudW1iZXIsIGl0ZW06IFByb2R1Y3RFbnRyeSkgPT4gaXRlbS5tZXRhZGF0YS5uYW1lO1xuXG4gIG5hdmlnYXRlVG9QbGF0Zm9ybShpdGVtOiBQcm9kdWN0RW50cnkpIHtcbiAgICBjb25zdCBocmVmID0gQURNSU5fVklFV19NQVBbaXRlbS5tZXRhZGF0YS5uYW1lXS5ocmVmO1xuICAgIGlmICh0aGlzLnBsYXRmb3JtUGF0aCkge1xuICAgICAgd2luZG93Lm9wZW4oYCR7dGhpcy5wbGF0Zm9ybVBhdGh9JHtocmVmfWAsICdfc2VsZicpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbaHJlZl0pO1xuICAgIH1cbiAgfVxuXG4gIGlzUHJvZHVjdEFjdGl2ZShpdGVtOiBQcm9kdWN0RW50cnksIGN1cnJlbnQ6IFByb2R1Y3RFbnRyeU5hbWUpIHtcbiAgICByZXR1cm4gKFxuICAgICAgY3VycmVudCAmJlxuICAgICAgaXRlbS5tZXRhZGF0YS5uYW1lID09PVxuICAgICAgICAoY3VycmVudC5zdGFydHNXaXRoKFBSRUZJWCkgPyBjdXJyZW50IDogUFJFRklYICsgY3VycmVudClcbiAgICApO1xuICB9XG5cbiAgaXNQb3J0YWxQcm9kdWN0KGl0ZW06IFByb2R1Y3RFbnRyeSkge1xuICAgIHJldHVybiBpdGVtLm1ldGFkYXRhLm5hbWUgPT09ICdjb25zb2xlLXBvcnRhbCc7XG4gIH1cblxuICBnZXRQcm9kdWN0VGl0bGUgPSAoXG4gICAgcHJvZHVjdHM6IFByb2R1Y3RFbnRyeVtdLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgY3VycmVudDogUHJvZHVjdEVudHJ5TmFtZSxcbiAgKSA9PlxuICAgIHRpdGxlIHx8XG4gICAgZ2V0KFxuICAgICAgKHByb2R1Y3RzIHx8IFtdKS5maW5kKHAgPT4gdGhpcy5pc1Byb2R1Y3RBY3RpdmUocCwgY3VycmVudCkpLFxuICAgICAgWydzcGVjJywgJ2Rpc3BsYXlOYW1lJ10sXG4gICAgKTtcbn1cbiIsIjxidXR0b25cbiAgY2xhc3M9XCJhY2wtcHJvZHVjdC1zZWxlY3RcIlxuICBbYXVpVG9vbHRpcF09XCJtZW51XCJcbiAgYXVpVG9vbHRpcFR5cGU9XCJwbGFpblwiXG4gIGF1aVRvb2x0aXBUcmlnZ2VyPVwiY2xpY2tcIlxuICBhdWlUb29sdGlwUG9zaXRpb249XCJib3R0b20gc3RhcnRcIlxuICBhdWlUb29sdGlwQ2xhc3M9XCJhdWktcHJvZHVjdC1zZWxlY3QtdG9vbHRpcFwiXG4gIFthdWlUb29sdGlwSGlkZU9uQ2xpY2tdPVwidHJ1ZVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZCQgfCBhc3luY1wiXG4gIFt0aXRsZV09XCJcbiAgICAoZGlzYWJsZWQkIHwgYXN5bmMpXG4gICAgICA/ICcnXG4gICAgICA6IChhbGxQcm9kdWN0cyQgfCBhc3luYyB8IHB1cmU6IGdldFByb2R1Y3RUaXRsZTp0aXRsZTpjdXJyZW50IHwgdHJhbnNsYXRlKVxuICBcIlxuICBbbmdDbGFzc109XCJ7ICdhY2wtcHJvZHVjdC1zZWxlY3QtLWRpc2FibGVkJzogZGlzYWJsZWQkIHwgYXN5bmMgfVwiXG4+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCJcbiAgICAgIGFsbFByb2R1Y3RzJCB8IGFzeW5jIHwgcHVyZTogZ2V0UHJvZHVjdFRpdGxlOnRpdGxlOmN1cnJlbnQgYXMgcHJvZHVjdFRpdGxlXG4gICAgXCJcbiAgICBjbGFzcz1cImFjbC1wcm9kdWN0LXNlbGVjdF9fdGl0bGVcIlxuICA+XG4gICAge3sgcHJvZHVjdFRpdGxlIHwgdHJhbnNsYXRlIH19XG4gIDwvc3Bhbj5cbiAgPGF1aS1pY29uXG4gICAgaWNvbj1cIm1lbnVfZG90X3NcIlxuICAgIHNpemU9XCIxNnB4XCJcbiAgICBbYXVpVG9vbHRpcF09XCInbm9fcHJvZHVjdF9hbmRfY29udGFjdF9hZG1pbicgfCB0cmFuc2xhdGVcIlxuICAgIFthdWlUb29sdGlwRGlzYWJsZWRdPVwiIShkaXNhYmxlZCQgfCBhc3luYylcIlxuICAgIGF1aVRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbSBzdGFydFwiXG4gID48L2F1aS1pY29uPlxuPC9idXR0b24+XG48bmctdGVtcGxhdGUgI21lbnU+XG4gIDxkaXYgY2xhc3M9XCJtZW51XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGFibGVQcm9kdWN0cyQgfCBhc3luYyBhcyBwcm9kdWN0czsgZWxzZSBsb2FkaW5nXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibWVudV9faXRlbVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnbWVudV9faXRlbS0tYWN0aXZlJzogaXRlbSB8IHB1cmU6IGlzUHJvZHVjdEFjdGl2ZTpjdXJyZW50XG4gICAgICAgIH1cIlxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwcm9kdWN0czsgdHJhY2tCeTogdHJhY2tGblwiXG4gICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvUHJvZHVjdChpdGVtLCAkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnVfX2l0ZW0taWNvblwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIGl0ZW0uc3BlYy5wYWNrVHlwZSAhPT0gJ0ludGVncmF0ZWQnICYmICFpdGVtLnNwZWMubG9nbztcbiAgICAgICAgICAgICAgZWxzZSBsb2dvXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhdWktaWNvblxuICAgICAgICAgICAgICBjbGFzcz1cImFjbC1jb2xvcmZ1bC1pY29uXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgIGhpZ2hsaWdodDogaXRlbSB8IHB1cmU6IGlzUHJvZHVjdEFjdGl2ZTpjdXJyZW50XG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBzaXplPVwiNTBcIlxuICAgICAgICAgICAgICBbaWNvbl09XCInYmljb2xvcjonICsgUFJPRFVDVF9JQ09OX01BUFtpdGVtLm1ldGFkYXRhLm5hbWVdXCJcbiAgICAgICAgICAgID48L2F1aS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbG9nbz5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAoaXRlbS5zcGVjLmxvZ28gfCBhY2xJbWFnZUhlYWRlcikgfHxcbiAgICAgICAgICAgICAgICAgICdpbWFnZXMvcHJvZHVjdC1kZWZhdWx0LWxvZ28ucG5nJyB8IGFjbFNhZmU6ICd1cmwnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGVmYXVsdFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVudV9faXRlbS1pbmZvIHR3LWxpbmUtY2xhbXAtMlwiPlxuICAgICAgICAgIHt7IGl0ZW0uc3BlYy5kaXNwbGF5TmFtZSB8IHRyYW5zbGF0ZToge306dHJ1ZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGF1aS1pY29uXG4gICAgICAgICAgKm5nSWY9XCJpdGVtIHwgcHVyZTogaXNQcm9kdWN0QWN0aXZlOmN1cnJlbnRcIlxuICAgICAgICAgIGNsYXNzPVwiY2hlY2stdHJpYW5nbGUtYmFkZ2VcIlxuICAgICAgICAgIGljb249XCJjaGVja1wiXG4gICAgICAgID48L2F1aS1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgKm5nSWY9XCJwb3J0YWxQcm9kdWN0JCB8IGFzeW5jIGFzIHBvcnRhbE1lbnVcIlxuICAgIGNsYXNzPVwicG9ydGFsXCJcbiAgICBbbmdDbGFzc109XCJ7ICdwb3J0YWwtLWFjdGl2ZSc6IGlzUG9ydGFsIH1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwb3J0YWxfX2l0ZW1cIlxuICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9Qb3J0YWwoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGF1aS1pY29uIGljb249XCJob21lX3NcIj48L2F1aS1pY29uPlxuICAgICAge3sgcG9ydGFsTWVudS5zcGVjLmRpc3BsYXlOYW1lIHwgdHJhbnNsYXRlOiB7fTp0cnVlIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICA8YWNsLWxvYWRpbmctbWFza1xuICAgIHN0eWxlPVwiaGVpZ2h0OiAxNDhweFwiXG4gICAgW2xvYWRpbmddPVwidHJ1ZVwiXG4gID48L2FjbC1sb2FkaW5nLW1hc2s+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -21,6 +21,12 @@ export class TranslateService {
21
21
  get remoteLoaded() {
22
22
  return this._remoteLoaded;
23
23
  }
24
+ get locales() {
25
+ return this.options.locales;
26
+ }
27
+ get fallbackLocale() {
28
+ return this.options.fallbackLocale;
29
+ }
24
30
  constructor(http, baseHref, options, translationList) {
25
31
  this.http = http;
26
32
  this.baseHref = baseHref;
@@ -292,4 +298,4 @@ __decorate([
292
298
  type: Inject,
293
299
  args: [TRANSLATIONS]
294
300
  }] }]; }, { remoteLoaded$: [], locale$: [] }); })();
295
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvdHJhbnNsYXRlL3RyYW5zbGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUNMLE1BQU0sRUFDTixVQUFVLEVBRVYsUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9ELE9BQU8sRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sRUFDUCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUNSLEdBQUcsRUFDSCxTQUFTLEdBQ1YsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWpDLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFM0MsT0FBTyxFQUNMLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsY0FBYyxHQUNmLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQVUzRCxNQUFNLE9BQU8sZ0JBQWdCO0lB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Qjs7c0JBRXhCLFFBQVE7O3NCQUFJLE1BQU07dUJBQUMsWUFBWTt3QkFwQnpCLGFBQWEsTUFXYixPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqIEBtb2R1bGUgdHJhbnNsYXRlXG4gKi9cblxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7XG4gIEluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgaXNEZXZNb2RlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldCwgaGVhZCwgaXNQbGFpbk9iamVjdCwgdGVtcGxhdGUgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtcbiAgRU1QVFksXG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIGZvcmtKb2luLFxuICB0aHJvd0Vycm9yLFxuICBjYXRjaEVycm9yLFxuICBmaWx0ZXIsXG4gIGZpbmFsaXplLFxuICBtYXAsXG4gIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBhamF4IH0gZnJvbSAncnhqcy9hamF4JztcblxuaW1wb3J0IHsgQVBJX0dBVEVXQVksIFRFTVBMQVRFX09QVElPTlMgfSBmcm9tICcuLi9jb3JlL2NvbnN0YW50cy9jb25zdGFudHMnO1xuaW1wb3J0IHsgVE9LRU5fQkFTRV9IUkVGIH0gZnJvbSAnLi4vY29yZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IGlzQWJzb2x1dGVVcmwgfSBmcm9tICcuLi9jb3JlL3V0aWxzL2NvbW1vbic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlSW5wdXQgfSBmcm9tICcuLi9jb3JlL3V0aWxzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgcGFyc2UgfSBmcm9tICcuLi9jb3JlL3V0aWxzL3lhbWwnO1xuXG5pbXBvcnQge1xuICBGQUxMQkFDS19MQU5HVUFHRSxcbiAgTE9DQUxFX1BMQUNFSE9MREVSX1JFR0VYLFxuICBMT0NBTEVfU1RPUkFHRSxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVFJBTlNMQVRFX09QVElPTlMsIFRSQU5TTEFUSU9OUyB9IGZyb20gJy4vdG9rZW5zJztcbmltcG9ydCB7XG4gIFRyYW5zbGF0ZUtleSxcbiAgVHJhbnNsYXRlT3B0aW9ucyxcbiAgVHJhbnNsYXRpb24sXG4gIFRyYW5zbGF0aW9uVmFsdWUsXG4gIFRyYW5zbGF0aW9ucyxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRlU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIF9yZW1vdGVMb2FkZWQ/OiBib29sZWFuO1xuXG4gIGdldCByZW1vdGVMb2FkZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlbW90ZUxvYWRlZDtcbiAgfVxuXG4gIEBPYnNlcnZhYmxlSW5wdXQoJ19yZW1vdGVMb2FkZWQnKVxuICByZWFkb25seSByZW1vdGVMb2FkZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCB1bmRlZmluZWQ+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0aW9uc0xpc3Q6IEFycmF5PFJlYWRvbmx5PFRyYW5zbGF0aW9ucz4+O1xuICBwcml2YXRlIHJlbW90ZVRyYW5zbGF0aW9uc0xpc3Q6IEFycmF5PFJlYWRvbmx5PFRyYW5zbGF0aW9ucz4+O1xuICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFRyYW5zbGF0ZU9wdGlvbnM7XG5cbiAgbG9jYWxlOiBzdHJpbmc7XG5cbiAgQE9ic2VydmFibGVJbnB1dCgpXG4gIHJlYWRvbmx5IGxvY2FsZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXG4gICAgQEluamVjdChUT0tFTl9CQVNFX0hSRUYpXG4gICAgcHJpdmF0ZSByZWFkb25seSBiYXNlSHJlZjogc3RyaW5nLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChUUkFOU0xBVEVfT1BUSU9OUylcbiAgICBvcHRpb25zOiBUcmFuc2xhdGVPcHRpb25zLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVFJBTlNMQVRJT05TKSB0cmFuc2xhdGlvbkxpc3Q6IFRyYW5zbGF0aW9uc1tdLFxuICApIHtcbiAgICB0aGlzLmxvY2FsZSA9IG9wdGlvbnM/LmxvY2FsZSB8fCBuYXZpZ2F0b3IubGFuZ3VhZ2U7XG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgbG9jYWxlczogW3RoaXMubG9jYWxlXSxcbiAgICAgIGZhbGxiYWNrTG9jYWxlOiBGQUxMQkFDS19MQU5HVUFHRSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcblxuICAgIHRoaXMudHJhbnNsYXRpb25zTGlzdCA9IFtcbiAgICAgIG9wdGlvbnMudHJhbnNsYXRpb25zLFxuICAgICAgLi4uKHRyYW5zbGF0aW9uTGlzdCB8fCBbXSksXG4gICAgXS5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICBpZiAob3B0aW9ucy5yZW1vdGVVcmwpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMucmVtb3RlVXJsKSkge1xuICAgICAgICBvcHRpb25zLnJlbW90ZVVybC5mb3JFYWNoKHVybCA9PiB0aGlzLmFkZFJlbW90ZVRyYW5zbGF0aW9ucyh1cmwpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWRkUmVtb3RlVHJhbnNsYXRpb25zKG9wdGlvbnMucmVtb3RlVXJsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ga2V5IC0g57+76K+Ra2V5XG4gICAqIEBwYXJhbSBkYXRhIC0g5qC55o2u57+76K+R5LiK5LiL5paH5pWw5o2u6I635Y+W57+76K+R5YaF5a6577yM57+76K+R6aG55LiN5a2Y5Zyo55u05o6l6L+U5ZueIGtleSDmlofmnKxcbiAgICogQHBhcmFtIGlnbm9yZU5vbkV4aXN0IC0g5byA5Y+R546v5aKD5piv5ZCm5b+96KeG5LiN5a2Y5Zyo55qE57+76K+R6aG5XG4gICAqL1xuICBnZXQoa2V5OiBUcmFuc2xhdGVLZXksIGRhdGE/OiB1bmtub3duLCBpZ25vcmVOb25FeGlzdCA9IGZhbHNlKSB7XG4gICAgY29uc3QgdHJhbnNsYXRpb24gPSB0aGlzLmdldFJhdyhrZXksIGlnbm9yZU5vbkV4aXN0KTtcbiAgICBpZiAoZGF0YSAhPSBudWxsICYmIHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuICAgICAgZGF0YSA9IFtkYXRhXTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0ZW1wbGF0ZSh0cmFuc2xhdGlvbiwgVEVNUExBVEVfT1BUSU9OUykoZGF0YSBhcyBvYmplY3QpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGVbaXNEZXZNb2RlKCkgPyAnZXJyb3InIDogJ3dhcm4nXShcbiAgICAgICAgYFRoZSB0cmFuc2xhdGlvbiBrZXkgJyR7a2V5fScgaXMgbWlzc2luZyB0aGUgbmVjZXNzYXJ5IHBhcmFtZXRlcnMuYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOebtOaOpei/lOWbnue/u+ivkeaWh+acrOaooeadv1xuICAgKiBAcGFyYW0ga2V5IC0g57+76K+Ra2V5XG4gICAqIEBwYXJhbSBpZ25vcmVOb25FeGlzdCAtIOW8gOWPkeeOr+Wig+aYr+WQpuW/veinhuS4jeWtmOWcqOeahOe/u+ivkemhuVxuICAgKi9cbiAgZ2V0UmF3KGtleTogVHJhbnNsYXRlS2V5LCBpZ25vcmVOb25FeGlzdCA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnXG4gICAgICA/IHRoaXMuX2dldChrZXksIGlnbm9yZU5vbkV4aXN0KVxuICAgICAgOiAodGhpcy5fZ2V0VmFsdWUoa2V5KSBhcyBzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIOagueaNriBgbG9jYWxlc2Ag5b6q546v5YiH5o2i5b2T5YmN5Yy65Z+f6K6+572uXG4gICAqL1xuICB0b2dnbGVMb2NhbGUoKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLm9wdGlvbnMubG9jYWxlcy5pbmRleE9mKHRoaXMubG9jYWxlKTtcbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYGxvY2FsZXNgIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCBjb3JyZWN0bHknKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmV4dExvY2FsZSA9XG4gICAgICB0aGlzLm9wdGlvbnMubG9jYWxlc1tcbiAgICAgICAgaW5kZXggPT09IHRoaXMub3B0aW9ucy5sb2NhbGVzLmxlbmd0aCAtIDEgPyAwIDogaW5kZXggKyAxXG4gICAgICBdO1xuXG4gICAgaWYgKCFuZXh0TG9jYWxlIHx8IHRoaXMubG9jYWxlID09PSBuZXh0TG9jYWxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXRMb2NhbGUobmV4dExvY2FsZSk7XG4gIH1cblxuICBzZXRMb2NhbGUobG9jYWxlOiBzdHJpbmcpIHtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMT0NBTEVfU1RPUkFHRSwgbG9jYWxlKTtcbiAgICB0aGlzLmxvY2FsZSA9IGxvY2FsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmiYvliqjmt7vliqDor63oqIDljIVcbiAgICovXG4gIGFkZFRyYW5zbGF0aW9ucyh0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9ucykge1xuICAgIHRoaXMudHJhbnNsYXRpb25zTGlzdC51bnNoaWZ0KE9iamVjdC5mcmVlemUodHJhbnNsYXRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICog5omL5Yqo5re75Yqg6K+t6KiA5YyFXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc29uYXJqcy9jb2duaXRpdmUtY29tcGxleGl0eVxuICBhZGRSZW1vdGVUcmFuc2xhdGlvbnMocmVtb3RlVXJsOiBzdHJpbmcpIHtcbiAgICBpZiAoIXJlbW90ZVVybCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9yZW1vdGVMb2FkZWQgPSBmYWxzZTtcbiAgICByZW1vdGVVcmwgPSBoZWFkKHJlbW90ZVVybC5zcGxpdCgvIy8pKTtcbiAgICBjb25zdCBpc0Fic29sdXRlID0gaXNBYnNvbHV0ZVVybChyZW1vdGVVcmwpO1xuICAgIGNvbnN0IGlzQXBpR2F0ZVdheVJlcXVlc3QgPSByZW1vdGVVcmwuc3RhcnRzV2l0aChBUElfR0FURVdBWSk7XG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICBsZXQgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG4gICAgICBpZiAoIWlzQWJzb2x1dGUgJiYgKCF0aGlzLmJhc2VIcmVmIHx8ICFpc0Fic29sdXRlVXJsKHRoaXMuYmFzZUhyZWYpKSkge1xuICAgICAgICBlcnJvck1lc3NhZ2UgPSAnYWJzb2x1dGUgYmFzZSBocmVmIGlzIHJlcXVpcmVkIGZvciByZWxhdGl2ZSByZW1vdGUgdXJsJztcbiAgICAgIH0gZWxzZSBpZiAocmVtb3RlVXJsLnNwbGl0KCc/JylbMF0uaW5jbHVkZXMoJy4vJykpIHtcbiAgICAgICAgZXJyb3JNZXNzYWdlID1cbiAgICAgICAgICAnZG8gbm90IHVzZSBhbnkgZG90IHdpdGggc2xhc2ggZm9yIHJlbGF0aXZlIHVybCB3aGljaCBzaG91bGQgYWx3YXlzIGJhc2UgZnJvbSBiYXNlIGhyZWYnO1xuICAgICAgfVxuICAgICAgaWYgKGVycm9yTWVzc2FnZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghaXNBYnNvbHV0ZSAmJiAhaXNBcGlHYXRlV2F5UmVxdWVzdCkge1xuICAgICAgcmVtb3RlVXJsID1cbiAgICAgICAgKHRoaXMuYmFzZUhyZWYuZW5kc1dpdGgoJy8nKSA/IHRoaXMuYmFzZUhyZWYgOiB0aGlzLmJhc2VIcmVmICsgJy8nKSArXG4gICAgICAgIHJlbW90ZVVybDtcbiAgICB9XG4gICAgKExPQ0FMRV9QTEFDRUhPTERFUl9SRUdFWC50ZXN0KHJlbW90ZVVybClcbiAgICAgID8gZm9ya0pvaW4oXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmxvY2FsZXMubWFwKGxvY2FsZSA9PlxuICAgICAgICAgICAgdGhpcy5mZXRjaFRyYW5zbGF0aW9uKHJlbW90ZVVybCwgbG9jYWxlKS5waXBlKFxuICAgICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmxvb3NlKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBsb29zZUxvY2FsZSA9IHRoaXMuX2dldExvb3NlTG9jYWxlKGxvY2FsZSk7XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZSAhPT0gbG9vc2VMb2NhbGUgJiZcbiAgICAgICAgICAgICAgICAgICAgIXRoaXMub3B0aW9ucy5sb2NhbGVzLmluY2x1ZGVzKGxvb3NlTG9jYWxlKVxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZldGNoVHJhbnNsYXRpb24ocmVtb3RlVXJsLCBsb29zZUxvY2FsZSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Rldk1vZGUoKSA/IHRocm93RXJyb3IoKCkgPT4gZXJyb3IpIDogRU1QVFk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBmaWx0ZXIoaXNQbGFpbk9iamVjdCksXG4gICAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAodHJhbnNsYXRpb246IFRyYW5zbGF0aW9uKSA9PlxuICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgW2xvY2FsZV06IHRyYW5zbGF0aW9uLFxuICAgICAgICAgICAgICAgICAgfSBhcyBUcmFuc2xhdGlvbnMpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICApLnBpcGUobWFwKF8gPT4gXy5yZWR1Y2UoT2JqZWN0LmFzc2lnbikpKVxuICAgICAgOiB0aGlzLmZldGNoVHJhbnNsYXRpb24ocmVtb3RlVXJsKS5waXBlKFxuICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4gKGlzRGV2TW9kZSgpID8gdGhyb3dFcnJvcigoKSA9PiBlcnJvcikgOiBFTVBUWSkpLFxuICAgICAgICApXG4gICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkJCksXG4gICAgICAgIGZpbmFsaXplKCgpID0+ICh0aGlzLl9yZW1vdGVMb2FkZWQgPSB0cnVlKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHJlbW90ZVRyYW5zbGF0aW9ucyA9PiB7XG4gICAgICAgIGlmICghcmVtb3RlVHJhbnNsYXRpb25zKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5yZW1vdGVUcmFuc2xhdGlvbnNMaXN0KSB7XG4gICAgICAgICAgdGhpcy5yZW1vdGVUcmFuc2xhdGlvbnNMaXN0ID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW1vdGVUcmFuc2xhdGlvbnNMaXN0LnVuc2hpZnQoT2JqZWN0LmZyZWV6ZShyZW1vdGVUcmFuc2xhdGlvbnMpKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIOS7jui/nOeoiyB1cmwg5qih5p2/5ZKM5Yy65Z+f6I635Y+W57+76K+R5YyFXG4gICAqL1xuICBmZXRjaFRyYW5zbGF0aW9uKHJlbW90ZVVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUcmFuc2xhdGlvbnM+O1xuICBmZXRjaFRyYW5zbGF0aW9uKHJlbW90ZVVybDogc3RyaW5nLCBsb2NhbGU6IHN0cmluZyk6IE9ic2VydmFibGU8VHJhbnNsYXRpb24+O1xuICBmZXRjaFRyYW5zbGF0aW9uKHJlbW90ZVVybDogc3RyaW5nLCBsb2NhbGU/OiBzdHJpbmcpIHtcbiAgICBpZiAoaXNEZXZNb2RlKCkgJiYgTE9DQUxFX1BMQUNFSE9MREVSX1JFR0VYLnRlc3QocmVtb3RlVXJsKSAmJiAhbG9jYWxlKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAnYGxvY2FsZWAgaXMgcmVxdWlyZWQgc2luZSB0aGUgcHJvdmlkZWQgcmVtb3RlIHVybCBjb250YWlucyBsb2NhbGUgcGxhY2Vob2xkZXInLFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgaXNKU09OID0gcmVtb3RlVXJsLmVuZHNXaXRoKCcuanNvbicpO1xuICAgIGNvbnN0IGlzQXBpR2F0ZVdheVJlcXVlc3QgPSByZW1vdGVVcmwuc3RhcnRzV2l0aChBUElfR0FURVdBWSk7XG4gICAgY29uc3QgdXJsID0gbG9jYWxlXG4gICAgICA/IHJlbW90ZVVybC5yZXBsYWNlKExPQ0FMRV9QTEFDRUhPTERFUl9SRUdFWCwgbG9jYWxlKVxuICAgICAgOiByZW1vdGVVcmw7XG4gICAgY29uc3QgcmVzcG9uc2VUeXBlID0gaXNKU09OID8gJ2pzb24nIDogJ3RleHQnO1xuICAgIGlmIChpc0FwaUdhdGVXYXlSZXF1ZXN0KSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgIC5yZXF1ZXN0KCdHRVQnLCB1cmwsIHsgcmVzcG9uc2VUeXBlIH0pXG4gICAgICAgIC5waXBlKG1hcChib2R5ID0+IChpc0pTT04gPyBib2R5IDogcGFyc2UoYm9keSkpKSk7XG4gICAgfVxuICAgIHJldHVybiBhamF4KHtcbiAgICAgIHVybCxcbiAgICAgIHJlc3BvbnNlVHlwZSxcbiAgICB9KS5waXBlKFxuICAgICAgbWFwKCh7IHJlc3BvbnNlIH0pID0+IChpc0pTT04gPyByZXNwb25zZSA6IHBhcnNlKHJlc3BvbnNlIGFzIHN0cmluZykpKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0TG9vc2VMb2NhbGUobG9jYWxlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gaGVhZChsb2NhbGUuc3BsaXQoL1tfLV0vKSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRWYWx1ZShcbiAgICBzb3VyY2U6IFRyYW5zbGF0aW9uLFxuICAgIGxvY2FsZSA9IHRoaXMubG9jYWxlLFxuICApOiBUcmFuc2xhdGlvblZhbHVlIHtcbiAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgdmFsdWUgPSBzb3VyY2VbbG9jYWxlXTtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMubG9vc2UpIHtcbiAgICAgIGNvbnN0IGxvb3NlTG9jYWxlID0gdGhpcy5fZ2V0TG9vc2VMb2NhbGUobG9jYWxlKTtcbiAgICAgIHZhbHVlID1cbiAgICAgICAgbG9jYWxlID09PSBsb29zZUxvY2FsZVxuICAgICAgICAgID8gT2JqZWN0LmVudHJpZXMoc291cmNlKS5maW5kKFxuICAgICAgICAgICAgICAoW2tleV0pID0+IGxvY2FsZSA9PT0gdGhpcy5fZ2V0TG9vc2VMb2NhbGUoa2V5KSxcbiAgICAgICAgICAgICk/LlsxXVxuICAgICAgICAgIDogc291cmNlW2xvb3NlTG9jYWxlXTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09IG51bGwgJiYgbG9jYWxlICE9PSB0aGlzLm9wdGlvbnMuZmFsbGJhY2tMb2NhbGUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9nZXRWYWx1ZShzb3VyY2UsIHRoaXMub3B0aW9ucy5mYWxsYmFja0xvY2FsZSk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFdpdGhGYWxsYmFjayhcbiAgICBrZXk6IHN0cmluZyxcbiAgICBsb2NhbGUgPSB0aGlzLmxvY2FsZSxcbiAgICB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9ucyxcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZSA9IGdldCh0aGlzLl9nZXRWYWx1ZSh0cmFuc2xhdGlvbnMsIGxvY2FsZSksIGtleSk7XG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgICBpc0Rldk1vZGUoKSAmJlxuICAgICAgICB0eXBlb2YgZ2V0KHZhbHVlLCBTeW1ib2wudG9QcmltaXRpdmUpICE9PSAnZnVuY3Rpb24nXG4gICAgICApIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBUaGUgdHJhbnNsYXRpb24gZm9yIGxvY2FsZTogXFxgJHtsb2NhbGV9XFxgIGFuZCBrZXk6XFxgJHtrZXl9XFxgIGlzIGFuIG9iamVjdCwgd2hpY2ggY291bGQgYmUgdW5leHBlY3RlZGAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGxvY2FsZSAhPT0gdGhpcy5vcHRpb25zLmZhbGxiYWNrTG9jYWxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZ2V0V2l0aEZhbGxiYWNrKFxuICAgICAgICBrZXksXG4gICAgICAgIHRoaXMub3B0aW9ucy5mYWxsYmFja0xvY2FsZSxcbiAgICAgICAgdHJhbnNsYXRpb25zLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRCYXNlKFxuICAgIGtleTogc3RyaW5nLFxuICAgIGxvY2FsZSA9IHRoaXMubG9jYWxlLFxuICAgIHRyYW5zbGF0aW9uc0xpc3Q6IFRyYW5zbGF0aW9uc1tdLFxuICApIHtcbiAgICBpZiAoIXRyYW5zbGF0aW9uc0xpc3QgfHwgdHJhbnNsYXRpb25zTGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IHRyYW5zbGF0aW9uc0xpc3QubGVuZ3RoOyBpID4gMDsgaS0tKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2dldFdpdGhGYWxsYmFjayhrZXksIGxvY2FsZSwgdHJhbnNsYXRpb25zTGlzdFtpIC0gMV0pO1xuICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldChrZXk6IHN0cmluZywgaWdub3JlTm9uRXhpc3QgPSBmYWxzZSwgbG9jYWxlID0gdGhpcy5sb2NhbGUpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLl9nZXRCYXNlKGtleSwgbG9jYWxlLCB0aGlzLnJlbW90ZVRyYW5zbGF0aW9uc0xpc3QpO1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuX2dldEJhc2Uoa2V5LCBsb2NhbGUsIHRoaXMudHJhbnNsYXRpb25zTGlzdCk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGlzRGV2TW9kZSgpICYmXG4gICAgICAhaWdub3JlTm9uRXhpc3QgJiZcbiAgICAgIHR5cGVvZiBnZXQodmFsdWUsIFN5bWJvbC50b1ByaW1pdGl2ZSkgIT09ICdmdW5jdGlvbidcbiAgICApIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYE5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBsb2NhbGU6IFxcYCR7bG9jYWxlfVxcYCBhbmQga2V5OiBcXGAke2tleX1cXGAsIHdoaWNoIGNvdWxkIGJlIHVuZXhwZWN0ZWRgLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGtleTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbXBhcmVLZXlzKFxuICAgIGxvY2FsZTogc3RyaW5nLFxuICAgIHRyYW5zbGF0aW9uOiBUcmFuc2xhdGlvbixcbiAgICBwcmV2VHJhbnNsYXRpb246IFRyYW5zbGF0aW9uLFxuICAgIHBhdGg6IHN0cmluZ1tdID0gW10sXG4gICkge1xuICAgIGlmICh0cmFuc2xhdGlvbiA9PSBudWxsIHx8IHByZXZUcmFuc2xhdGlvbiA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgT2JqZWN0LmVudHJpZXModHJhbnNsYXRpb24pLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocHJldlRyYW5zbGF0aW9uLCBrZXkpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJldlZhbHVlID0gcHJldlRyYW5zbGF0aW9uW2tleV07XG4gICAgICBjb25zdCB2YWx1ZUlzUGxhaW5PYmplY3QgPSBpc1BsYWluT2JqZWN0KHZhbHVlKTtcbiAgICAgIGNvbnN0IHByZXZWYWx1ZUlzUGxhaW5PYmplY3QgPSBpc1BsYWluT2JqZWN0KHByZXZWYWx1ZSk7XG5cbiAgICAgIGlmICh2YWx1ZUlzUGxhaW5PYmplY3QgJiYgcHJldlZhbHVlSXNQbGFpbk9iamVjdCkge1xuICAgICAgICB0aGlzLl9jb21wYXJlS2V5cyhcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgdmFsdWUgYXMgVHJhbnNsYXRpb24sXG4gICAgICAgICAgcHJldlZhbHVlIGFzIFRyYW5zbGF0aW9uLFxuICAgICAgICAgIFsuLi5wYXRoLCBrZXldLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghdmFsdWVJc1BsYWluT2JqZWN0ICYmICFwcmV2VmFsdWVJc1BsYWluT2JqZWN0KSB7XG4gICAgICAgIGNvbnN0IG91dHB1dFBhdGggPSBbLi4ucGF0aCwga2V5XS5qb2luKCcgLT4gJyk7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gcHJldlZhbHVlKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYFRoZSBjdXN0b21pemVkIHRyYW5zbGF0aW9uIGZvciBsb2NhbGU6IFxcYCR7bG9jYWxlfVxcYCBhbmQgcGF0aDogXFxgJHtvdXRwdXRQYXRofVxcYCBpcyBkdXBsaWNhdGVkIHdpdGggdGhlIG90aGVyIHRyYW5zbGF0aW9uLCBwbGVhc2UgcmVtb3ZlIGl0IGluIHlvdXIgdHJhbnNsYXRpb24gZmlsZS5gLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYFR3byBrZXlzIHRoYXQgdGhlIGxvY2FsZSBpcyBcXGAke2xvY2FsZX1cXGAgYW5kIHRoZSBwYXRoIGlzIFxcYCR7b3V0cHV0UGF0aH1cXGAgYXJlIHNhbWUsICBidXQgdGhlaXIgdmFsdWVzIGFyZSBub3QgZXF1YWwgLCBwbGVhc2UgcmVtb3ZlIG9uZSBvZiB0aGVtIG9yIGNoYW5nZSBvbmUgb2YgdGhlIGtleXMuYCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
301
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvdHJhbnNsYXRlL3RyYW5zbGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUNMLE1BQU0sRUFDTixVQUFVLEVBRVYsUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9ELE9BQU8sRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sRUFDUCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUNSLEdBQUcsRUFDSCxTQUFTLEdBQ1YsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWpDLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFM0MsT0FBTyxFQUNMLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsY0FBYyxHQUNmLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQVUzRCxNQUFNLE9BQU8sZ0JBQWdCO0lB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OEJBQ0EsVUFBVTtpREFBUzt1RkFuQjFCLGdCQUFnQjtjQUQ1QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztzQkFnQzdCLE1BQU07dUJBQUMsZUFBZTs7c0JBRXRCLFFBQVE7O3NCQUNSLE1BQU07dUJBQUMsaUJBQWlCOztzQkFFeEIsUUFBUTs7c0JBQUksTUFBTTt1QkFBQyxZQUFZO3dCQTVCekIsYUFBYSxNQVdiLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICogQG1vZHVsZSB0cmFuc2xhdGVcbiAqL1xuXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgSW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBpc0Rldk1vZGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0LCBoZWFkLCBpc1BsYWluT2JqZWN0LCB0ZW1wbGF0ZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICBFTVBUWSxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgZm9ya0pvaW4sXG4gIHRocm93RXJyb3IsXG4gIGNhdGNoRXJyb3IsXG4gIGZpbHRlcixcbiAgZmluYWxpemUsXG4gIG1hcCxcbiAgdGFrZVVudGlsLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGFqYXggfSBmcm9tICdyeGpzL2FqYXgnO1xuXG5pbXBvcnQgeyBBUElfR0FURVdBWSwgVEVNUExBVEVfT1BUSU9OUyB9IGZyb20gJy4uL2NvcmUvY29uc3RhbnRzL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUT0tFTl9CQVNFX0hSRUYgfSBmcm9tICcuLi9jb3JlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgaXNBYnNvbHV0ZVVybCB9IGZyb20gJy4uL2NvcmUvdXRpbHMvY29tbW9uJztcbmltcG9ydCB7IE9ic2VydmFibGVJbnB1dCB9IGZyb20gJy4uL2NvcmUvdXRpbHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gJy4uL2NvcmUvdXRpbHMveWFtbCc7XG5cbmltcG9ydCB7XG4gIEZBTExCQUNLX0xBTkdVQUdFLFxuICBMT0NBTEVfUExBQ0VIT0xERVJfUkVHRVgsXG4gIExPQ0FMRV9TVE9SQUdFLFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUUkFOU0xBVEVfT1BUSU9OUywgVFJBTlNMQVRJT05TIH0gZnJvbSAnLi90b2tlbnMnO1xuaW1wb3J0IHtcbiAgVHJhbnNsYXRlS2V5LFxuICBUcmFuc2xhdGVPcHRpb25zLFxuICBUcmFuc2xhdGlvbixcbiAgVHJhbnNsYXRpb25WYWx1ZSxcbiAgVHJhbnNsYXRpb25zLFxufSBmcm9tICcuL3R5cGVzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgX3JlbW90ZUxvYWRlZD86IGJvb2xlYW47XG5cbiAgZ2V0IHJlbW90ZUxvYWRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVtb3RlTG9hZGVkO1xuICB9XG5cbiAgQE9ic2VydmFibGVJbnB1dCgnX3JlbW90ZUxvYWRlZCcpXG4gIHJlYWRvbmx5IHJlbW90ZUxvYWRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbiB8IHVuZGVmaW5lZD47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRpb25zTGlzdDogQXJyYXk8UmVhZG9ubHk8VHJhbnNsYXRpb25zPj47XG4gIHByaXZhdGUgcmVtb3RlVHJhbnNsYXRpb25zTGlzdDogQXJyYXk8UmVhZG9ubHk8VHJhbnNsYXRpb25zPj47XG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogVHJhbnNsYXRlT3B0aW9ucztcblxuICBsb2NhbGU6IHN0cmluZztcblxuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgcmVhZG9ubHkgbG9jYWxlJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIGdldCBsb2NhbGVzKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubG9jYWxlcztcbiAgfVxuXG4gIGdldCBmYWxsYmFja0xvY2FsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZhbGxiYWNrTG9jYWxlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIEBJbmplY3QoVE9LRU5fQkFTRV9IUkVGKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgYmFzZUhyZWY6IHN0cmluZyxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoVFJBTlNMQVRFX09QVElPTlMpXG4gICAgb3B0aW9uczogVHJhbnNsYXRlT3B0aW9ucyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFRSQU5TTEFUSU9OUykgdHJhbnNsYXRpb25MaXN0OiBUcmFuc2xhdGlvbnNbXSxcbiAgKSB7XG4gICAgdGhpcy5sb2NhbGUgPSBvcHRpb25zPy5sb2NhbGUgfHwgbmF2aWdhdG9yLmxhbmd1YWdlO1xuICAgIHRoaXMub3B0aW9ucyA9IHtcbiAgICAgIGxvY2FsZXM6IFt0aGlzLmxvY2FsZV0sXG4gICAgICBmYWxsYmFja0xvY2FsZTogRkFMTEJBQ0tfTEFOR1VBR0UsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICB0aGlzLnRyYW5zbGF0aW9uc0xpc3QgPSBbXG4gICAgICBvcHRpb25zLnRyYW5zbGF0aW9ucyxcbiAgICAgIC4uLih0cmFuc2xhdGlvbkxpc3QgfHwgW10pLFxuICAgIF0uZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgaWYgKG9wdGlvbnMucmVtb3RlVXJsKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLnJlbW90ZVVybCkpIHtcbiAgICAgICAgb3B0aW9ucy5yZW1vdGVVcmwuZm9yRWFjaCh1cmwgPT4gdGhpcy5hZGRSZW1vdGVUcmFuc2xhdGlvbnModXJsKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFkZFJlbW90ZVRyYW5zbGF0aW9ucyhvcHRpb25zLnJlbW90ZVVybCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JCQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGtleSAtIOe/u+ivkWtleVxuICAgKiBAcGFyYW0gZGF0YSAtIOagueaNrue/u+ivkeS4iuS4i+aWh+aVsOaNruiOt+WPlue/u+ivkeWGheWuue+8jOe/u+ivkemhueS4jeWtmOWcqOebtOaOpei/lOWbniBrZXkg5paH5pysXG4gICAqIEBwYXJhbSBpZ25vcmVOb25FeGlzdCAtIOW8gOWPkeeOr+Wig+aYr+WQpuW/veinhuS4jeWtmOWcqOeahOe/u+ivkemhuVxuICAgKi9cbiAgZ2V0KGtleTogVHJhbnNsYXRlS2V5LCBkYXRhPzogdW5rbm93biwgaWdub3JlTm9uRXhpc3QgPSBmYWxzZSkge1xuICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gdGhpcy5nZXRSYXcoa2V5LCBpZ25vcmVOb25FeGlzdCk7XG4gICAgaWYgKGRhdGEgIT0gbnVsbCAmJiB0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIGRhdGEgPSBbZGF0YV07XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGVtcGxhdGUodHJhbnNsYXRpb24sIFRFTVBMQVRFX09QVElPTlMpKGRhdGEgYXMgb2JqZWN0KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlW2lzRGV2TW9kZSgpID8gJ2Vycm9yJyA6ICd3YXJuJ10oXG4gICAgICAgIGBUaGUgdHJhbnNsYXRpb24ga2V5ICcke2tleX0nIGlzIG1pc3NpbmcgdGhlIG5lY2Vzc2FyeSBwYXJhbWV0ZXJzLmAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDnm7TmjqXov5Tlm57nv7vor5HmlofmnKzmqKHmnb9cbiAgICogQHBhcmFtIGtleSAtIOe/u+ivkWtleVxuICAgKiBAcGFyYW0gaWdub3JlTm9uRXhpc3QgLSDlvIDlj5Hnjq/looPmmK/lkKblv73op4bkuI3lrZjlnKjnmoTnv7vor5HpoblcbiAgICovXG4gIGdldFJhdyhrZXk6IFRyYW5zbGF0ZUtleSwgaWdub3JlTm9uRXhpc3QgPSBmYWxzZSkge1xuICAgIHJldHVybiB0eXBlb2Yga2V5ID09PSAnc3RyaW5nJ1xuICAgICAgPyB0aGlzLl9nZXQoa2V5LCBpZ25vcmVOb25FeGlzdClcbiAgICAgIDogKHRoaXMuX2dldFZhbHVlKGtleSkgYXMgc3RyaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmoLnmja4gYGxvY2FsZXNgIOW+queOr+WIh+aNouW9k+WJjeWMuuWfn+iuvue9rlxuICAgKi9cbiAgdG9nZ2xlTG9jYWxlKCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vcHRpb25zLmxvY2FsZXMuaW5kZXhPZih0aGlzLmxvY2FsZSk7XG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2Bsb2NhbGVzYCBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgY29ycmVjdGx5Jyk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5leHRMb2NhbGUgPVxuICAgICAgdGhpcy5vcHRpb25zLmxvY2FsZXNbXG4gICAgICAgIGluZGV4ID09PSB0aGlzLm9wdGlvbnMubG9jYWxlcy5sZW5ndGggLSAxID8gMCA6IGluZGV4ICsgMVxuICAgICAgXTtcblxuICAgIGlmICghbmV4dExvY2FsZSB8fCB0aGlzLmxvY2FsZSA9PT0gbmV4dExvY2FsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2V0TG9jYWxlKG5leHRMb2NhbGUpO1xuICB9XG5cbiAgc2V0TG9jYWxlKGxvY2FsZTogc3RyaW5nKSB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTE9DQUxFX1NUT1JBR0UsIGxvY2FsZSk7XG4gICAgdGhpcy5sb2NhbGUgPSBsb2NhbGU7XG4gIH1cblxuICAvKipcbiAgICog5omL5Yqo5re75Yqg6K+t6KiA5YyFXG4gICAqL1xuICBhZGRUcmFuc2xhdGlvbnModHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbnMpIHtcbiAgICB0aGlzLnRyYW5zbGF0aW9uc0xpc3QudW5zaGlmdChPYmplY3QuZnJlZXplKHRyYW5zbGF0aW9ucykpO1xuICB9XG5cbiAgLyoqXG4gICAqIOaJi+WKqOa3u+WKoOivreiogOWMhVxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNvbmFyanMvY29nbml0aXZlLWNvbXBsZXhpdHlcbiAgYWRkUmVtb3RlVHJhbnNsYXRpb25zKHJlbW90ZVVybDogc3RyaW5nKSB7XG4gICAgaWYgKCFyZW1vdGVVcmwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fcmVtb3RlTG9hZGVkID0gZmFsc2U7XG4gICAgcmVtb3RlVXJsID0gaGVhZChyZW1vdGVVcmwuc3BsaXQoLyMvKSk7XG4gICAgY29uc3QgaXNBYnNvbHV0ZSA9IGlzQWJzb2x1dGVVcmwocmVtb3RlVXJsKTtcbiAgICBjb25zdCBpc0FwaUdhdGVXYXlSZXF1ZXN0ID0gcmVtb3RlVXJsLnN0YXJ0c1dpdGgoQVBJX0dBVEVXQVkpO1xuICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgbGV0IGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICAgICAgaWYgKCFpc0Fic29sdXRlICYmICghdGhpcy5iYXNlSHJlZiB8fCAhaXNBYnNvbHV0ZVVybCh0aGlzLmJhc2VIcmVmKSkpIHtcbiAgICAgICAgZXJyb3JNZXNzYWdlID0gJ2Fic29sdXRlIGJhc2UgaHJlZiBpcyByZXF1aXJlZCBmb3IgcmVsYXRpdmUgcmVtb3RlIHVybCc7XG4gICAgICB9IGVsc2UgaWYgKHJlbW90ZVVybC5zcGxpdCgnPycpWzBdLmluY2x1ZGVzKCcuLycpKSB7XG4gICAgICAgIGVycm9yTWVzc2FnZSA9XG4gICAgICAgICAgJ2RvIG5vdCB1c2UgYW55IGRvdCB3aXRoIHNsYXNoIGZvciByZWxhdGl2ZSB1cmwgd2hpY2ggc2hvdWxkIGFsd2F5cyBiYXNlIGZyb20gYmFzZSBocmVmJztcbiAgICAgIH1cbiAgICAgIGlmIChlcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWlzQWJzb2x1dGUgJiYgIWlzQXBpR2F0ZVdheVJlcXVlc3QpIHtcbiAgICAgIHJlbW90ZVVybCA9XG4gICAgICAgICh0aGlzLmJhc2VIcmVmLmVuZHNXaXRoKCcvJykgPyB0aGlzLmJhc2VIcmVmIDogdGhpcy5iYXNlSHJlZiArICcvJykgK1xuICAgICAgICByZW1vdGVVcmw7XG4gICAgfVxuICAgIChMT0NBTEVfUExBQ0VIT0xERVJfUkVHRVgudGVzdChyZW1vdGVVcmwpXG4gICAgICA/IGZvcmtKb2luKFxuICAgICAgICAgIHRoaXMub3B0aW9ucy5sb2NhbGVzLm1hcChsb2NhbGUgPT5cbiAgICAgICAgICAgIHRoaXMuZmV0Y2hUcmFuc2xhdGlvbihyZW1vdGVVcmwsIGxvY2FsZSkucGlwZShcbiAgICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5sb29zZSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgbG9vc2VMb2NhbGUgPSB0aGlzLl9nZXRMb29zZUxvY2FsZShsb2NhbGUpO1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBsb2NhbGUgIT09IGxvb3NlTG9jYWxlICYmXG4gICAgICAgICAgICAgICAgICAgICF0aGlzLm9wdGlvbnMubG9jYWxlcy5pbmNsdWRlcyhsb29zZUxvY2FsZSlcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mZXRjaFRyYW5zbGF0aW9uKHJlbW90ZVVybCwgbG9vc2VMb2NhbGUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gaXNEZXZNb2RlKCkgPyB0aHJvd0Vycm9yKCgpID0+IGVycm9yKSA6IEVNUFRZO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgZmlsdGVyKGlzUGxhaW5PYmplY3QpLFxuICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgKHRyYW5zbGF0aW9uOiBUcmFuc2xhdGlvbikgPT5cbiAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgIFtsb2NhbGVdOiB0cmFuc2xhdGlvbixcbiAgICAgICAgICAgICAgICAgIH0gYXMgVHJhbnNsYXRpb25zKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgKS5waXBlKG1hcChfID0+IF8ucmVkdWNlKE9iamVjdC5hc3NpZ24pKSlcbiAgICAgIDogdGhpcy5mZXRjaFRyYW5zbGF0aW9uKHJlbW90ZVVybCkucGlwZShcbiAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IChpc0Rldk1vZGUoKSA/IHRocm93RXJyb3IoKCkgPT4gZXJyb3IpIDogRU1QVFkpKSxcbiAgICAgICAgKVxuICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCQpLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiAodGhpcy5fcmVtb3RlTG9hZGVkID0gdHJ1ZSkpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShyZW1vdGVUcmFuc2xhdGlvbnMgPT4ge1xuICAgICAgICBpZiAoIXJlbW90ZVRyYW5zbGF0aW9ucykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMucmVtb3RlVHJhbnNsYXRpb25zTGlzdCkge1xuICAgICAgICAgIHRoaXMucmVtb3RlVHJhbnNsYXRpb25zTGlzdCA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVtb3RlVHJhbnNsYXRpb25zTGlzdC51bnNoaWZ0KE9iamVjdC5mcmVlemUocmVtb3RlVHJhbnNsYXRpb25zKSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiDku47ov5znqIsgdXJsIOaooeadv+WSjOWMuuWfn+iOt+WPlue/u+ivkeWMhVxuICAgKi9cbiAgZmV0Y2hUcmFuc2xhdGlvbihyZW1vdGVVcmw6IHN0cmluZyk6IE9ic2VydmFibGU8VHJhbnNsYXRpb25zPjtcbiAgZmV0Y2hUcmFuc2xhdGlvbihyZW1vdGVVcmw6IHN0cmluZywgbG9jYWxlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRyYW5zbGF0aW9uPjtcbiAgZmV0Y2hUcmFuc2xhdGlvbihyZW1vdGVVcmw6IHN0cmluZywgbG9jYWxlPzogc3RyaW5nKSB7XG4gICAgaWYgKGlzRGV2TW9kZSgpICYmIExPQ0FMRV9QTEFDRUhPTERFUl9SRUdFWC50ZXN0KHJlbW90ZVVybCkgJiYgIWxvY2FsZSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgJ2Bsb2NhbGVgIGlzIHJlcXVpcmVkIHNpbmUgdGhlIHByb3ZpZGVkIHJlbW90ZSB1cmwgY29udGFpbnMgbG9jYWxlIHBsYWNlaG9sZGVyJyxcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IGlzSlNPTiA9IHJlbW90ZVVybC5lbmRzV2l0aCgnLmpzb24nKTtcbiAgICBjb25zdCBpc0FwaUdhdGVXYXlSZXF1ZXN0ID0gcmVtb3RlVXJsLnN0YXJ0c1dpdGgoQVBJX0dBVEVXQVkpO1xuICAgIGNvbnN0IHVybCA9IGxvY2FsZVxuICAgICAgPyByZW1vdGVVcmwucmVwbGFjZShMT0NBTEVfUExBQ0VIT0xERVJfUkVHRVgsIGxvY2FsZSlcbiAgICAgIDogcmVtb3RlVXJsO1xuICAgIGNvbnN0IHJlc3BvbnNlVHlwZSA9IGlzSlNPTiA/ICdqc29uJyA6ICd0ZXh0JztcbiAgICBpZiAoaXNBcGlHYXRlV2F5UmVxdWVzdCkge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAucmVxdWVzdCgnR0VUJywgdXJsLCB7IHJlc3BvbnNlVHlwZSB9KVxuICAgICAgICAucGlwZShtYXAoYm9keSA9PiAoaXNKU09OID8gYm9keSA6IHBhcnNlKGJvZHkpKSkpO1xuICAgIH1cbiAgICByZXR1cm4gYWpheCh7XG4gICAgICB1cmwsXG4gICAgICByZXNwb25zZVR5cGUsXG4gICAgfSkucGlwZShcbiAgICAgIG1hcCgoeyByZXNwb25zZSB9KSA9PiAoaXNKU09OID8gcmVzcG9uc2UgOiBwYXJzZShyZXNwb25zZSBhcyBzdHJpbmcpKSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldExvb3NlTG9jYWxlKGxvY2FsZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGhlYWQobG9jYWxlLnNwbGl0KC9bXy1dLykpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VmFsdWUoXG4gICAgc291cmNlOiBUcmFuc2xhdGlvbixcbiAgICBsb2NhbGUgPSB0aGlzLmxvY2FsZSxcbiAgKTogVHJhbnNsYXRpb25WYWx1ZSB7XG4gICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IHZhbHVlID0gc291cmNlW2xvY2FsZV07XG4gICAgaWYgKHZhbHVlID09IG51bGwgJiYgdGhpcy5vcHRpb25zLmxvb3NlKSB7XG4gICAgICBjb25zdCBsb29zZUxvY2FsZSA9IHRoaXMuX2dldExvb3NlTG9jYWxlKGxvY2FsZSk7XG4gICAgICB2YWx1ZSA9XG4gICAgICAgIGxvY2FsZSA9PT0gbG9vc2VMb2NhbGVcbiAgICAgICAgICA/IE9iamVjdC5lbnRyaWVzKHNvdXJjZSkuZmluZChcbiAgICAgICAgICAgICAgKFtrZXldKSA9PiBsb2NhbGUgPT09IHRoaXMuX2dldExvb3NlTG9jYWxlKGtleSksXG4gICAgICAgICAgICApPy5bMV1cbiAgICAgICAgICA6IHNvdXJjZVtsb29zZUxvY2FsZV07XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PSBudWxsICYmIGxvY2FsZSAhPT0gdGhpcy5vcHRpb25zLmZhbGxiYWNrTG9jYWxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZ2V0VmFsdWUoc291cmNlLCB0aGlzLm9wdGlvbnMuZmFsbGJhY2tMb2NhbGUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF9nZXRXaXRoRmFsbGJhY2soXG4gICAga2V5OiBzdHJpbmcsXG4gICAgbG9jYWxlID0gdGhpcy5sb2NhbGUsXG4gICAgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbnMsXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgdmFsdWUgPSBnZXQodGhpcy5fZ2V0VmFsdWUodHJhbnNsYXRpb25zLCBsb2NhbGUpLCBrZXkpO1xuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgaXNEZXZNb2RlKCkgJiZcbiAgICAgICAgdHlwZW9mIGdldCh2YWx1ZSwgU3ltYm9sLnRvUHJpbWl0aXZlKSAhPT0gJ2Z1bmN0aW9uJ1xuICAgICAgKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgVGhlIHRyYW5zbGF0aW9uIGZvciBsb2NhbGU6IFxcYCR7bG9jYWxlfVxcYCBhbmQga2V5OlxcYCR7a2V5fVxcYCBpcyBhbiBvYmplY3QsIHdoaWNoIGNvdWxkIGJlIHVuZXhwZWN0ZWRgLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgfVxuICAgIGlmIChsb2NhbGUgIT09IHRoaXMub3B0aW9ucy5mYWxsYmFja0xvY2FsZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2dldFdpdGhGYWxsYmFjayhcbiAgICAgICAga2V5LFxuICAgICAgICB0aGlzLm9wdGlvbnMuZmFsbGJhY2tMb2NhbGUsXG4gICAgICAgIHRyYW5zbGF0aW9ucyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0QmFzZShcbiAgICBrZXk6IHN0cmluZyxcbiAgICBsb2NhbGUgPSB0aGlzLmxvY2FsZSxcbiAgICB0cmFuc2xhdGlvbnNMaXN0OiBUcmFuc2xhdGlvbnNbXSxcbiAgKSB7XG4gICAgaWYgKCF0cmFuc2xhdGlvbnNMaXN0IHx8IHRyYW5zbGF0aW9uc0xpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSB0cmFuc2xhdGlvbnNMaXN0Lmxlbmd0aDsgaSA+IDA7IGktLSkge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLl9nZXRXaXRoRmFsbGJhY2soa2V5LCBsb2NhbGUsIHRyYW5zbGF0aW9uc0xpc3RbaSAtIDFdKTtcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXQoa2V5OiBzdHJpbmcsIGlnbm9yZU5vbkV4aXN0ID0gZmFsc2UsIGxvY2FsZSA9IHRoaXMubG9jYWxlKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5fZ2V0QmFzZShrZXksIGxvY2FsZSwgdGhpcy5yZW1vdGVUcmFuc2xhdGlvbnNMaXN0KTtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgdmFsdWUgPSB0aGlzLl9nZXRCYXNlKGtleSwgbG9jYWxlLCB0aGlzLnRyYW5zbGF0aW9uc0xpc3QpO1xuICAgIH1cbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBpc0Rldk1vZGUoKSAmJlxuICAgICAgIWlnbm9yZU5vbkV4aXN0ICYmXG4gICAgICB0eXBlb2YgZ2V0KHZhbHVlLCBTeW1ib2wudG9QcmltaXRpdmUpICE9PSAnZnVuY3Rpb24nXG4gICAgKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBObyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgbG9jYWxlOiBcXGAke2xvY2FsZX1cXGAgYW5kIGtleTogXFxgJHtrZXl9XFxgLCB3aGljaCBjb3VsZCBiZSB1bmV4cGVjdGVkYCxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBrZXk7XG4gIH1cblxuICBwcml2YXRlIF9jb21wYXJlS2V5cyhcbiAgICBsb2NhbGU6IHN0cmluZyxcbiAgICB0cmFuc2xhdGlvbjogVHJhbnNsYXRpb24sXG4gICAgcHJldlRyYW5zbGF0aW9uOiBUcmFuc2xhdGlvbixcbiAgICBwYXRoOiBzdHJpbmdbXSA9IFtdLFxuICApIHtcbiAgICBpZiAodHJhbnNsYXRpb24gPT0gbnVsbCB8fCBwcmV2VHJhbnNsYXRpb24gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIE9iamVjdC5lbnRyaWVzKHRyYW5zbGF0aW9uKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByZXZUcmFuc2xhdGlvbiwga2V5KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByZXZWYWx1ZSA9IHByZXZUcmFuc2xhdGlvbltrZXldO1xuICAgICAgY29uc3QgdmFsdWVJc1BsYWluT2JqZWN0ID0gaXNQbGFpbk9iamVjdCh2YWx1ZSk7XG4gICAgICBjb25zdCBwcmV2VmFsdWVJc1BsYWluT2JqZWN0ID0gaXNQbGFpbk9iamVjdChwcmV2VmFsdWUpO1xuXG4gICAgICBpZiAodmFsdWVJc1BsYWluT2JqZWN0ICYmIHByZXZWYWx1ZUlzUGxhaW5PYmplY3QpIHtcbiAgICAgICAgdGhpcy5fY29tcGFyZUtleXMoXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHZhbHVlIGFzIFRyYW5zbGF0aW9uLFxuICAgICAgICAgIHByZXZWYWx1ZSBhcyBUcmFuc2xhdGlvbixcbiAgICAgICAgICBbLi4ucGF0aCwga2V5XSxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXZhbHVlSXNQbGFpbk9iamVjdCAmJiAhcHJldlZhbHVlSXNQbGFpbk9iamVjdCkge1xuICAgICAgICBjb25zdCBvdXRwdXRQYXRoID0gWy4uLnBhdGgsIGtleV0uam9pbignIC0+ICcpO1xuICAgICAgICBpZiAodmFsdWUgPT09IHByZXZWYWx1ZSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBUaGUgY3VzdG9taXplZCB0cmFuc2xhdGlvbiBmb3IgbG9jYWxlOiBcXGAke2xvY2FsZX1cXGAgYW5kIHBhdGg6IFxcYCR7b3V0cHV0UGF0aH1cXGAgaXMgZHVwbGljYXRlZCB3aXRoIHRoZSBvdGhlciB0cmFuc2xhdGlvbiwgcGxlYXNlIHJlbW92ZSBpdCBpbiB5b3VyIHRyYW5zbGF0aW9uIGZpbGUuYCxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBUd28ga2V5cyB0aGF0IHRoZSBsb2NhbGUgaXMgXFxgJHtsb2NhbGV9XFxgIGFuZCB0aGUgcGF0aCBpcyBcXGAke291dHB1dFBhdGh9XFxgIGFyZSBzYW1lLCAgYnV0IHRoZWlyIHZhbHVlcyBhcmUgbm90IGVxdWFsICwgcGxlYXNlIHJlbW92ZSBvbmUgb2YgdGhlbSBvciBjaGFuZ2Ugb25lIG9mIHRoZSBrZXlzLmAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -20,8 +20,13 @@ export class PluginWindowChannelService extends BaseWindowChannel {
20
20
  this.theme.setThemeMode(theme);
21
21
  }
22
22
  });
23
- this.listen(MessageType.LangChange, lang => {
24
- this.translate.setLocale(lang);
23
+ this.listen(MessageType.LangChange, hostLocale => {
24
+ const locale = this.translate.locales.includes(hostLocale)
25
+ ? hostLocale
26
+ : this.translate.fallbackLocale;
27
+ if (this.translate.locale !== locale) {
28
+ this.translate.setLocale(locale);
29
+ }
25
30
  });
26
31
  this.send(MessageType.PluginInitialized);
27
32
  return removeListener;
@@ -35,4 +40,4 @@ export class PluginWindowChannelService extends BaseWindowChannel {
35
40
  providedIn: 'root',
36
41
  }]
37
42
  }], function () { return []; }, null); })();
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLXdpbmRvdy1jaGFubmVsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvd2luZG93LWNoYW5uZWwvcGx1Z2luLXdpbmRvdy1jaGFubmVsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFhLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUt0QyxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsaUJBQWlCO0lBSS9EO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFKTyxVQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdCLGNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUtwRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssTUFBTSxFQUFFO1lBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVrQixJQUFJLENBQUMsTUFBYztRQUNwQyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUMzQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQWtCLENBQUMsQ0FBQzthQUM3QztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV6QyxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDOzJGQTVCVSwwQkFBMEI7dUVBQTFCLDBCQUEwQixXQUExQiwwQkFBMEIsbUJBRnpCLE1BQU07O3VGQUVQLDBCQUEwQjtjQUh0QyxVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaGVtZU1vZGUsIFRoZW1lU2VydmljZSB9IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi90cmFuc2xhdGUvcHVibGljLWFwaSc7XG5cbmltcG9ydCB7IEJhc2VXaW5kb3dDaGFubmVsIH0gZnJvbSAnLi9iYXNlLXdpbmRvdy1jaGFubmVsJztcbmltcG9ydCB7IE1lc3NhZ2VUeXBlIH0gZnJvbSAnLi91dGlscyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQbHVnaW5XaW5kb3dDaGFubmVsU2VydmljZSBleHRlbmRzIEJhc2VXaW5kb3dDaGFubmVsIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0aGVtZSA9IGluamVjdChUaGVtZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgaWYgKHdpbmRvdy5wYXJlbnQgIT09IHdpbmRvdykge1xuICAgICAgdGhpcy5pbml0KHdpbmRvdy5wYXJlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBpbml0KHdpbmRvdzogV2luZG93KSB7XG4gICAgY29uc3QgcmVtb3ZlTGlzdGVuZXIgPSBzdXBlci5pbml0KHdpbmRvdyk7XG5cbiAgICB0aGlzLmxpc3RlbihNZXNzYWdlVHlwZS5UaGVtZUNoYW5nZSwgdGhlbWUgPT4ge1xuICAgICAgaWYgKFsnc3lzdGVtJywgJ2xpZ2h0JywgJ2RhcmsnXS5pbmNsdWRlcyh0aGVtZSkpIHtcbiAgICAgICAgdGhpcy50aGVtZS5zZXRUaGVtZU1vZGUodGhlbWUgYXMgVGhlbWVNb2RlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMubGlzdGVuKE1lc3NhZ2VUeXBlLkxhbmdDaGFuZ2UsIGxhbmcgPT4ge1xuICAgICAgdGhpcy50cmFuc2xhdGUuc2V0TG9jYWxlKGxhbmcpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZW5kKE1lc3NhZ2VUeXBlLlBsdWdpbkluaXRpYWxpemVkKTtcblxuICAgIHJldHVybiByZW1vdmVMaXN0ZW5lcjtcbiAgfVxufVxuIl19
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLXdpbmRvdy1jaGFubmVsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvd2luZG93LWNoYW5uZWwvcGx1Z2luLXdpbmRvdy1jaGFubmVsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFhLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUt0QyxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsaUJBQWlCO0lBSS9EO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFKTyxVQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdCLGNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUtwRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssTUFBTSxFQUFFO1lBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVrQixJQUFJLENBQUMsTUFBYztRQUNwQyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUMzQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQWtCLENBQUMsQ0FBQzthQUM3QztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxFQUFFO1lBQy9DLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7Z0JBQ3hELENBQUMsQ0FBQyxVQUFVO2dCQUNaLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQztZQUVsQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLE1BQU0sRUFBRTtnQkFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDbEM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFekMsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQzsyRkFsQ1UsMEJBQTBCO3VFQUExQiwwQkFBMEIsV0FBMUIsMEJBQTBCLG1CQUZ6QixNQUFNOzt1RkFFUCwwQkFBMEI7Y0FIdEMsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGhlbWVNb2RlLCBUaGVtZVNlcnZpY2UgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vdHJhbnNsYXRlL3B1YmxpYy1hcGknO1xuXG5pbXBvcnQgeyBCYXNlV2luZG93Q2hhbm5lbCB9IGZyb20gJy4vYmFzZS13aW5kb3ctY2hhbm5lbCc7XG5pbXBvcnQgeyBNZXNzYWdlVHlwZSB9IGZyb20gJy4vdXRpbHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUGx1Z2luV2luZG93Q2hhbm5lbFNlcnZpY2UgZXh0ZW5kcyBCYXNlV2luZG93Q2hhbm5lbCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGhlbWUgPSBpbmplY3QoVGhlbWVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmICh3aW5kb3cucGFyZW50ICE9PSB3aW5kb3cpIHtcbiAgICAgIHRoaXMuaW5pdCh3aW5kb3cucGFyZW50KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaW5pdCh3aW5kb3c6IFdpbmRvdykge1xuICAgIGNvbnN0IHJlbW92ZUxpc3RlbmVyID0gc3VwZXIuaW5pdCh3aW5kb3cpO1xuXG4gICAgdGhpcy5saXN0ZW4oTWVzc2FnZVR5cGUuVGhlbWVDaGFuZ2UsIHRoZW1lID0+IHtcbiAgICAgIGlmIChbJ3N5c3RlbScsICdsaWdodCcsICdkYXJrJ10uaW5jbHVkZXModGhlbWUpKSB7XG4gICAgICAgIHRoaXMudGhlbWUuc2V0VGhlbWVNb2RlKHRoZW1lIGFzIFRoZW1lTW9kZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmxpc3RlbihNZXNzYWdlVHlwZS5MYW5nQ2hhbmdlLCBob3N0TG9jYWxlID0+IHtcbiAgICAgIGNvbnN0IGxvY2FsZSA9IHRoaXMudHJhbnNsYXRlLmxvY2FsZXMuaW5jbHVkZXMoaG9zdExvY2FsZSlcbiAgICAgICAgPyBob3N0TG9jYWxlXG4gICAgICAgIDogdGhpcy50cmFuc2xhdGUuZmFsbGJhY2tMb2NhbGU7XG5cbiAgICAgIGlmICh0aGlzLnRyYW5zbGF0ZS5sb2NhbGUgIT09IGxvY2FsZSkge1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5zZXRMb2NhbGUobG9jYWxlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc2VuZChNZXNzYWdlVHlwZS5QbHVnaW5Jbml0aWFsaXplZCk7XG5cbiAgICByZXR1cm4gcmVtb3ZlTGlzdGVuZXI7XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alauda-fe/common",
3
- "version": "1.3.0-beta.0",
3
+ "version": "1.3.0-beta.2",
4
4
  "description": "Alauda frontend team common codes.",
5
5
  "author": "Alauda Frontend",
6
6
  "license": "MIT",
@@ -1,5 +1,6 @@
1
1
  import { OnInit } from '@angular/core';
2
2
  import { Router } from '@angular/router';
3
+ import { AuthorizationStateService } from '../../../../authorization/public-api';
3
4
  import { StringMap, ProductEntry } from '../../../../core/public-api';
4
5
  import { K8sPermissionService } from '../../../../permission/k8s-permission.service';
5
6
  import { ProductEntryName } from '../context.service';
@@ -12,6 +13,7 @@ export declare class ProductSelectComponent implements OnInit {
12
13
  private readonly router;
13
14
  private readonly k8sPermission;
14
15
  private readonly productSelectService;
16
+ private readonly authState;
15
17
  platformPath: string;
16
18
  current?: ProductEntryName;
17
19
  title?: string;
@@ -21,7 +23,7 @@ export declare class ProductSelectComponent implements OnInit {
21
23
  portalProduct$: import("rxjs").Observable<ProductEntry>;
22
24
  disabled$: import("rxjs").Observable<boolean>;
23
25
  isPortal: boolean;
24
- constructor(store: CommonLayoutStoreService, router: Router, k8sPermission: K8sPermissionService, productSelectService: ProductSelectService);
26
+ constructor(store: CommonLayoutStoreService, router: Router, k8sPermission: K8sPermissionService, productSelectService: ProductSelectService, authState: AuthorizationStateService);
25
27
  ngOnInit(): void;
26
28
  jump(entrypoint: string, ssoEnabled: boolean, target?: string): void;
27
29
  navigateToPortal(event: MouseEvent): void;
@@ -687,3 +687,23 @@
687
687
  }
688
688
  }
689
689
  }
690
+
691
+ @mixin highlight-field-item() {
692
+ :host {
693
+ acl-field-set-item {
694
+ ::ng-deep {
695
+ .field-set-item__value,
696
+ acl-status-icon {
697
+ color: use-rgb(n-1) !important;
698
+ font-weight: 500 !important;
699
+ }
700
+
701
+ label,
702
+ .field-set-item__label:after {
703
+ color: use-rgb(n-2) !important;
704
+ font-weight: 400 !important;
705
+ }
706
+ }
707
+ }
708
+ }
709
+ }
@@ -19,6 +19,8 @@ export declare class TranslateService implements OnDestroy {
19
19
  private readonly options;
20
20
  locale: string;
21
21
  readonly locale$: Observable<string>;
22
+ get locales(): string[];
23
+ get fallbackLocale(): string;
22
24
  constructor(http: HttpClient, baseHref: string, options: TranslateOptions, translationList: Translations[]);
23
25
  ngOnDestroy(): void;
24
26
  /**