@posiwise/common-services 0.1.76 → 0.1.77
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/index.mjs +2 -2
- package/esm2022/lib/auth.service.mjs +33 -22
- package/esm2022/lib/brain.service.mjs +1 -1
- package/esm2022/lib/permission.service.mjs +158 -3
- package/esm2022/lib/secure-token-storage.service.mjs +264 -0
- package/esm2022/lib/sentry.service.mjs +2 -2
- package/fesm2022/posiwise-common-services.mjs +472 -81
- package/fesm2022/posiwise-common-services.mjs.map +1 -1
- package/index.d.ts +1 -1
- package/lib/auth.service.d.ts +8 -2
- package/lib/brain.service.d.ts +1 -1
- package/lib/permission.service.d.ts +27 -0
- package/lib/secure-token-storage.service.d.ts +94 -0
- package/package.json +1 -1
- package/esm2022/lib/jquery.service.mjs +0 -35
- package/lib/jquery.service.d.ts +0 -14
package/esm2022/index.mjs
CHANGED
|
@@ -10,6 +10,7 @@ export * from './lib/permission.service';
|
|
|
10
10
|
export * from './lib/toast.service';
|
|
11
11
|
export * from './lib/auth.service';
|
|
12
12
|
export * from './lib/local-storage.service';
|
|
13
|
+
export * from './lib/secure-token-storage.service';
|
|
13
14
|
export * from './lib/integrations-api-http.service';
|
|
14
15
|
export * from './lib/link-loader.service';
|
|
15
16
|
export * from './lib/user.service';
|
|
@@ -42,5 +43,4 @@ export * from './lib/logo-caching.service';
|
|
|
42
43
|
export * from './lib/hopscotch.service';
|
|
43
44
|
export * from './lib/brain.service';
|
|
44
45
|
export * from './lib/brain-api-http.service';
|
|
45
|
-
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2NvbW1vbi1zZXJ2aWNlcy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgcHctc2VydmljZXNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ29vZ2xlLWFuYWx5dGljcy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NjcmlwdC1sb2FkZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXNlLWh0dHAuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21tb24tc2VydmljZXMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21haW4tYXBpLWh0dHAuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wZXJtaXNzaW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9hc3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVncmF0aW9ucy1hcGktaHR0cC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xpbmstbG9hZGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXNlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2N1c3RvbS1wcmVsb2FkaW5nLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWItdGVzdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dlby5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb2ZpbGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdWJzY3JpcHRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcm9kdWN0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmFsaWRhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm0taGVscGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWhveS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbW1vbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGUtZm9ybWF0dGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJpbWVOZ0hlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWcuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90aXBzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvd2luZG93LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ3JvdXAuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9xdWFsaWZpY2F0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGFzaGJvYXJkLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWFpbGJveC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NvY2tldC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VmZmVjdHMvdXNlci5lZmZlY3RzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGEuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9udW1iZXItcGlja2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VudHJ5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9nby1jYWNoaW5nLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaG9wc2NvdGNoLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnJhaW4uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9icmFpbi1hcGktaHR0cC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2pxdWVyeS5zZXJ2aWNlJztcbiJdfQ==
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2NvbW1vbi1zZXJ2aWNlcy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgcHctc2VydmljZXNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ29vZ2xlLWFuYWx5dGljcy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NjcmlwdC1sb2FkZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXNlLWh0dHAuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21tb24tc2VydmljZXMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21haW4tYXBpLWh0dHAuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wZXJtaXNzaW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9hc3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlY3VyZS10b2tlbi1zdG9yYWdlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZWdyYXRpb25zLWFwaS1odHRwLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbGluay1sb2FkZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91c2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY3VzdG9tLXByZWxvYWRpbmcuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hYi10ZXN0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2VvLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJvZmlsZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N1YnNjcmlwdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb2R1Y3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92YWxpZGF0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybS1oZWxwZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9haG95LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tbW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGF0ZS1mb3JtYXR0ZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcmltZU5nSGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RpcHMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi93aW5kb3cuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ncm91cC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3F1YWxpZmljYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXNoYm9hcmQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYWlsYm94LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc29ja2V0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZWZmZWN0cy91c2VyLmVmZmVjdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGF0YS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL251bWJlci1waWNrZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZW50cnkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2dvLWNhY2hpbmcuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ob3BzY290Y2guc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9icmFpbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JyYWluLWFwaS1odHRwLnNlcnZpY2UnO1xuIl19
|
|
@@ -3,26 +3,29 @@ import { HttpHeaders } from '@angular/common/http';
|
|
|
3
3
|
import { Inject, Injectable } from '@angular/core';
|
|
4
4
|
import { Router } from '@angular/router';
|
|
5
5
|
import { AppConfigService } from '@posiwise/app-config-service';
|
|
6
|
-
import { CAPTCHA_VALIDATION_PATH, NEWSLETTER_CONFIRMATION_PATH, NEWSLETTER_UNSUBSCRIBE_PATH, SOCIAL_LOGIN_PATH, TOKEN_HEADER_KEY, TOKEN_KEY
|
|
6
|
+
import { CAPTCHA_VALIDATION_PATH, NEWSLETTER_CONFIRMATION_PATH, NEWSLETTER_UNSUBSCRIBE_PATH, SOCIAL_LOGIN_PATH, TOKEN_HEADER_KEY, TOKEN_KEY } from '@posiwise/common-utilities';
|
|
7
7
|
import { BehaviorSubject } from 'rxjs';
|
|
8
8
|
import { map, switchMap } from 'rxjs/operators';
|
|
9
9
|
import swal from 'sweetalert2';
|
|
10
10
|
import { IntegrationsApiHttpService } from './integrations-api-http.service';
|
|
11
11
|
import { LocalStorage } from './local-storage.service';
|
|
12
12
|
import { MainApiHttpService } from './main-api-http.service';
|
|
13
|
+
import { SecureTokenStorageService } from './secure-token-storage.service';
|
|
13
14
|
import { CustomToastService } from './toast.service';
|
|
14
15
|
import { UserService } from './user.service';
|
|
15
16
|
import * as i0 from "@angular/core";
|
|
16
17
|
import * as i1 from "./local-storage.service";
|
|
17
|
-
import * as i2 from "
|
|
18
|
-
import * as i3 from "
|
|
19
|
-
import * as i4 from "./
|
|
20
|
-
import * as i5 from "./
|
|
21
|
-
import * as i6 from "
|
|
22
|
-
import * as i7 from "
|
|
18
|
+
import * as i2 from "./secure-token-storage.service";
|
|
19
|
+
import * as i3 from "@angular/router";
|
|
20
|
+
import * as i4 from "./main-api-http.service";
|
|
21
|
+
import * as i5 from "./user.service";
|
|
22
|
+
import * as i6 from "./toast.service";
|
|
23
|
+
import * as i7 from "@posiwise/app-config-service";
|
|
24
|
+
import * as i8 from "./integrations-api-http.service";
|
|
23
25
|
export class AuthService {
|
|
24
|
-
constructor(localStorage, router, http, userService, toastr, appConfigService, integrationsApi, document) {
|
|
26
|
+
constructor(localStorage, secureTokenStorage, router, http, userService, toastr, appConfigService, integrationsApi, document) {
|
|
25
27
|
this.localStorage = localStorage;
|
|
28
|
+
this.secureTokenStorage = secureTokenStorage;
|
|
26
29
|
this.router = router;
|
|
27
30
|
this.http = http;
|
|
28
31
|
this.userService = userService;
|
|
@@ -39,20 +42,20 @@ export class AuthService {
|
|
|
39
42
|
this.setHeaderKey();
|
|
40
43
|
}
|
|
41
44
|
getToken() {
|
|
42
|
-
if (this.
|
|
45
|
+
if (this.secureTokenStorage.getImpersonatedToken()) {
|
|
43
46
|
this.isUserPersonated = true;
|
|
44
|
-
return this.
|
|
47
|
+
return this.secureTokenStorage.getImpersonatedToken();
|
|
45
48
|
}
|
|
46
|
-
if (this.
|
|
49
|
+
if (this.secureTokenStorage.getPhonegapToken()) {
|
|
47
50
|
this.isUserPersonated = true;
|
|
48
|
-
return this.
|
|
51
|
+
return this.secureTokenStorage.getPhonegapToken();
|
|
49
52
|
}
|
|
50
53
|
this.isUserPersonated = false;
|
|
51
|
-
return this.
|
|
54
|
+
return this.secureTokenStorage.getToken();
|
|
52
55
|
}
|
|
53
56
|
getImpersonatedToken() {
|
|
54
|
-
return (this.
|
|
55
|
-
this.
|
|
57
|
+
return (this.secureTokenStorage.getImpersonatedToken() ||
|
|
58
|
+
this.secureTokenStorage.getPhonegapToken());
|
|
56
59
|
}
|
|
57
60
|
setHeaderKey() {
|
|
58
61
|
// Mobile: app
|
|
@@ -141,7 +144,7 @@ export class AuthService {
|
|
|
141
144
|
return this.http.post('session', formData);
|
|
142
145
|
}
|
|
143
146
|
storeToken(token) {
|
|
144
|
-
return this.
|
|
147
|
+
return this.secureTokenStorage.storeToken(token);
|
|
145
148
|
}
|
|
146
149
|
storePlatform(plat) {
|
|
147
150
|
return this.localStorage.setItem$('platform', plat);
|
|
@@ -155,10 +158,18 @@ export class AuthService {
|
|
|
155
158
|
phonegap: true
|
|
156
159
|
};
|
|
157
160
|
}
|
|
161
|
+
// Clear all tokens securely
|
|
162
|
+
this.secureTokenStorage.clearTokens().subscribe();
|
|
158
163
|
return this.http.delete('session', options);
|
|
159
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Clear all authentication tokens
|
|
167
|
+
*/
|
|
168
|
+
clearTokens() {
|
|
169
|
+
return this.secureTokenStorage.clearTokens();
|
|
170
|
+
}
|
|
160
171
|
getToken$() {
|
|
161
|
-
return this.
|
|
172
|
+
return this.secureTokenStorage.getToken$();
|
|
162
173
|
}
|
|
163
174
|
getNewsletterSubscription(token) {
|
|
164
175
|
return this.http.get(`${NEWSLETTER_CONFIRMATION_PATH}?token=${token}`);
|
|
@@ -239,10 +250,10 @@ export class AuthService {
|
|
|
239
250
|
}
|
|
240
251
|
return this.http.post('/session/impersonate_user', data).pipe(map(x => {
|
|
241
252
|
if (x?.auth_token) {
|
|
242
|
-
this.
|
|
253
|
+
this.secureTokenStorage.storeImpersonatedToken(x.auth_token);
|
|
243
254
|
}
|
|
244
255
|
if (x?.phonegap_token) {
|
|
245
|
-
this.
|
|
256
|
+
this.secureTokenStorage.storePhonegapToken(x.phonegap_token);
|
|
246
257
|
}
|
|
247
258
|
return x;
|
|
248
259
|
}));
|
|
@@ -293,13 +304,13 @@ export class AuthService {
|
|
|
293
304
|
}
|
|
294
305
|
});
|
|
295
306
|
}
|
|
296
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AuthService, deps: [{ token: i1.LocalStorage }, { token: i2.
|
|
307
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AuthService, deps: [{ token: i1.LocalStorage }, { token: i2.SecureTokenStorageService }, { token: i3.Router }, { token: i4.MainApiHttpService }, { token: i5.UserService }, { token: i6.CustomToastService }, { token: i7.AppConfigService }, { token: i8.IntegrationsApiHttpService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
297
308
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AuthService }); }
|
|
298
309
|
}
|
|
299
310
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AuthService, decorators: [{
|
|
300
311
|
type: Injectable
|
|
301
|
-
}], ctorParameters: () => [{ type: i1.LocalStorage }, { type: i2.
|
|
312
|
+
}], ctorParameters: () => [{ type: i1.LocalStorage }, { type: i2.SecureTokenStorageService }, { type: i3.Router }, { type: i4.MainApiHttpService }, { type: i5.UserService }, { type: i6.CustomToastService }, { type: i7.AppConfigService }, { type: i8.IntegrationsApiHttpService }, { type: Document, decorators: [{
|
|
302
313
|
type: Inject,
|
|
303
314
|
args: [DOCUMENT]
|
|
304
315
|
}] }] });
|
|
305
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24tc2VydmljZXMvc3JjL2xpYi9hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUNILHVCQUF1QixFQUN2Qiw0QkFBNEIsRUFDNUIsMkJBQTJCLEVBQzNCLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULGdDQUFnQyxFQUNoQyx1QkFBdUIsRUFDMUIsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFDO0FBRy9CLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQUc3QyxNQUFNLE9BQU8sV0FBVztJQVlwQixZQUNxQixZQUEw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QUMsQ0FBQztJQUNQLENBQUM7K0dBelZRLFdBQVcsNk9Bb0JSLFFBQVE7bUhBcEJYLFdBQVc7OzRGQUFYLFdBQVc7a0JBRHZCLFVBQVU7OzBCQXFCRixNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtY29uZmlnLXNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgICBDQVBUQ0hBX1ZBTElEQVRJT05fUEFUSCxcbiAgICBORVdTTEVUVEVSX0NPTkZJUk1BVElPTl9QQVRILFxuICAgIE5FV1NMRVRURVJfVU5TVUJTQ1JJQkVfUEFUSCxcbiAgICBTT0NJQUxfTE9HSU5fUEFUSCxcbiAgICBUT0tFTl9IRUFERVJfS0VZLFxuICAgIFRPS0VOX0tFWSxcbiAgICBVU0VSX0lNUEVSU09OQVRFRF9QSE9ORUdBUF9UT0tFTixcbiAgICBVU0VSX0lNUEVSU09OQVRFRF9UT0tFTlxufSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgc3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XG5cbmltcG9ydCB7IFNpZ25VcFZhbHVlcyB9IGZyb20gJy4vY29tbW9uLXNlcnZpY2VzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJbnRlZ3JhdGlvbnNBcGlIdHRwU2VydmljZSB9IGZyb20gJy4vaW50ZWdyYXRpb25zLWFwaS1odHRwLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlIH0gZnJvbSAnLi9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFpbkFwaUh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9tYWluLWFwaS1odHRwLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3VzdG9tVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHR3aXR0ZXJFbmRwb2ludCA9ICcvdHdpdHRlcic7XG5cbiAgICBhdXRoX3Rva2VuOiBzdHJpbmc7XG4gICAgaGVhZGVyX2tleSA9ICdicm93c2VyJztcbiAgICBwbGF0Zm9ybSA9ICcnO1xuXG4gICAgcGxhdGZvcm0kID0gdGhpcy5wbGF0Zm9ybVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBpc1VzZXJQZXJzb25hdGVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxTdG9yYWdlOiBMb2NhbFN0b3JhZ2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogTWFpbkFwaUh0dHBTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdHI6IEN1c3RvbVRvYXN0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhcHBDb25maWdTZXJ2aWNlOiBBcHBDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGludGVncmF0aW9uc0FwaTogSW50ZWdyYXRpb25zQXBpSHR0cFNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQ6IERvY3VtZW50XG4gICAgKSB7XG4gICAgICAgIC8vIFNldCBIZWFkZXIgS2V5XG4gICAgICAgIHRoaXMuc2V0SGVhZGVyS2V5KCk7XG4gICAgfVxuXG4gICAgZ2V0VG9rZW4oKSB7XG4gICAgICAgIGlmICh0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKFVTRVJfSU1QRVJTT05BVEVEX1RPS0VOKSkge1xuICAgICAgICAgICAgdGhpcy5pc1VzZXJQZXJzb25hdGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0oVVNFUl9JTVBFUlNPTkFURURfVE9LRU4pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKFVTRVJfSU1QRVJTT05BVEVEX1BIT05FR0FQX1RPS0VOKSkge1xuICAgICAgICAgICAgdGhpcy5pc1VzZXJQZXJzb25hdGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0oVVNFUl9JTVBFUlNPTkFURURfUEhPTkVHQVBfVE9LRU4pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc1VzZXJQZXJzb25hdGVkID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0oVE9LRU5fS0VZKTtcbiAgICB9XG5cbiAgICBnZXRJbXBlcnNvbmF0ZWRUb2tlbigpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0oVVNFUl9JTVBFUlNPTkFURURfVE9LRU4pIHx8XG4gICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKFVTRVJfSU1QRVJTT05BVEVEX1BIT05FR0FQX1RPS0VOKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHNldEhlYWRlcktleSgpIHtcbiAgICAgICAgLy8gTW9iaWxlOiBhcHBcbiAgICAgICAgLy8gV2Vic2l0ZTogYnJvd3NlclxuICAgICAgICB0aGlzLmdldEhlYWRlcktleSgpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyX2tleSA9ICdicm93c2VyJztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybVN1YmplY3QubmV4dCgnYnJvd3NlcicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnYXBwJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlcl9rZXkgPSBrZXk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGxhdGZvcm1TdWJqZWN0Lm5leHQoa2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmhlYWRlcl9rZXkgPSAnYnJvd3Nlcic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNpZ25VcFVzZXIodmFsdWVzOiBTaWduVXBWYWx1ZXMpIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdjb25maXJtYXRpb25fcGF0aCcsIHZhbHVlcy5jb25maXJtYXRpb25fcGF0aCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnY29udGFjdF9uYW1lJywgdmFsdWVzLmNvbnRhY3RfbmFtZSk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZW1haWwnLCB2YWx1ZXMuZW1haWwpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3VzZXJfc2lnbnVwX3VybCcsIHZhbHVlcy51c2VyX3NpZ251cF91cmwpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ29yZ2FuaXNhdGlvbicsIHZhbHVlcy5vcmdhbmlzYXRpb24pO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3Byb2R1Y3RfaWQnLCB2YWx1ZXMucHJvZHVjdF9pZC50b1N0cmluZygpKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCd1bml0cycsIHZhbHVlcy51bml0cy50b1N0cmluZygpKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdzdHJpcGVfdG9rZW4nLCB2YWx1ZXMuc3RyaXBlX3Rva2VuKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdtYXN0ZXJfc3Vic2NyaXB0aW9uX2lkJywgdmFsdWVzLm1hc3Rlcl9zdWJzY3JpcHRpb25faWQudG9TdHJpbmcoKSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KCdzaWdudXBzJywgZm9ybURhdGEpO1xuICAgIH1cblxuICAgIHRyaWFsU2lnblVwKGRhdGE6IG9iamVjdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoJ3NpZ251cHMvdHJpYWxfc2lnbnVwJywgZGF0YSk7XG4gICAgfVxuXG4gICAgdmFsaWRhdGVFbWFpbChlbWFpbDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgIGVtYWlsXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXRXaXRoUGFyYW1zKCd1c2Vycy92YWxpZGF0ZV9lbWFpbCcsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgZm9yZ290UGFzc3dvcmQoZW1haWw6IHN0cmluZywgcmVzZXRfcGF0aDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgIGVtYWlsLFxuICAgICAgICAgICAgcmVzZXRfcGF0aFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0V2l0aFBhcmFtcygncGFzc3dvcmQnLCBwYXJhbXMpO1xuICAgIH1cblxuICAgIHJlc2V0UGFzc3dvcmQocGFzc3dvcmQ6IHN0cmluZywgY29uZmlybV9wYXNzd29yZDogc3RyaW5nLCBwYXNzd29yZF9yZXNldF90b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncGFzc3dvcmQnLCBwYXNzd29yZCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncGFzc3dvcmRfY29uZmlybWF0aW9uJywgY29uZmlybV9wYXNzd29yZCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncmVzZXRfcGFzc3dvcmRfdG9rZW4nLCBwYXNzd29yZF9yZXNldF90b2tlbik7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoJ3Bhc3N3b3JkJywgZm9ybURhdGEpO1xuICAgIH1cblxuICAgIGhlYWRlcigpIHtcbiAgICAgICAgaWYgKHRoaXMuaGVhZGVyX2tleSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICAgICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgICAgICAgICBbVE9LRU5fSEVBREVSX0tFWV06IGJ0b2EodGhpcy5hdXRoX3Rva2VuKVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBoZWFkZXJzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgICAgJ1gtUGhvbmVnYXAtVG9rZW4nOiBidG9hKHRoaXMuYXV0aF90b2tlbilcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGhlYWRlcnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRIZWFkZXJLZXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJCgncGxhdGZvcm0nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBsYXRmb3JtKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSQoJ3BsYXRmb3JtJyk7XG4gICAgfVxuXG4gICAgc2lnbkluVXNlcihlbWFpbDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZW1haWwnLCBlbWFpbCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncGFzc3dvcmQnLCBwYXNzd29yZCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KCdzZXNzaW9uJywgZm9ybURhdGEpO1xuICAgIH1cblxuICAgIHNpZ25JblVzZXJXaXRoMkZhKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIGdvb2dsZV9jb2RlKSB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZW1haWwnLCBlbWFpbCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncGFzc3dvcmQnLCBwYXNzd29yZCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZ29vZ2xlX2NvZGUnLCBnb29nbGVfY29kZSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KCdzZXNzaW9uJywgZm9ybURhdGEpO1xuICAgIH1cblxuICAgIHN0b3JlVG9rZW4odG9rZW46IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSQoVE9LRU5fS0VZLCB0b2tlbik7XG4gICAgfVxuXG4gICAgc3RvcmVQbGF0Zm9ybShwbGF0OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxTdG9yYWdlLnNldEl0ZW0kKCdwbGF0Zm9ybScsIHBsYXQpO1xuICAgIH1cblxuICAgIGxvZ291dCgpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHRoaXMuaGVhZGVyKClcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5oZWFkZXJfa2V5ICE9PSAnYnJvd3NlcicpIHtcbiAgICAgICAgICAgIG9wdGlvbnNbJ3BhcmFtcyddID0ge1xuICAgICAgICAgICAgICAgIHBob25lZ2FwOiB0cnVlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoJ3Nlc3Npb24nLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBnZXRUb2tlbiQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJChUT0tFTl9LRVkpO1xuICAgIH1cblxuICAgIGdldE5ld3NsZXR0ZXJTdWJzY3JpcHRpb24odG9rZW46IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHtORVdTTEVUVEVSX0NPTkZJUk1BVElPTl9QQVRIfT90b2tlbj0ke3Rva2VufWApO1xuICAgIH1cblxuICAgIHVuc3Vic2NyaWJlTmV3c2xldHRlcih0b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke05FV1NMRVRURVJfVU5TVUJTQ1JJQkVfUEFUSH0/dG9rZW49JHt0b2tlbn1gKTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZVJlQ2FwdGNoYSh0b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke0NBUFRDSEFfVkFMSURBVElPTl9QQVRIfT0ke3Rva2VufWApO1xuICAgIH1cblxuICAgIHNvY2lhbExvZ2luKGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFNPQ0lBTF9MT0dJTl9QQVRILCBkYXRhKTtcbiAgICB9XG5cbiAgICB0d2l0dGVyTG9naW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudHdpdHRlckVuZHBvaW50fS9nZXRfYXV0aG9yaXplX3VybGApO1xuICAgIH1cblxuICAgIHR3aXR0ZXJBdXRoQ2FsbGJhY2soZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50d2l0dGVyRW5kcG9pbnR9L2F1dGhvcml6YXRpb25fY2FsbGJhY2tgLCBkYXRhKTtcbiAgICB9XG5cbiAgICBtaWNyb3NvZnRMb2dpbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYG1pY3Jvc29mdC9nZXRfYXV0aG9yaXplX3VybGApO1xuICAgIH1cblxuICAgIGNvZ25pdG9Mb2dpbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYGNvZ25pdG8vZ2V0X2F1dGhvcml6ZV91cmxgKTtcbiAgICB9XG5cbiAgICBtaWNyb3NvZnRBdXRoQ2FsbGJhY2soZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYG1pY3Jvc29mdC9hdXRob3JpemF0aW9uX2NhbGxiYWNrYCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZ29vZ2xlTG9naW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGBnb29nbGUvZ2V0X2F1dGhvcml6ZV91cmxgKTtcbiAgICB9XG5cbiAgICBnb29nbGVBdXRoQ2FsbGJhY2soZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYGdvb2dsZS9hdXRob3JpemF0aW9uX2NhbGxiYWNrYCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZmFjZWJvb2tMb2dpbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYGZhY2Vib29rL2dldF9hdXRob3JpemVfdXJsYCk7XG4gICAgfVxuXG4gICAgZmFjZWJvb2tBdXRoQ2FsbGJhY2soZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYGZhY2Vib29rL2F1dGhvcml6YXRpb25fY2FsbGJhY2tgLCBkYXRhKTtcbiAgICB9XG5cbiAgICBhcHBsZUxvZ2luKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgYXBwbGUvZ2V0X2F1dGhvcml6ZV91cmxgKTtcbiAgICB9XG5cbiAgICBhcHBsZUF1dGhDYWxsYmFjayhkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgYXBwbGUvYXV0aG9yaXphdGlvbl9jYWxsYmFja2AsIGRhdGEpO1xuICAgIH1cblxuICAgIGNvZ25pdG9BdXRoQ2FsbGJhY2soZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYGNvZ25pdG8vYXV0aG9yaXphdGlvbl9jYWxsYmFja2AsIGRhdGEpO1xuICAgIH1cblxuICAgIGxpbmtlZGluTG9naW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuYXBwQ29uZmlnJC5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKGNvbmZpZyA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICAgICAgICAgICAgICAgIGAvbGlua2VkaW4vZ2V0X2F1dGhvcml6ZV91cmw/cmVkaXJlY3RfdXJsPSR7Y29uZmlnWydsaW5rcyddLmZyb250ZW5kX2xpbmt9L2xpbmtlZGluLWNvbmZpcm1hdGlvbmBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBsaW5rZWRJbkF1dGhDYWxsYmFjayhkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCgnbGlua2VkaW4vYXV0aG9yaXphdGlvbl9jYWxsYmFjaycsIGRhdGEpO1xuICAgIH1cblxuICAgIHBvc3RMb2dpbihyZXNwb25zZSkge1xuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtJCgncHJvZHVjdF9pZCcpLnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnNldEhlYWRlcktleSgpO1xuICAgICAgICAvLyB0aGlzLnNldFBsYXRmb3JtKCk7IGNhbGwgaXQgZnJvbSBjbG91ZG9saXZlIHJlcG8uXG5cbiAgICAgICAgLy8gU2F2ZXMgdGhlIHRva2VuIGludG8gdGhlIGxvY2FsU3RvcmFnZSBhbmQgZmV0Y2hlcyB0aGUgdXNlciBpbmZvcm1hdGlvblxuICAgICAgICBjb25zdCBzZXF1ZW5jZSQgPSB0aGlzLnN0b3JlVG9rZW4ocmVzcG9uc2VbVE9LRU5fS0VZXSkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckluZm8oKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgc2VxdWVuY2UkLnN1YnNjcmliZShyZXNwID0+IHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCduYW1lJywgcmVzcC5maXJzdF9uYW1lKTtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnaG9tZSddKTtcbiAgICAgICAgICAgIGlmICgkKCcuY2MtZGlzbWlzcycpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAkKCcuY2MtZGlzbWlzcycpWzBdLmNsaWNrKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbXBlcnNvbmF0ZVVzZXIoZGF0YTogeyBlbWFpbDogc3RyaW5nOyBzdWJzY3JpcHRpb25faWQ6IG51bWJlcjsgcGhvbmVnYXA/OiBib29sZWFuIH0pIHtcbiAgICAgICAgaWYgKCFkYXRhLnBob25lZ2FwKSB7XG4gICAgICAgICAgICBkZWxldGUgZGF0YS5waG9uZWdhcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCgnL3Nlc3Npb24vaW1wZXJzb25hdGVfdXNlcicsIGRhdGEpLnBpcGUoXG4gICAgICAgICAgICBtYXAoeCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHg/LmF1dGhfdG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSQoVVNFUl9JTVBFUlNPTkFURURfVE9LRU4sIHguYXV0aF90b2tlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh4Py5waG9uZWdhcF90b2tlbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5zZXRJdGVtJChVU0VSX0lNUEVSU09OQVRFRF9QSE9ORUdBUF9UT0tFTiwgeC5waG9uZWdhcF90b2tlbik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHBvc3RTb2NpYWxMb2dpbihyZXNwb25zZSkge1xuICAgICAgICBjb25zdCBhbHJlYWR5U2lnbmVkID0gISFyZXNwb25zZVtUT0tFTl9LRVldO1xuICAgICAgICBjb25zdCBpc05ld1NpZ25VcCA9ICEhcmVzcG9uc2Uuc3Vic2NyaXB0aW9uO1xuXG4gICAgICAgIGlmIChpc05ld1NpZ25VcCkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydjb25maXJtYXRpb24nXSwge1xuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgIHJlZjogcmVzcG9uc2UucmVmZXJlbmNlX251bWJlcixcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uOiByZXNwb25zZS5zdWJzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIHVzZXJzOiByZXNwb25zZS51c2Vyc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGFscmVhZHlTaWduZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmVUb2tlbihyZXNwb25zZVtUT0tFTl9LRVldKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydob21lJ10pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvd1RvYXN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgICAgdG9hc3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdib3R0b20nLFxuICAgICAgICAgICAgICAgIGh0bWw6IGA8c3Ryb25nIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4gJHtyZXNwb25zZS5lcnJvci5tZXNzYWdlfTwvc3Ryb25nPmAsXG4gICAgICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICByZXZlcnNlQnV0dG9uczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpY29uOiAnZXJyb3InXG4gICAgICAgICAgICB9KS50aGVuKHJlcCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3JlZ2lzdGVyJ10pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJUb2tlbkxpc3RlbmVyKCkge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc3RvcmFnZScsIGRhdGEgPT4ge1xuICAgICAgICAgICAgLy8gbG9ncyBvdXQgdGhlIG90aGVyIHRhYnMgd2hlbiB0aGUgdG9rZW4gaXMgY2hhbmdlZC5cbiAgICAgICAgICAgIC8vIHdlIGFzc3VtZSB0aGF0IHRva2VuIGRvZXNuJ3QgcmVmcmVzaCBhbmQgYmFja2VuZCB1cGRhdGVzIHRoZSBleHBpcnkgdGltZVxuICAgICAgICAgICAgaWYgKGRhdGE/LmtleSA9PT0gVE9LRU5fS0VZICYmIGRhdGE/Lm9sZFZhbHVlICE9PSBkYXRhPy5uZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
316
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24tc2VydmljZXMvc3JjL2xpYi9hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUNILHVCQUF1QixFQUN2Qiw0QkFBNEIsRUFDNUIsMkJBQTJCLEVBQzNCLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNaLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUcvQixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBRzdDLE1BQU0sT0FBTyxX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UyxJQUFJLElBQUksRUFBRSxRQUFRLEtBQUssSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO2dCQUMvRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQWpXUSxXQUFXLHNSQXFCUixRQUFRO21IQXJCWCxXQUFXOzs0RkFBWCxXQUFXO2tCQUR2QixVQUFVOzswQkFzQkYsTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWNvbmZpZy1zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgQ0FQVENIQV9WQUxJREFUSU9OX1BBVEgsXG4gICAgTkVXU0xFVFRFUl9DT05GSVJNQVRJT05fUEFUSCxcbiAgICBORVdTTEVUVEVSX1VOU1VCU0NSSUJFX1BBVEgsXG4gICAgU09DSUFMX0xPR0lOX1BBVEgsXG4gICAgVE9LRU5fSEVBREVSX0tFWSxcbiAgICBUT0tFTl9LRVlcbn0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xuXG5pbXBvcnQgeyBTaWduVXBWYWx1ZXMgfSBmcm9tICcuL2NvbW1vbi1zZXJ2aWNlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW50ZWdyYXRpb25zQXBpSHR0cFNlcnZpY2UgfSBmcm9tICcuL2ludGVncmF0aW9ucy1hcGktaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZSB9IGZyb20gJy4vbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1haW5BcGlIdHRwU2VydmljZSB9IGZyb20gJy4vbWFpbi1hcGktaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IFNlY3VyZVRva2VuU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3NlY3VyZS10b2tlbi1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3VzdG9tVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHR3aXR0ZXJFbmRwb2ludCA9ICcvdHdpdHRlcic7XG5cbiAgICBhdXRoX3Rva2VuOiBzdHJpbmc7XG4gICAgaGVhZGVyX2tleSA9ICdicm93c2VyJztcbiAgICBwbGF0Zm9ybSA9ICcnO1xuXG4gICAgcGxhdGZvcm0kID0gdGhpcy5wbGF0Zm9ybVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBpc1VzZXJQZXJzb25hdGVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxTdG9yYWdlOiBMb2NhbFN0b3JhZ2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc2VjdXJlVG9rZW5TdG9yYWdlOiBTZWN1cmVUb2tlblN0b3JhZ2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IE1haW5BcGlIdHRwU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdG9hc3RyOiBDdXN0b21Ub2FzdFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbnRlZ3JhdGlvbnNBcGk6IEludGVncmF0aW9uc0FwaUh0dHBTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBEb2N1bWVudFxuICAgICkge1xuICAgICAgICAvLyBTZXQgSGVhZGVyIEtleVxuICAgICAgICB0aGlzLnNldEhlYWRlcktleSgpO1xuICAgIH1cblxuICAgIGdldFRva2VuKCkge1xuICAgICAgICBpZiAodGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UuZ2V0SW1wZXJzb25hdGVkVG9rZW4oKSkge1xuICAgICAgICAgICAgdGhpcy5pc1VzZXJQZXJzb25hdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5nZXRJbXBlcnNvbmF0ZWRUb2tlbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5nZXRQaG9uZWdhcFRva2VuKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaXNVc2VyUGVyc29uYXRlZCA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UuZ2V0UGhvbmVnYXBUb2tlbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc1VzZXJQZXJzb25hdGVkID0gZmFsc2U7XG4gICAgICAgIHJldHVybiB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5nZXRUb2tlbigpO1xuICAgIH1cblxuICAgIGdldEltcGVyc29uYXRlZFRva2VuKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UuZ2V0SW1wZXJzb25hdGVkVG9rZW4oKSB8fFxuICAgICAgICAgICAgdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UuZ2V0UGhvbmVnYXBUb2tlbigpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc2V0SGVhZGVyS2V5KCkge1xuICAgICAgICAvLyBNb2JpbGU6IGFwcFxuICAgICAgICAvLyBXZWJzaXRlOiBicm93c2VyXG4gICAgICAgIHRoaXMuZ2V0SGVhZGVyS2V5KCkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJfa2V5ID0gJ2Jyb3dzZXInO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXRmb3JtU3ViamVjdC5uZXh0KCdicm93c2VyJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdhcHAnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyX2tleSA9IGtleTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybVN1YmplY3QubmV4dChrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyX2tleSA9ICdicm93c2VyJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2lnblVwVXNlcih2YWx1ZXM6IFNpZ25VcFZhbHVlcykge1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2NvbmZpcm1hdGlvbl9wYXRoJywgdmFsdWVzLmNvbmZpcm1hdGlvbl9wYXRoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdjb250YWN0X25hbWUnLCB2YWx1ZXMuY29udGFjdF9uYW1lKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdlbWFpbCcsIHZhbHVlcy5lbWFpbCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgndXNlcl9zaWdudXBfdXJsJywgdmFsdWVzLnVzZXJfc2lnbnVwX3VybCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnb3JnYW5pc2F0aW9uJywgdmFsdWVzLm9yZ2FuaXNhdGlvbik7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncHJvZHVjdF9pZCcsIHZhbHVlcy5wcm9kdWN0X2lkLnRvU3RyaW5nKCkpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3VuaXRzJywgdmFsdWVzLnVuaXRzLnRvU3RyaW5nKCkpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3N0cmlwZV90b2tlbicsIHZhbHVlcy5zdHJpcGVfdG9rZW4pO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ21hc3Rlcl9zdWJzY3JpcHRpb25faWQnLCB2YWx1ZXMubWFzdGVyX3N1YnNjcmlwdGlvbl9pZC50b1N0cmluZygpKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoJ3NpZ251cHMnLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgdHJpYWxTaWduVXAoZGF0YTogb2JqZWN0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCgnc2lnbnVwcy90cmlhbF9zaWdudXAnLCBkYXRhKTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZUVtYWlsKGVtYWlsOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgZW1haWxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldFdpdGhQYXJhbXMoJ3VzZXJzL3ZhbGlkYXRlX2VtYWlsJywgcGFyYW1zKTtcbiAgICB9XG5cbiAgICBmb3Jnb3RQYXNzd29yZChlbWFpbDogc3RyaW5nLCByZXNldF9wYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgZW1haWwsXG4gICAgICAgICAgICByZXNldF9wYXRoXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXRXaXRoUGFyYW1zKCdwYXNzd29yZCcsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgcmVzZXRQYXNzd29yZChwYXNzd29yZDogc3RyaW5nLCBjb25maXJtX3Bhc3N3b3JkOiBzdHJpbmcsIHBhc3N3b3JkX3Jlc2V0X3Rva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZCcsIHBhc3N3b3JkKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZF9jb25maXJtYXRpb24nLCBjb25maXJtX3Bhc3N3b3JkKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdyZXNldF9wYXNzd29yZF90b2tlbicsIHBhc3N3b3JkX3Jlc2V0X3Rva2VuKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnB1dCgncGFzc3dvcmQnLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgaGVhZGVyKCkge1xuICAgICAgICBpZiAodGhpcy5oZWFkZXJfa2V5ID09PSAnYnJvd3NlcicpIHtcbiAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgICAgICAgIFtUT0tFTl9IRUFERVJfS0VZXTogYnRvYSh0aGlzLmF1dGhfdG9rZW4pXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIGhlYWRlcnM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgICAnWC1QaG9uZWdhcC1Ub2tlbic6IGJ0b2EodGhpcy5hdXRoX3Rva2VuKVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaGVhZGVycztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEhlYWRlcktleSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0kKCdwbGF0Zm9ybScpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UGxhdGZvcm0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJCgncGxhdGZvcm0nKTtcbiAgICB9XG5cbiAgICBzaWduSW5Vc2VyKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdlbWFpbCcsIGVtYWlsKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZCcsIHBhc3N3b3JkKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoJ3Nlc3Npb24nLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgc2lnbkluVXNlcldpdGgyRmEoZW1haWw6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgZ29vZ2xlX2NvZGUpIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdlbWFpbCcsIGVtYWlsKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZCcsIHBhc3N3b3JkKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdnb29nbGVfY29kZScsIGdvb2dsZV9jb2RlKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoJ3Nlc3Npb24nLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgc3RvcmVUb2tlbih0b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5zdG9yZVRva2VuKHRva2VuKTtcbiAgICB9XG5cbiAgICBzdG9yZVBsYXRmb3JtKHBsYXQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSQoJ3BsYXRmb3JtJywgcGxhdCk7XG4gICAgfVxuXG4gICAgbG9nb3V0KCkge1xuICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgaGVhZGVyczogdGhpcy5oZWFkZXIoKVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLmhlYWRlcl9rZXkgIT09ICdicm93c2VyJykge1xuICAgICAgICAgICAgb3B0aW9uc1sncGFyYW1zJ10gPSB7XG4gICAgICAgICAgICAgICAgcGhvbmVnYXA6IHRydWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDbGVhciBhbGwgdG9rZW5zIHNlY3VyZWx5XG4gICAgICAgIHRoaXMuc2VjdXJlVG9rZW5TdG9yYWdlLmNsZWFyVG9rZW5zKCkuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoJ3Nlc3Npb24nLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciBhbGwgYXV0aGVudGljYXRpb24gdG9rZW5zXG4gICAgICovXG4gICAgY2xlYXJUb2tlbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5jbGVhclRva2VucygpO1xuICAgIH1cblxuICAgIGdldFRva2VuJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VjdXJlVG9rZW5TdG9yYWdlLmdldFRva2VuJCgpO1xuICAgIH1cblxuICAgIGdldE5ld3NsZXR0ZXJTdWJzY3JpcHRpb24odG9rZW46IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHtORVdTTEVUVEVSX0NPTkZJUk1BVElPTl9QQVRIfT90b2tlbj0ke3Rva2VufWApO1xuICAgIH1cblxuICAgIHVuc3Vic2NyaWJlTmV3c2xldHRlcih0b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke05FV1NMRVRURVJfVU5TVUJTQ1JJQkVfUEFUSH0/dG9rZW49JHt0b2tlbn1gKTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZVJlQ2FwdGNoYSh0b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke0NBUFRDSEFfVkFMSURBVElPTl9QQVRIfT0ke3Rva2VufWApO1xuICAgIH1cblxuICAgIHNvY2lhbExvZ2luKGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFNPQ0lBTF9MT0dJTl9QQVRILCBkYXRhKTtcbiAgICB9XG5cbiAgICB0d2l0dGVyTG9naW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudHdpdHRlckVuZHBvaW50fS9nZXRfYXV0aG9yaXplX3VybGApO1xuICAgIH1cblxuICAgIHR3aXR0ZXJBdXRoQ2FsbGJhY2soZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50d2l0dGVyRW5kcG9pbnR9L2F1dGhvcml6YXRpb25fY2FsbGJhY2tgLCBkYXRhKTtcbiAgICB9XG5cbiAgICBtaWNyb3NvZnRMb2dpbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYG1pY3Jvc29mdC9nZXRfYXV0aG9yaXplX3VybGApO1xuICAgIH1cblxuICAgIGNvZ25pdG9Mb2dpbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYGNvZ25pdG8vZ2V0X2F1dGhvcml6ZV91cmxgKTtcbiAgICB9XG5cbiAgICBtaWNyb3NvZnRBdXRoQ2FsbGJhY2soZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYG1pY3Jvc29mdC9hdXRob3JpemF0aW9uX2NhbGxiYWNrYCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZ29vZ2xlTG9naW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGBnb29nbGUvZ2V0X2F1dGhvcml6ZV91cmxgKTtcbiAgICB9XG5cbiAgICBnb29nbGVBdXRoQ2FsbGJhY2soZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYGdvb2dsZS9hdXRob3JpemF0aW9uX2NhbGxiYWNrYCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZmFjZWJvb2tMb2dpbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYGZhY2Vib29rL2dldF9hdXRob3JpemVfdXJsYCk7XG4gICAgfVxuXG4gICAgZmFjZWJvb2tBdXRoQ2FsbGJhY2soZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYGZhY2Vib29rL2F1dGhvcml6YXRpb25fY2FsbGJhY2tgLCBkYXRhKTtcbiAgICB9XG5cbiAgICBhcHBsZUxvZ2luKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgYXBwbGUvZ2V0X2F1dGhvcml6ZV91cmxgKTtcbiAgICB9XG5cbiAgICBhcHBsZUF1dGhDYWxsYmFjayhkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgYXBwbGUvYXV0aG9yaXphdGlvbl9jYWxsYmFja2AsIGRhdGEpO1xuICAgIH1cblxuICAgIGNvZ25pdG9BdXRoQ2FsbGJhY2soZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYGNvZ25pdG8vYXV0aG9yaXphdGlvbl9jYWxsYmFja2AsIGRhdGEpO1xuICAgIH1cblxuICAgIGxpbmtlZGluTG9naW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuYXBwQ29uZmlnJC5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKGNvbmZpZyA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICAgICAgICAgICAgICAgIGAvbGlua2VkaW4vZ2V0X2F1dGhvcml6ZV91cmw/cmVkaXJlY3RfdXJsPSR7Y29uZmlnWydsaW5rcyddLmZyb250ZW5kX2xpbmt9L2xpbmtlZGluLWNvbmZpcm1hdGlvbmBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBsaW5rZWRJbkF1dGhDYWxsYmFjayhkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCgnbGlua2VkaW4vYXV0aG9yaXphdGlvbl9jYWxsYmFjaycsIGRhdGEpO1xuICAgIH1cblxuICAgIHBvc3RMb2dpbihyZXNwb25zZSkge1xuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtJCgncHJvZHVjdF9pZCcpLnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnNldEhlYWRlcktleSgpO1xuICAgICAgICAvLyB0aGlzLnNldFBsYXRmb3JtKCk7IGNhbGwgaXQgZnJvbSBjbG91ZG9saXZlIHJlcG8uXG5cbiAgICAgICAgLy8gU2F2ZXMgdGhlIHRva2VuIGludG8gdGhlIGxvY2FsU3RvcmFnZSBhbmQgZmV0Y2hlcyB0aGUgdXNlciBpbmZvcm1hdGlvblxuICAgICAgICBjb25zdCBzZXF1ZW5jZSQgPSB0aGlzLnN0b3JlVG9rZW4ocmVzcG9uc2VbVE9LRU5fS0VZXSkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckluZm8oKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgc2VxdWVuY2UkLnN1YnNjcmliZShyZXNwID0+IHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCduYW1lJywgcmVzcC5maXJzdF9uYW1lKTtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnaG9tZSddKTtcbiAgICAgICAgICAgIGlmICgkKCcuY2MtZGlzbWlzcycpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAkKCcuY2MtZGlzbWlzcycpWzBdLmNsaWNrKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbXBlcnNvbmF0ZVVzZXIoZGF0YTogeyBlbWFpbDogc3RyaW5nOyBzdWJzY3JpcHRpb25faWQ6IG51bWJlcjsgcGhvbmVnYXA/OiBib29sZWFuIH0pIHtcbiAgICAgICAgaWYgKCFkYXRhLnBob25lZ2FwKSB7XG4gICAgICAgICAgICBkZWxldGUgZGF0YS5waG9uZWdhcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCgnL3Nlc3Npb24vaW1wZXJzb25hdGVfdXNlcicsIGRhdGEpLnBpcGUoXG4gICAgICAgICAgICBtYXAoeCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHg/LmF1dGhfdG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2Uuc3RvcmVJbXBlcnNvbmF0ZWRUb2tlbih4LmF1dGhfdG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoeD8ucGhvbmVnYXBfdG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2Uuc3RvcmVQaG9uZWdhcFRva2VuKHgucGhvbmVnYXBfdG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwb3N0U29jaWFsTG9naW4ocmVzcG9uc2UpIHtcbiAgICAgICAgY29uc3QgYWxyZWFkeVNpZ25lZCA9ICEhcmVzcG9uc2VbVE9LRU5fS0VZXTtcbiAgICAgICAgY29uc3QgaXNOZXdTaWduVXAgPSAhIXJlc3BvbnNlLnN1YnNjcmlwdGlvbjtcblxuICAgICAgICBpZiAoaXNOZXdTaWduVXApIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY29uZmlybWF0aW9uJ10sIHtcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICByZWY6IHJlc3BvbnNlLnJlZmVyZW5jZV9udW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbjogcmVzcG9uc2Uuc3Vic2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICB1c2VyczogcmVzcG9uc2UudXNlcnNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChhbHJlYWR5U2lnbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlVG9rZW4ocmVzcG9uc2VbVE9LRU5fS0VZXSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnaG9tZSddKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLnNob3dUb2FzdChlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzd2FsLmZpcmUoe1xuICAgICAgICAgICAgICAgIHRvYXN0OiB0cnVlLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICBodG1sOiBgPHN0cm9uZyBjbGFzcz1cInRleHQtZGFuZ2VyXCI+ICR7cmVzcG9uc2UuZXJyb3IubWVzc2FnZX08L3N0cm9uZz5gLFxuICAgICAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IHRydWUsXG4gICAgICAgICAgICAgICAgaWNvbjogJ2Vycm9yJ1xuICAgICAgICAgICAgfSkudGhlbihyZXAgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXAudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydyZWdpc3RlciddKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyVG9rZW5MaXN0ZW5lcigpIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3N0b3JhZ2UnLCBkYXRhID0+IHtcbiAgICAgICAgICAgIC8vIGxvZ3Mgb3V0IHRoZSBvdGhlciB0YWJzIHdoZW4gdGhlIHRva2VuIGlzIGNoYW5nZWQuXG4gICAgICAgICAgICAvLyB3ZSBhc3N1bWUgdGhhdCB0b2tlbiBkb2Vzbid0IHJlZnJlc2ggYW5kIGJhY2tlbmQgdXBkYXRlcyB0aGUgZXhwaXJ5IHRpbWVcbiAgICAgICAgICAgIGlmIChkYXRhPy5rZXkgPT09IFRPS0VOX0tFWSAmJiBkYXRhPy5vbGRWYWx1ZSAhPT0gZGF0YT8ubmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -18,4 +18,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
18
18
|
providedIn: 'root'
|
|
19
19
|
}]
|
|
20
20
|
}], ctorParameters: () => [{ type: i1.BrainApiHttpService }] });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhaW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uLXNlcnZpY2VzL3NyYy9saWIvYnJhaW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7QUFLL0QsTUFBTSxPQUFPLGVBQWU7SUFDeEIsWUFBNkIsR0FBd0I7UUFBeEIsUUFBRyxHQUFILEdBQUcsQ0FBcUI7SUFBRyxDQUFDO0lBRXpELFdBQVcsQ0FBQyxPQU1YO1FBQ0csT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDOytHQVhRLGVBQWU7bUhBQWYsZUFBZSxjQUZaLE1BQU07OzRGQUVULGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCcmFpbkFwaUh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9icmFpbi1hcGktaHR0cC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCcmFpbkFwaVNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYXBpOiBCcmFpbkFwaUh0dHBTZXJ2aWNlKSB7fVxuXG4gICAgaW52b2tlTW9kZWwocGF5bG9hZDoge1xuICAgICAgICBtb2RlbF9uYW1lOiAnY2xhdWRlJyB8ICdkZWVwc2Vlayc7XG4gICAgICAgIHByb21wdDogc3RyaW5nO1xuICAgICAgICBzZXNzaW9uX2lkPzogc3RyaW5nO1xuICAgICAgICBtYXhfdG9rZW5zPzogbnVtYmVyO1xuICAgICAgICB0ZW1wZXJhdHVyZT86IG51bWJlcjtcbiAgICB9KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KCcvYmVkcm9jay9pbnZva2UnLCBwYXlsb2FkKTtcbiAgICB9XG59XG4iXX0=
|