@esolve/ng-esolve-connect 0.109.1 → 0.111.0
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/lib/auth/index.mjs +3 -4
- package/esm2022/lib/auth/interceptors/esolve-auth.interceptor.mjs +32 -0
- package/esm2022/lib/auth/interceptors/index.mjs +2 -0
- package/esm2022/lib/auth/providers/esolve-eurus-auto-login.provider.mjs +2 -2
- package/esm2022/lib/auth/services/esolve-auth.service.mjs +288 -0
- package/esm2022/lib/auth/services/esolve-otp.service.mjs +77 -0
- package/esm2022/lib/auth/services/index.mjs +3 -0
- package/esm2022/lib/core/esolve-config.service.mjs +37 -40
- package/esm2022/lib/core/esolve-connect-config.interface.mjs +1 -1
- package/esm2022/lib/core/providers/index.mjs +2 -2
- package/esm2022/lib/core/providers/ng-esolve-connect.provider.mjs +19 -0
- package/esm2022/lib/coupons/esolve-coupons.service.mjs +8 -6
- package/esm2022/lib/device/esolve-device.service.mjs +4 -1
- package/esm2022/lib/device/index.mjs +2 -1
- package/esm2022/lib/device/interfaces/esolve-device.interface.mjs +1 -1
- package/esm2022/lib/device/interfaces/esolve-user-device-options.interface.mjs +1 -1
- package/esm2022/lib/device/types/esolve-device-type.type.mjs +2 -0
- package/esm2022/lib/device/types/index.mjs +2 -0
- package/esm2022/lib/locations/classes/esolve-location.model.mjs +39 -1
- package/esm2022/lib/locations/interfaces/esolve-location-record.interface.mjs +1 -1
- package/esm2022/lib/locations/types/esolve-location-image-size.type.mjs +2 -0
- package/esm2022/lib/locations/types/index.mjs +2 -1
- package/esm2022/lib/session/esolve-session.service.mjs +86 -88
- package/esm2022/lib/shared/cookie/esolve-cookie-options.interface.mjs +2 -0
- package/esm2022/lib/shared/cookie/esolve-cookie.service.mjs +5 -5
- package/esm2022/lib/shared/cookie/index.mjs +2 -2
- package/esm2022/lib/vouchers/esolve-vouchers.service.mjs +8 -6
- package/fesm2022/esolve-ng-esolve-connect.mjs +342 -314
- package/fesm2022/esolve-ng-esolve-connect.mjs.map +1 -1
- package/lib/auth/index.d.ts +2 -3
- package/lib/auth/interceptors/esolve-auth.interceptor.d.ts +2 -0
- package/lib/auth/interceptors/index.d.ts +1 -0
- package/lib/auth/{esolve-auth.service.d.ts → services/esolve-auth.service.d.ts} +1 -1
- package/lib/auth/{esolve-otp.service.d.ts → services/esolve-otp.service.d.ts} +3 -3
- package/lib/auth/services/index.d.ts +2 -0
- package/lib/core/esolve-config.service.d.ts +14 -10
- package/lib/core/esolve-connect-config.interface.d.ts +6 -6
- package/lib/core/providers/index.d.ts +1 -1
- package/lib/device/index.d.ts +1 -0
- package/lib/device/interfaces/esolve-device.interface.d.ts +2 -0
- package/lib/device/interfaces/esolve-user-device-options.interface.d.ts +2 -0
- package/lib/device/types/esolve-device-type.type.d.ts +1 -0
- package/lib/device/types/index.d.ts +1 -0
- package/lib/locations/classes/esolve-location.model.d.ts +22 -0
- package/lib/locations/interfaces/esolve-location-record.interface.d.ts +2 -0
- package/lib/locations/types/esolve-location-image-size.type.d.ts +1 -0
- package/lib/locations/types/index.d.ts +1 -0
- package/lib/session/esolve-session.service.d.ts +12 -5
- package/lib/shared/cookie/esolve-cookie-options.interface.d.ts +7 -0
- package/lib/shared/cookie/esolve-cookie.service.d.ts +3 -2
- package/lib/shared/cookie/index.d.ts +2 -1
- package/package.json +1 -1
- package/esm2022/lib/auth/esolve-auth-interceptor.service.mjs +0 -42
- package/esm2022/lib/auth/esolve-auth.service.mjs +0 -286
- package/esm2022/lib/auth/esolve-otp.service.mjs +0 -77
- package/esm2022/lib/core/providers/provide-ng-esolve-connect.function.mjs +0 -24
- package/lib/auth/esolve-auth-interceptor.service.d.ts +0 -10
- /package/lib/core/providers/{provide-ng-esolve-connect.function.d.ts → ng-esolve-connect.provider.d.ts} +0 -0
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './esolve-auth-interceptor.service';
|
|
3
|
-
export * from './esolve-otp.service';
|
|
1
|
+
export * from './services';
|
|
4
2
|
export * from './models';
|
|
5
3
|
export * from './types';
|
|
4
|
+
export * from './interceptors';
|
|
6
5
|
export * from './interfaces';
|
|
7
6
|
export * from './providers';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYXV0aC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVscyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJjZXB0b3JzJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL3Byb3ZpZGVycyc7XG4iXX0=
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { inject } from '@angular/core';
|
|
2
|
+
import { EsolveSessionService } from '../../session';
|
|
3
|
+
import { EsolveConfigService } from '../../core';
|
|
4
|
+
export const esolveAuthInterceptor = (req, next) => {
|
|
5
|
+
const config = inject(EsolveConfigService);
|
|
6
|
+
const session = inject(EsolveSessionService);
|
|
7
|
+
if (req.url.startsWith(`${config.api_url}/`)) {
|
|
8
|
+
const service_identifier = req.url.replace(`${config.api_url}/`, '');
|
|
9
|
+
const modified_url = req.url;
|
|
10
|
+
let params = req.params;
|
|
11
|
+
let headers = req.headers;
|
|
12
|
+
if (session.isValid()) {
|
|
13
|
+
if (service_identifier !== 'get-access-token.php') {
|
|
14
|
+
headers = headers.set('Authorization', `Bearer ${session.getToken()}`);
|
|
15
|
+
}
|
|
16
|
+
const state_hash = session.getStateHash();
|
|
17
|
+
headers = headers.set('X-Esolve-State-Hash', state_hash);
|
|
18
|
+
}
|
|
19
|
+
params = params.set('ws_id', config.wsid);
|
|
20
|
+
if (config.native && config.device_designation) {
|
|
21
|
+
headers = headers.set('X-Device-Designation', config.device_designation);
|
|
22
|
+
}
|
|
23
|
+
const modified_req = req.clone({
|
|
24
|
+
url: modified_url,
|
|
25
|
+
params,
|
|
26
|
+
headers,
|
|
27
|
+
});
|
|
28
|
+
return next(modified_req);
|
|
29
|
+
}
|
|
30
|
+
return next(req);
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWF1dGguaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYXV0aC9pbnRlcmNlcHRvcnMvZXNvbHZlLWF1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFzQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtJQUNsRSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUMzQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUU3QyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMzQyxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXJFLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFDN0IsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUN4QixJQUFJLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBRTFCLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDcEIsSUFBSSxrQkFBa0IsS0FBSyxzQkFBc0IsRUFBRSxDQUFDO2dCQUNoRCxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FDakIsZUFBZSxFQUNmLFVBQVUsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQ2pDLENBQUM7WUFDTixDQUFDO1lBRUQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzFDLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFFRCxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTFDLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM3QyxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FDakIsc0JBQXNCLEVBQ3RCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FDNUIsQ0FBQztRQUNOLENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQzNCLEdBQUcsRUFBRSxZQUFZO1lBQ2pCLE1BQU07WUFDTixPQUFPO1NBQ1YsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBJbnRlcmNlcHRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEVzb2x2ZVNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2Vzc2lvbic7XG5pbXBvcnQgeyBFc29sdmVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5cbmV4cG9ydCBjb25zdCBlc29sdmVBdXRoSW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcSwgbmV4dCkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IGluamVjdChFc29sdmVDb25maWdTZXJ2aWNlKTtcbiAgICBjb25zdCBzZXNzaW9uID0gaW5qZWN0KEVzb2x2ZVNlc3Npb25TZXJ2aWNlKTtcblxuICAgIGlmIChyZXEudXJsLnN0YXJ0c1dpdGgoYCR7Y29uZmlnLmFwaV91cmx9L2ApKSB7XG4gICAgICAgIGNvbnN0IHNlcnZpY2VfaWRlbnRpZmllciA9IHJlcS51cmwucmVwbGFjZShgJHtjb25maWcuYXBpX3VybH0vYCwgJycpO1xuXG4gICAgICAgIGNvbnN0IG1vZGlmaWVkX3VybCA9IHJlcS51cmw7XG4gICAgICAgIGxldCBwYXJhbXMgPSByZXEucGFyYW1zO1xuICAgICAgICBsZXQgaGVhZGVycyA9IHJlcS5oZWFkZXJzO1xuXG4gICAgICAgIGlmIChzZXNzaW9uLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgaWYgKHNlcnZpY2VfaWRlbnRpZmllciAhPT0gJ2dldC1hY2Nlc3MtdG9rZW4ucGhwJykge1xuICAgICAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldChcbiAgICAgICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nLFxuICAgICAgICAgICAgICAgICAgICBgQmVhcmVyICR7c2Vzc2lvbi5nZXRUb2tlbigpfWAsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc3RhdGVfaGFzaCA9IHNlc3Npb24uZ2V0U3RhdGVIYXNoKCk7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ1gtRXNvbHZlLVN0YXRlLUhhc2gnLCBzdGF0ZV9oYXNoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3dzX2lkJywgY29uZmlnLndzaWQpO1xuXG4gICAgICAgIGlmIChjb25maWcubmF0aXZlICYmIGNvbmZpZy5kZXZpY2VfZGVzaWduYXRpb24pIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldChcbiAgICAgICAgICAgICAgICAnWC1EZXZpY2UtRGVzaWduYXRpb24nLFxuICAgICAgICAgICAgICAgIGNvbmZpZy5kZXZpY2VfZGVzaWduYXRpb24sXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbW9kaWZpZWRfcmVxID0gcmVxLmNsb25lKHtcbiAgICAgICAgICAgIHVybDogbW9kaWZpZWRfdXJsLFxuICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG5leHQobW9kaWZpZWRfcmVxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dChyZXEpO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { esolveAuthInterceptor } from './esolve-auth.interceptor';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYXV0aC9pbnRlcmNlcHRvcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBlc29sdmVBdXRoSW50ZXJjZXB0b3IgfSBmcm9tICcuL2Vzb2x2ZS1hdXRoLmludGVyY2VwdG9yJztcbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { APP_INITIALIZER } from '@angular/core';
|
|
2
|
-
import { EsolveAuthService } from '../
|
|
2
|
+
import { EsolveAuthService } from '../services';
|
|
3
3
|
export const ESOLVE_EURUS_AUTO_LOGIN = {
|
|
4
4
|
provide: APP_INITIALIZER,
|
|
5
5
|
multi: true,
|
|
@@ -9,4 +9,4 @@ export const ESOLVE_EURUS_AUTO_LOGIN = {
|
|
|
9
9
|
return true;
|
|
10
10
|
},
|
|
11
11
|
};
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWV1cnVzLWF1dG8tbG9naW4ucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYXV0aC9wcm92aWRlcnMvZXNvbHZlLWV1cnVzLWF1dG8tbG9naW4ucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUUxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFaEQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQWE7SUFDN0MsT0FBTyxFQUFFLGVBQWU7SUFDeEIsS0FBSyxFQUFFLElBQUk7SUFDWCxJQUFJLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztJQUN6QixVQUFVLEVBQUUsQ0FBQyxJQUF1QixFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRTtRQUNoRCxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUV2QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRXNvbHZlQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5cbmV4cG9ydCBjb25zdCBFU09MVkVfRVVSVVNfQVVUT19MT0dJTjogUHJvdmlkZXIgPSB7XG4gICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgIG11bHRpOiB0cnVlLFxuICAgIGRlcHM6IFtFc29sdmVBdXRoU2VydmljZV0sXG4gICAgdXNlRmFjdG9yeTogKGF1dGg6IEVzb2x2ZUF1dGhTZXJ2aWNlKSA9PiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IGF1dGguYXV0b0xvZ2luKCk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbn07XG4iXX0=
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import { inject, Injectable } from '@angular/core';
|
|
2
|
+
import { HttpClient, HttpParams, HttpHeaders, } from '@angular/common/http';
|
|
3
|
+
import { catchError, firstValueFrom, map, of, switchMap, tap, throwError, } from 'rxjs';
|
|
4
|
+
import { EsolveConfigService } from '../../core';
|
|
5
|
+
import { EsolveErrorHandlerService } from '../../shared';
|
|
6
|
+
import { EsolveSessionService } from '../../session';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class EsolveAuthService {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.config = inject(EsolveConfigService);
|
|
11
|
+
this.http = inject(HttpClient);
|
|
12
|
+
this.session = inject(EsolveSessionService);
|
|
13
|
+
this.errorHandler = inject(EsolveErrorHandlerService);
|
|
14
|
+
this.session
|
|
15
|
+
.onSessionEnd()
|
|
16
|
+
.pipe(switchMap(() => this.checkAccessToken()), catchError(() => of(null)))
|
|
17
|
+
.subscribe((result) => {
|
|
18
|
+
if (result) {
|
|
19
|
+
this.handleAuthentication(result);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
this.session.expireSession();
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
this.session.onExpire().subscribe(() => {
|
|
26
|
+
this.logout().catch(() => {
|
|
27
|
+
// Deal with error gracefully
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
getAccessToken(email, password, anonymous = false) {
|
|
32
|
+
let params = new HttpParams();
|
|
33
|
+
if (anonymous) {
|
|
34
|
+
params = params.set('anonymous', true);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
if (email !== '') {
|
|
38
|
+
params = params.set('email', email);
|
|
39
|
+
}
|
|
40
|
+
if (password !== '') {
|
|
41
|
+
params = params.set('password', password);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return this.http
|
|
45
|
+
.get(`${this.config.api_url}/get-access-token.php`, {
|
|
46
|
+
params,
|
|
47
|
+
headers: new HttpHeaders({
|
|
48
|
+
'Accept-Language': '*',
|
|
49
|
+
}),
|
|
50
|
+
})
|
|
51
|
+
.pipe(tap((response) => {
|
|
52
|
+
if (response.type === 'error' ||
|
|
53
|
+
response.type === 'exception') {
|
|
54
|
+
throw response;
|
|
55
|
+
}
|
|
56
|
+
}), catchError(this.handleError), tap((response) => {
|
|
57
|
+
this.handleAuthentication(response.additional_data);
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
getAnonymousSession() {
|
|
61
|
+
return this.getAccessToken('', '', true);
|
|
62
|
+
}
|
|
63
|
+
async autoLogin() {
|
|
64
|
+
let result = await this.restore();
|
|
65
|
+
try {
|
|
66
|
+
if (!result) {
|
|
67
|
+
const response = await firstValueFrom(this.getAnonymousSession());
|
|
68
|
+
result = response.additional_data;
|
|
69
|
+
}
|
|
70
|
+
this.handleAuthentication(result);
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
console.error(error);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
login(email, password) {
|
|
77
|
+
const body = {
|
|
78
|
+
login: {
|
|
79
|
+
email,
|
|
80
|
+
password,
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
return this.http
|
|
84
|
+
.post(`${this.config.api_url}/set-login.php`, body, {
|
|
85
|
+
headers: {
|
|
86
|
+
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;',
|
|
87
|
+
},
|
|
88
|
+
responseType: 'json',
|
|
89
|
+
observe: 'body',
|
|
90
|
+
})
|
|
91
|
+
.pipe(map((response) => {
|
|
92
|
+
if (response.responses === undefined ||
|
|
93
|
+
response.responses.length <= 0) {
|
|
94
|
+
throw response;
|
|
95
|
+
}
|
|
96
|
+
const login_response = response.responses[0];
|
|
97
|
+
const result = response.additional_data;
|
|
98
|
+
if (login_response.status.state !== 'success' &&
|
|
99
|
+
login_response.status.state !== 'warning') {
|
|
100
|
+
throw login_response;
|
|
101
|
+
}
|
|
102
|
+
for (const response_log of login_response.log) {
|
|
103
|
+
if (response_log.type === 'success' &&
|
|
104
|
+
response_log.message_code === 'login_success') {
|
|
105
|
+
const user_id = +login_response.esolve_id;
|
|
106
|
+
if (Array.isArray(result)) {
|
|
107
|
+
throw new Error('Invalid login');
|
|
108
|
+
}
|
|
109
|
+
this.handleAuthentication({
|
|
110
|
+
key: result.key,
|
|
111
|
+
user_id: result.user_id,
|
|
112
|
+
access_level: result.access_level,
|
|
113
|
+
location_id: result.location_id,
|
|
114
|
+
addresses_id: result.addresses_id,
|
|
115
|
+
shipping_id: result.shipping_id,
|
|
116
|
+
expires: result.expires,
|
|
117
|
+
expiry_time: result.expiry_time,
|
|
118
|
+
grace_period: result.grace_period,
|
|
119
|
+
clients_id: result.clients_id,
|
|
120
|
+
});
|
|
121
|
+
return user_id;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
throw login_response;
|
|
125
|
+
}), catchError((errorRes) => {
|
|
126
|
+
return this.errorHandler.handleHttpPostError('set-login', errorRes);
|
|
127
|
+
}));
|
|
128
|
+
}
|
|
129
|
+
async logout() {
|
|
130
|
+
this.session.stopTimer();
|
|
131
|
+
const response = await firstValueFrom(this.http
|
|
132
|
+
.post(`${this.config.api_url}/set-logout.php`, {}, {
|
|
133
|
+
headers: {
|
|
134
|
+
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;',
|
|
135
|
+
},
|
|
136
|
+
responseType: 'json',
|
|
137
|
+
observe: 'body',
|
|
138
|
+
})
|
|
139
|
+
.pipe(map((response) => {
|
|
140
|
+
if (response.responses === undefined ||
|
|
141
|
+
response.responses.length <= 0) {
|
|
142
|
+
throw response;
|
|
143
|
+
}
|
|
144
|
+
const logout_response = response.responses[0];
|
|
145
|
+
const result = response.additional_data;
|
|
146
|
+
if (logout_response.status.state !== 'success' &&
|
|
147
|
+
logout_response.status.state !== 'warning') {
|
|
148
|
+
throw logout_response;
|
|
149
|
+
}
|
|
150
|
+
for (const response_log of logout_response.log) {
|
|
151
|
+
if (response_log.type === 'success' &&
|
|
152
|
+
response_log.message_code === 'logout_success') {
|
|
153
|
+
if (Array.isArray(result)) {
|
|
154
|
+
throw new Error('Invalid logout');
|
|
155
|
+
}
|
|
156
|
+
this.handleAuthentication({
|
|
157
|
+
key: result.key,
|
|
158
|
+
user_id: result.user_id,
|
|
159
|
+
access_level: result.access_level,
|
|
160
|
+
location_id: result.location_id,
|
|
161
|
+
addresses_id: result.addresses_id,
|
|
162
|
+
shipping_id: result.shipping_id,
|
|
163
|
+
expires: result.expires,
|
|
164
|
+
expiry_time: result.expiry_time,
|
|
165
|
+
grace_period: result.grace_period,
|
|
166
|
+
clients_id: result.clients_id,
|
|
167
|
+
});
|
|
168
|
+
return result;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
throw logout_response;
|
|
172
|
+
}), catchError((errorRes) => {
|
|
173
|
+
return this.errorHandler.handleHttpPostError('set-logout', errorRes);
|
|
174
|
+
})));
|
|
175
|
+
return response;
|
|
176
|
+
}
|
|
177
|
+
async validateCachedTokens() {
|
|
178
|
+
let valid = false;
|
|
179
|
+
try {
|
|
180
|
+
const session = this.session.getCachedSession();
|
|
181
|
+
if (!session) {
|
|
182
|
+
throw new Error('Invalid session');
|
|
183
|
+
}
|
|
184
|
+
const result = await this.checkAccessToken(session);
|
|
185
|
+
if (!result.key) {
|
|
186
|
+
throw new Error('Invalid key');
|
|
187
|
+
}
|
|
188
|
+
valid = true;
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
console.error(error);
|
|
192
|
+
this.session.reset();
|
|
193
|
+
}
|
|
194
|
+
return valid;
|
|
195
|
+
}
|
|
196
|
+
async checkAccessToken(token = this.session.getToken()) {
|
|
197
|
+
if (token === '') {
|
|
198
|
+
throw new Error('Invalid Token');
|
|
199
|
+
}
|
|
200
|
+
const response = await firstValueFrom(this.http.get(`${this.config.api_url}/get-access-token.php`, {
|
|
201
|
+
headers: new HttpHeaders({
|
|
202
|
+
'Accept-Language': '*',
|
|
203
|
+
Authorization: `Bearer ${token}`,
|
|
204
|
+
}),
|
|
205
|
+
}));
|
|
206
|
+
if (response.type === 'error' || response.type === 'exception') {
|
|
207
|
+
throw response;
|
|
208
|
+
}
|
|
209
|
+
const additional_data = response.additional_data;
|
|
210
|
+
if (!additional_data.key_okay) {
|
|
211
|
+
throw response;
|
|
212
|
+
}
|
|
213
|
+
if (additional_data.key) {
|
|
214
|
+
token = additional_data.key;
|
|
215
|
+
}
|
|
216
|
+
const result = {
|
|
217
|
+
key: token,
|
|
218
|
+
expires: +additional_data.expires,
|
|
219
|
+
expiry_time: +additional_data.expiry_time,
|
|
220
|
+
grace_period: +additional_data.grace_period,
|
|
221
|
+
location_id: +additional_data.location_id,
|
|
222
|
+
user_id: +additional_data.user_id,
|
|
223
|
+
access_level: +additional_data.access_level,
|
|
224
|
+
addresses_id: +additional_data.addresses_id,
|
|
225
|
+
shipping_id: +additional_data.shipping_id,
|
|
226
|
+
clients_id: +additional_data.clients_id,
|
|
227
|
+
};
|
|
228
|
+
return result;
|
|
229
|
+
}
|
|
230
|
+
async restore() {
|
|
231
|
+
try {
|
|
232
|
+
const token = this.session.getCachedSession();
|
|
233
|
+
if (!token) {
|
|
234
|
+
throw new Error('Invalid token. Resetting session');
|
|
235
|
+
}
|
|
236
|
+
const result = await this.checkAccessToken(token);
|
|
237
|
+
return result;
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
console.error(error);
|
|
241
|
+
this.session.reset();
|
|
242
|
+
}
|
|
243
|
+
return null;
|
|
244
|
+
}
|
|
245
|
+
// Handlers
|
|
246
|
+
handleExternalAuthentication(result) {
|
|
247
|
+
this.handleAuthentication(result);
|
|
248
|
+
}
|
|
249
|
+
handleAuthentication(result) {
|
|
250
|
+
if (!result.key) {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
this.session.handleSession({
|
|
254
|
+
token: result.key,
|
|
255
|
+
user_id: +result.user_id,
|
|
256
|
+
access_level: +result.access_level,
|
|
257
|
+
location_id: +result.location_id,
|
|
258
|
+
addresses_id: +result.addresses_id,
|
|
259
|
+
shipping_id: +result.shipping_id,
|
|
260
|
+
clients_id: +result.clients_id,
|
|
261
|
+
}, +result.expiry_time, +result.grace_period);
|
|
262
|
+
}
|
|
263
|
+
handleError(errorRes) {
|
|
264
|
+
const error = {
|
|
265
|
+
message: 'An unknown error occurred',
|
|
266
|
+
data: {},
|
|
267
|
+
};
|
|
268
|
+
if (!errorRes.type || !errorRes.service_type || !errorRes.message) {
|
|
269
|
+
return throwError(() => error);
|
|
270
|
+
}
|
|
271
|
+
if (errorRes.message.trim() !== '') {
|
|
272
|
+
error.message = errorRes.message;
|
|
273
|
+
}
|
|
274
|
+
if (errorRes.additional_data) {
|
|
275
|
+
error.data = errorRes.additional_data;
|
|
276
|
+
}
|
|
277
|
+
return throwError(() => error);
|
|
278
|
+
}
|
|
279
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: EsolveAuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
280
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: EsolveAuthService, providedIn: 'root' }); }
|
|
281
|
+
}
|
|
282
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: EsolveAuthService, decorators: [{
|
|
283
|
+
type: Injectable,
|
|
284
|
+
args: [{
|
|
285
|
+
providedIn: 'root',
|
|
286
|
+
}]
|
|
287
|
+
}], ctorParameters: () => [] });
|
|
288
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9hdXRoL3NlcnZpY2VzL2Vzb2x2ZS1hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUNILFVBQVUsRUFDVixVQUFVLEVBRVYsV0FBVyxHQUNkLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUNILFVBQVUsRUFDVixjQUFjLEVBQ2QsR0FBRyxFQUVILEVBQUUsRUFDRixTQUFTLEVBQ1QsR0FBRyxFQUNILFVBQVUsR0FDYixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNqRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWFyRCxNQUFNLE9BQU8saUJBQWlCO0lBTTFCO1FBTGlCLFdBQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNyQyxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFCLFlBQU8sR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN2QyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBRzlELElBQUksQ0FBQyxPQUFPO2FBQ1AsWUFBWSxFQUFFO2FBQ2QsSUFBSSxDQUNELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUN4QyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQzdCO2FBQ0Es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RUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXO1lBQ2hDLFlBQVksRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZO1lBQ2xDLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXO1lBQ2hDLFVBQVUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVO1NBQ2pDLEVBQ0QsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUNuQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQ3ZCLENBQUM7SUFDTixDQUFDO0lBRU8sV0FBVyxDQUNmLFFBQXlEO1FBRXpELE1BQU0sS0FBSyxHQUFHO1lBQ1YsT0FBTyxFQUFFLDJCQUEyQjtZQUNwQyxJQUFJLEVBQUUsRUFBRTtTQUNYLENBQUM7UUFFRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDaEUsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNqQyxLQUFLLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7UUFDckMsQ0FBQztRQUVELElBQUksUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzNCLEtBQUssQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQztRQUMxQyxDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs4R0F4WVEsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FGZCxNQUFNOzsyRkFFVCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEh0dHBDbGllbnQsXG4gICAgSHR0cFBhcmFtcyxcbiAgICBIdHRwRXJyb3JSZXNwb25zZSxcbiAgICBIdHRwSGVhZGVycyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQge1xuICAgIGNhdGNoRXJyb3IsXG4gICAgZmlyc3RWYWx1ZUZyb20sXG4gICAgbWFwLFxuICAgIE9ic2VydmFibGUsXG4gICAgb2YsXG4gICAgc3dpdGNoTWFwLFxuICAgIHRhcCxcbiAgICB0aHJvd0Vycm9yLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRXNvbHZlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgRXNvbHZlRXJyb3JIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZCc7XG5cbmltcG9ydCB7IEVzb2x2ZVNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2Vzc2lvbic7XG5cbmltcG9ydCB7XG4gICAgRXNvbHZlQXV0aEdldFJlc3BvbnNlLFxuICAgIEVzb2x2ZUF1dGhDaGVja1Jlc3BvbnNlLFxuICAgIEVzb2x2ZUF1dGhSZXN1bHQsXG4gICAgRXNvbHZlTG9naW5SZXNwb25zZSxcbiAgICBFc29sdmVMb2dvdXRSZXNwb25zZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBFc29sdmVBdXRoU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3QoRXNvbHZlQ29uZmlnU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvbiA9IGluamVjdChFc29sdmVTZXNzaW9uU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlcnJvckhhbmRsZXIgPSBpbmplY3QoRXNvbHZlRXJyb3JIYW5kbGVyU2VydmljZSk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zZXNzaW9uXG4gICAgICAgICAgICAub25TZXNzaW9uRW5kKClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNoZWNrQWNjZXNzVG9rZW4oKSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihudWxsKSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQXV0aGVudGljYXRpb24ocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb24uZXhwaXJlU2Vzc2lvbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2Vzc2lvbi5vbkV4cGlyZSgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ291dCgpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBEZWFsIHdpdGggZXJyb3IgZ3JhY2VmdWxseVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBY2Nlc3NUb2tlbihcbiAgICAgICAgZW1haWw6IHN0cmluZyxcbiAgICAgICAgcGFzc3dvcmQ6IHN0cmluZyxcbiAgICAgICAgYW5vbnltb3VzID0gZmFsc2UsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVBdXRoR2V0UmVzcG9uc2U+IHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG5cbiAgICAgICAgaWYgKGFub255bW91cykge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnYW5vbnltb3VzJywgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZW1haWwgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnZW1haWwnLCBlbWFpbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYXNzd29yZCAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwYXNzd29yZCcsIHBhc3N3b3JkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlQXV0aEdldFJlc3BvbnNlPihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtYWNjZXNzLXRva2VuLnBocGAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogJyonLFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS50eXBlID09PSAnZXJyb3InIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS50eXBlID09PSAnZXhjZXB0aW9uJ1xuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSxcbiAgICAgICAgICAgICAgICB0YXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQXV0aGVudGljYXRpb24ocmVzcG9uc2UuYWRkaXRpb25hbF9kYXRhKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFub255bW91c1Nlc3Npb24oKTogT2JzZXJ2YWJsZTxFc29sdmVBdXRoR2V0UmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWNjZXNzVG9rZW4oJycsICcnLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYXV0b0xvZ2luKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgdGhpcy5yZXN0b3JlKCk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRBbm9ueW1vdXNTZXNzaW9uKCksXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3BvbnNlLmFkZGl0aW9uYWxfZGF0YTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5oYW5kbGVBdXRoZW50aWNhdGlvbihyZXN1bHQpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbG9naW4oZW1haWw6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICAgICAgICBsb2dpbjoge1xuICAgICAgICAgICAgICAgIGVtYWlsLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAucG9zdDxFc29sdmVMb2dpblJlc3BvbnNlPihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXQtbG9naW4ucGhwYCxcbiAgICAgICAgICAgICAgICBib2R5LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVzcG9uc2VzID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlc3BvbnNlcy5sZW5ndGggPD0gMFxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9naW5fcmVzcG9uc2UgPSByZXNwb25zZS5yZXNwb25zZXNbMF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc3BvbnNlLmFkZGl0aW9uYWxfZGF0YTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dpbl9yZXNwb25zZS5zdGF0dXMuc3RhdGUgIT09ICdzdWNjZXNzJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbG9naW5fcmVzcG9uc2Uuc3RhdHVzLnN0YXRlICE9PSAnd2FybmluZydcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBsb2dpbl9yZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVzcG9uc2VfbG9nIG9mIGxvZ2luX3Jlc3BvbnNlLmxvZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlX2xvZy50eXBlID09PSAnc3VjY2VzcycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZV9sb2cubWVzc2FnZV9jb2RlID09PSAnbG9naW5fc3VjY2VzcydcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJfaWQgPSArbG9naW5fcmVzcG9uc2UuZXNvbHZlX2lkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbG9naW4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUF1dGhlbnRpY2F0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiByZXN1bHQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2lkOiByZXN1bHQudXNlcl9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzX2xldmVsOiByZXN1bHQuYWNjZXNzX2xldmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbl9pZDogcmVzdWx0LmxvY2F0aW9uX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXNfaWQ6IHJlc3VsdC5hZGRyZXNzZXNfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaXBwaW5nX2lkOiByZXN1bHQuc2hpcHBpbmdfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyZXM6IHJlc3VsdC5leHBpcmVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBpcnlfdGltZTogcmVzdWx0LmV4cGlyeV90aW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFjZV9wZXJpb2Q6IHJlc3VsdC5ncmFjZV9wZXJpb2QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudHNfaWQ6IHJlc3VsdC5jbGllbnRzX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVzZXJfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBsb2dpbl9yZXNwb25zZTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2V0LWxvZ2luJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yUmVzLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgbG9nb3V0KCkge1xuICAgICAgICB0aGlzLnNlc3Npb24uc3RvcFRpbWVyKCk7XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbTxFc29sdmVBdXRoUmVzdWx0PihcbiAgICAgICAgICAgIHRoaXMuaHR0cFxuICAgICAgICAgICAgICAgIC5wb3N0PEVzb2x2ZUxvZ291dFJlc3BvbnNlPihcbiAgICAgICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2V0LWxvZ291dC5waHBgLFxuICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZXNwb25zZXMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlc3BvbnNlcy5sZW5ndGggPD0gMFxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvZ291dF9yZXNwb25zZSA9IHJlc3BvbnNlLnJlc3BvbnNlc1swXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc3BvbnNlLmFkZGl0aW9uYWxfZGF0YTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ291dF9yZXNwb25zZS5zdGF0dXMuc3RhdGUgIT09ICdzdWNjZXNzJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ291dF9yZXNwb25zZS5zdGF0dXMuc3RhdGUgIT09ICd3YXJuaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbG9nb3V0X3Jlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlc3BvbnNlX2xvZyBvZiBsb2dvdXRfcmVzcG9uc2UubG9nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZV9sb2cudHlwZSA9PT0gJ3N1Y2Nlc3MnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlX2xvZy5tZXNzYWdlX2NvZGUgPT09ICdsb2dvdXRfc3VjY2VzcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGxvZ291dCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBdXRoZW50aWNhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHJlc3VsdC5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2lkOiByZXN1bHQudXNlcl9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc19sZXZlbDogcmVzdWx0LmFjY2Vzc19sZXZlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uX2lkOiByZXN1bHQubG9jYXRpb25faWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXNfaWQ6IHJlc3VsdC5hZGRyZXNzZXNfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlwcGluZ19pZDogcmVzdWx0LnNoaXBwaW5nX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwaXJlczogcmVzdWx0LmV4cGlyZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBpcnlfdGltZTogcmVzdWx0LmV4cGlyeV90aW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhY2VfcGVyaW9kOiByZXN1bHQuZ3JhY2VfcGVyaW9kLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50c19pZDogcmVzdWx0LmNsaWVudHNfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBsb2dvdXRfcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwUG9zdEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZXQtbG9nb3V0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvclJlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyB2YWxpZGF0ZUNhY2hlZFRva2VucygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgbGV0IHZhbGlkID0gZmFsc2U7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb24uZ2V0Q2FjaGVkU2Vzc2lvbigpO1xuXG4gICAgICAgICAgICBpZiAoIXNlc3Npb24pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc2Vzc2lvbicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNoZWNrQWNjZXNzVG9rZW4oc2Vzc2lvbik7XG5cbiAgICAgICAgICAgIGlmICghcmVzdWx0LmtleSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBrZXknKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFsaWQgPSB0cnVlO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICAgICAgICAgIHRoaXMuc2Vzc2lvbi5yZXNldCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgY2hlY2tBY2Nlc3NUb2tlbihcbiAgICAgICAgdG9rZW4gPSB0aGlzLnNlc3Npb24uZ2V0VG9rZW4oKSxcbiAgICApOiBQcm9taXNlPEVzb2x2ZUF1dGhSZXN1bHQ+IHtcbiAgICAgICAgaWYgKHRva2VuID09PSAnJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFRva2VuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICAgICAgdGhpcy5odHRwLmdldDxFc29sdmVBdXRoQ2hlY2tSZXNwb25zZT4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWFjY2Vzcy10b2tlbi5waHBgLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiAnKicsXG4gICAgICAgICAgICAgICAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dG9rZW59YCxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICksXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlLnR5cGUgPT09ICdlcnJvcicgfHwgcmVzcG9uc2UudHlwZSA9PT0gJ2V4Y2VwdGlvbicpIHtcbiAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWRkaXRpb25hbF9kYXRhID0gcmVzcG9uc2UuYWRkaXRpb25hbF9kYXRhO1xuXG4gICAgICAgIGlmICghYWRkaXRpb25hbF9kYXRhLmtleV9va2F5KSB7XG4gICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhZGRpdGlvbmFsX2RhdGEua2V5KSB7XG4gICAgICAgICAgICB0b2tlbiA9IGFkZGl0aW9uYWxfZGF0YS5rZXk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQ6IEVzb2x2ZUF1dGhSZXN1bHQgPSB7XG4gICAgICAgICAgICBrZXk6IHRva2VuLFxuICAgICAgICAgICAgZXhwaXJlczogK2FkZGl0aW9uYWxfZGF0YS5leHBpcmVzLFxuICAgICAgICAgICAgZXhwaXJ5X3RpbWU6ICthZGRpdGlvbmFsX2RhdGEuZXhwaXJ5X3RpbWUsXG4gICAgICAgICAgICBncmFjZV9wZXJpb2Q6ICthZGRpdGlvbmFsX2RhdGEuZ3JhY2VfcGVyaW9kLFxuICAgICAgICAgICAgbG9jYXRpb25faWQ6ICthZGRpdGlvbmFsX2RhdGEubG9jYXRpb25faWQsXG4gICAgICAgICAgICB1c2VyX2lkOiArYWRkaXRpb25hbF9kYXRhLnVzZXJfaWQsXG4gICAgICAgICAgICBhY2Nlc3NfbGV2ZWw6ICthZGRpdGlvbmFsX2RhdGEuYWNjZXNzX2xldmVsLFxuICAgICAgICAgICAgYWRkcmVzc2VzX2lkOiArYWRkaXRpb25hbF9kYXRhLmFkZHJlc3Nlc19pZCxcbiAgICAgICAgICAgIHNoaXBwaW5nX2lkOiArYWRkaXRpb25hbF9kYXRhLnNoaXBwaW5nX2lkLFxuICAgICAgICAgICAgY2xpZW50c19pZDogK2FkZGl0aW9uYWxfZGF0YS5jbGllbnRzX2lkLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyByZXN0b3JlKCk6IFByb21pc2U8RXNvbHZlQXV0aFJlc3VsdCB8IG51bGw+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5zZXNzaW9uLmdldENhY2hlZFNlc3Npb24oKTtcblxuICAgICAgICAgICAgaWYgKCF0b2tlbikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0b2tlbi4gUmVzZXR0aW5nIHNlc3Npb24nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jaGVja0FjY2Vzc1Rva2VuKHRva2VuKTtcblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuXG4gICAgICAgICAgICB0aGlzLnNlc3Npb24ucmVzZXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZXJzXG5cbiAgICBwdWJsaWMgaGFuZGxlRXh0ZXJuYWxBdXRoZW50aWNhdGlvbihyZXN1bHQ6IEVzb2x2ZUF1dGhSZXN1bHQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYW5kbGVBdXRoZW50aWNhdGlvbihyZXN1bHQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQXV0aGVudGljYXRpb24ocmVzdWx0OiBFc29sdmVBdXRoUmVzdWx0KTogdm9pZCB7XG4gICAgICAgIGlmICghcmVzdWx0LmtleSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXNzaW9uLmhhbmRsZVNlc3Npb24oXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdG9rZW46IHJlc3VsdC5rZXksXG4gICAgICAgICAgICAgICAgdXNlcl9pZDogK3Jlc3VsdC51c2VyX2lkLFxuICAgICAgICAgICAgICAgIGFjY2Vzc19sZXZlbDogK3Jlc3VsdC5hY2Nlc3NfbGV2ZWwsXG4gICAgICAgICAgICAgICAgbG9jYXRpb25faWQ6ICtyZXN1bHQubG9jYXRpb25faWQsXG4gICAgICAgICAgICAgICAgYWRkcmVzc2VzX2lkOiArcmVzdWx0LmFkZHJlc3Nlc19pZCxcbiAgICAgICAgICAgICAgICBzaGlwcGluZ19pZDogK3Jlc3VsdC5zaGlwcGluZ19pZCxcbiAgICAgICAgICAgICAgICBjbGllbnRzX2lkOiArcmVzdWx0LmNsaWVudHNfaWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgK3Jlc3VsdC5leHBpcnlfdGltZSxcbiAgICAgICAgICAgICtyZXN1bHQuZ3JhY2VfcGVyaW9kLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlRXJyb3IoXG4gICAgICAgIGVycm9yUmVzOiBFc29sdmVBdXRoR2V0UmVzcG9uc2UgfCBFc29sdmVBdXRoQ2hlY2tSZXNwb25zZSxcbiAgICApOiBPYnNlcnZhYmxlPG5ldmVyPiB7XG4gICAgICAgIGNvbnN0IGVycm9yID0ge1xuICAgICAgICAgICAgbWVzc2FnZTogJ0FuIHVua25vd24gZXJyb3Igb2NjdXJyZWQnLFxuICAgICAgICAgICAgZGF0YToge30sXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKCFlcnJvclJlcy50eXBlIHx8ICFlcnJvclJlcy5zZXJ2aWNlX3R5cGUgfHwgIWVycm9yUmVzLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJvclJlcy5tZXNzYWdlLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgICAgICAgIGVycm9yLm1lc3NhZ2UgPSBlcnJvclJlcy5tZXNzYWdlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9yUmVzLmFkZGl0aW9uYWxfZGF0YSkge1xuICAgICAgICAgICAgZXJyb3IuZGF0YSA9IGVycm9yUmVzLmFkZGl0aW9uYWxfZGF0YTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { inject, Injectable } from '@angular/core';
|
|
2
|
+
import { HttpClient, HttpParams } from '@angular/common/http';
|
|
3
|
+
import { throwError } from 'rxjs';
|
|
4
|
+
import { map } from 'rxjs/operators';
|
|
5
|
+
import { EsolveConfigService } from '../../core';
|
|
6
|
+
import { EsolveOtp, EsolveOtpValidation } from '../models';
|
|
7
|
+
import { EsolveAuthService } from './esolve-auth.service';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export class EsolveOtpService {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.config = inject(EsolveConfigService);
|
|
12
|
+
this.http = inject(HttpClient);
|
|
13
|
+
this.auth = inject(EsolveAuthService);
|
|
14
|
+
}
|
|
15
|
+
getOtp(recipient_number, captcha_options) {
|
|
16
|
+
let params = new HttpParams();
|
|
17
|
+
if (recipient_number) {
|
|
18
|
+
params = params.set('recipient_number', recipient_number);
|
|
19
|
+
}
|
|
20
|
+
if (captcha_options) {
|
|
21
|
+
params = params.set('captcha_key', captcha_options.captcha_key);
|
|
22
|
+
params = params.set('captcha_code', captcha_options.captcha_code);
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
return this.http
|
|
26
|
+
.get(`${this.config.api_url}/get-otp.php`, { params })
|
|
27
|
+
.pipe(map((response) => {
|
|
28
|
+
if (response.records === undefined ||
|
|
29
|
+
Array.isArray(response.records)) {
|
|
30
|
+
throw response;
|
|
31
|
+
}
|
|
32
|
+
return new EsolveOtp(response.records);
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
return throwError(() => error);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
getValidateOtp(otp_key, otp_code, otp_action = '', email = '', cellnumber = '') {
|
|
40
|
+
try {
|
|
41
|
+
return this.http
|
|
42
|
+
.get(`${this.config.api_url}/get-otp-validation.php`, {
|
|
43
|
+
params: {
|
|
44
|
+
otp_key,
|
|
45
|
+
otp_code,
|
|
46
|
+
otp_action,
|
|
47
|
+
email,
|
|
48
|
+
cellnumber,
|
|
49
|
+
},
|
|
50
|
+
})
|
|
51
|
+
.pipe(map((response) => {
|
|
52
|
+
if (response.records === undefined ||
|
|
53
|
+
Array.isArray(response.records)) {
|
|
54
|
+
throw response;
|
|
55
|
+
}
|
|
56
|
+
const additional_data = response.additional_data;
|
|
57
|
+
if (!Array.isArray(additional_data) &&
|
|
58
|
+
additional_data.key) {
|
|
59
|
+
this.auth.handleExternalAuthentication(additional_data);
|
|
60
|
+
}
|
|
61
|
+
return new EsolveOtpValidation(response.records);
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
return throwError(() => error);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: EsolveOtpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
69
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: EsolveOtpService, providedIn: 'root' }); }
|
|
70
|
+
}
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: EsolveOtpService, decorators: [{
|
|
72
|
+
type: Injectable,
|
|
73
|
+
args: [{
|
|
74
|
+
providedIn: 'root',
|
|
75
|
+
}]
|
|
76
|
+
}] });
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLW90cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL2F1dGgvc2VydmljZXMvZXNvbHZlLW90cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFOUQsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBTWpELE9BQU8sRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBSzFELE1BQU0sT0FBTyxnQkFBZ0I7SUFIN0I7UUFJcUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3JDLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0tBdUZyRDtJQXJGVSxNQUFNLENBQ1QsZ0JBQXlCLEVBQ3pCLGVBQXNDO1FBRXRDLElBQUksTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFFOUIsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ25CLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUVELElBQUksZUFBZSxFQUFFLENBQUM7WUFDbEIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNoRSxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFFRCxJQUFJLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJO2lCQUNYLEdBQUcsQ0FFRixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQztpQkFDbEQsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNiLElBQ0ksUUFBUSxDQUFDLE9BQU8sS0FBSyxTQUFTO29CQUM5QixLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFDakMsQ0FBQztvQkFDQyxNQUFNLFFBQVEsQ0FBQztnQkFDbkIsQ0FBQztnQkFFRCxPQUFPLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzQyxDQUFDLENBQUMsQ0FDTCxDQUFDO1FBQ1YsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDYixPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGNBQWMsQ0FDakIsT0FBZSxFQUNmLFFBQWdCLEVBQ2hCLGFBQThCLEVBQUUsRUFDaEMsS0FBSyxHQUFHLEVBQUUsRUFDVixVQUFVLEdBQUcsRUFBRTtRQUVmLElBQUksQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLElBQUk7aUJBQ1gsR0FBRyxDQUNBLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLHlCQUF5QixFQUMvQztnQkFDSSxNQUFNLEVBQUU7b0JBQ0osT0FBTztvQkFDUCxRQUFRO29CQUNSLFVBQVU7b0JBQ1YsS0FBSztvQkFDTCxVQUFVO2lCQUNiO2FBQ0osQ0FDSjtpQkFDQSxJQUFJLENBQ0QsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ2IsSUFDSSxRQUFRLENBQUMsT0FBTyxLQUFLLFNBQVM7b0JBQzlCLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUNqQyxDQUFDO29CQUNDLE1BQU0sUUFBUSxDQUFDO2dCQUNuQixDQUFDO2dCQUVELE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7Z0JBRWpELElBQ0ksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztvQkFDL0IsZUFBZSxDQUFDLEdBQUcsRUFDckIsQ0FBQztvQkFDQyxJQUFJLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUNsQyxlQUFlLENBQ2xCLENBQUM7Z0JBQ04sQ0FBQztnQkFFRCxPQUFPLElBQUksbUJBQW1CLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JELENBQUMsQ0FBQyxDQUNMLENBQUM7UUFDVixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDOzhHQXpGUSxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQUZiLE1BQU07OzJGQUVULGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRXNvbHZlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgRXNvbHZlR2V0UmVzcG9uc2UgfSBmcm9tICcuLi8uLi9zaGFyZWQnO1xuaW1wb3J0IHsgRXNvbHZlQ2FwdGNoYU9wdGlvbnMgfSBmcm9tICcuLi8uLi9jYXB0Y2hhJztcblxuaW1wb3J0IHsgRXNvbHZlT3RwQWN0aW9uLCBFc29sdmVWYWxpZGF0ZU90cFJlc3BvbnNlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgRXNvbHZlT3RwUmVjb3JkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBFc29sdmVPdHAsIEVzb2x2ZU90cFZhbGlkYXRpb24gfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5pbXBvcnQgeyBFc29sdmVBdXRoU2VydmljZSB9IGZyb20gJy4vZXNvbHZlLWF1dGguc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEVzb2x2ZU90cFNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KEVzb2x2ZUNvbmZpZ1NlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGggPSBpbmplY3QoRXNvbHZlQXV0aFNlcnZpY2UpO1xuXG4gICAgcHVibGljIGdldE90cChcbiAgICAgICAgcmVjaXBpZW50X251bWJlcj86IHN0cmluZyxcbiAgICAgICAgY2FwdGNoYV9vcHRpb25zPzogRXNvbHZlQ2FwdGNoYU9wdGlvbnMsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVPdHA+IHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG5cbiAgICAgICAgaWYgKHJlY2lwaWVudF9udW1iZXIpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3JlY2lwaWVudF9udW1iZXInLCByZWNpcGllbnRfbnVtYmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjYXB0Y2hhX29wdGlvbnMpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2NhcHRjaGFfa2V5JywgY2FwdGNoYV9vcHRpb25zLmNhcHRjaGFfa2V5KTtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2NhcHRjaGFfY29kZScsIGNhcHRjaGFfb3B0aW9ucy5jYXB0Y2hhX2NvZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgICAgICAuZ2V0PFxuICAgICAgICAgICAgICAgICAgICBFc29sdmVHZXRSZXNwb25zZTxFc29sdmVPdHBSZWNvcmQ+XG4gICAgICAgICAgICAgICAgPihgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtb3RwLnBocGAsIHsgcGFyYW1zIH0pXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KHJlc3BvbnNlLnJlY29yZHMpXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVPdHAocmVzcG9uc2UucmVjb3Jkcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VmFsaWRhdGVPdHAoXG4gICAgICAgIG90cF9rZXk6IHN0cmluZyxcbiAgICAgICAgb3RwX2NvZGU6IHN0cmluZyxcbiAgICAgICAgb3RwX2FjdGlvbjogRXNvbHZlT3RwQWN0aW9uID0gJycsXG4gICAgICAgIGVtYWlsID0gJycsXG4gICAgICAgIGNlbGxudW1iZXIgPSAnJyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZU90cFZhbGlkYXRpb24+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgICAgICAuZ2V0PEVzb2x2ZVZhbGlkYXRlT3RwUmVzcG9uc2U+KFxuICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtb3RwLXZhbGlkYXRpb24ucGhwYCxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RwX2tleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdHBfY29kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdHBfYWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocmVzcG9uc2UucmVjb3JkcylcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsX2RhdGEgPSByZXNwb25zZS5hZGRpdGlvbmFsX2RhdGE7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhQXJyYXkuaXNBcnJheShhZGRpdGlvbmFsX2RhdGEpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9kYXRhLmtleVxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoLmhhbmRsZUV4dGVybmFsQXV0aGVudGljYXRpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZU90cFZhbGlkYXRpb24ocmVzcG9uc2UucmVjb3Jkcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { EsolveAuthService } from './esolve-auth.service';
|
|
2
|
+
export { EsolveOtpService } from './esolve-otp.service';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYXV0aC9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEVzb2x2ZUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9lc29sdmUtYXV0aC5zZXJ2aWNlJztcbmV4cG9ydCB7IEVzb2x2ZU90cFNlcnZpY2UgfSBmcm9tICcuL2Vzb2x2ZS1vdHAuc2VydmljZSc7XG4iXX0=
|
|
@@ -3,48 +3,45 @@ import { ESOLVE_CONNECT_CONFIG } from './esolve-connect-config.token';
|
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class EsolveConfigService {
|
|
5
5
|
constructor() {
|
|
6
|
-
this.
|
|
7
|
-
this.
|
|
8
|
-
this.
|
|
9
|
-
this.
|
|
10
|
-
|
|
11
|
-
this.
|
|
12
|
-
this.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
6
|
+
this.config = inject(ESOLVE_CONNECT_CONFIG);
|
|
7
|
+
this.wsid = this.config.wsid;
|
|
8
|
+
this.api_url = this.config.api_url;
|
|
9
|
+
this.site_url = this.config.site_url;
|
|
10
|
+
// Device specific
|
|
11
|
+
this.native = this.config.native ?? false;
|
|
12
|
+
this.device_designation = this.config.device_designation ?? 'web';
|
|
13
|
+
// SEO configuration
|
|
14
|
+
this.title_prefix = this.config.title_prefix ?? '';
|
|
15
|
+
this.title_suffix = this.config.title_suffix ?? '';
|
|
16
|
+
this.title_separator = this.config.title_separator ?? '|';
|
|
17
|
+
this.default_seo_title = this.config.default_seo_title ?? '';
|
|
18
|
+
this.default_seo_description = this.config.default_seo_description ?? '';
|
|
19
|
+
this.default_seo_keywords = this.config.default_seo_keywords ?? '';
|
|
20
|
+
// Storage keys
|
|
21
|
+
this.session_cookie_key = this.config.session_cookie_key ?? '_ng_eslv_token';
|
|
22
|
+
this.coupon_cookie_key = this.config.coupon_cookie_key ?? '_ng_eslv_coupons';
|
|
23
|
+
this.voucher_cookie_key = this.config.voucher_cookie_key ?? '_ng_eslv_vouchers';
|
|
24
|
+
// CDN settings
|
|
25
|
+
this.legacy_cdn = this.config.legacy_cdn;
|
|
26
|
+
this.cdn = this.config.cdn;
|
|
27
|
+
this.ftg_cdn = this.config.ftg_cdn;
|
|
28
|
+
this.error_image_path = this.config.error_image_path;
|
|
29
|
+
if (this.api_url === '' || this.wsid === '') {
|
|
16
30
|
throw new Error('Invalid eSolve Eurus config');
|
|
17
31
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
this.title_suffix = config.title_suffix ?? '';
|
|
23
|
-
this.default_seo_title = config.default_seo_title ?? '';
|
|
24
|
-
this.default_seo_description = config.default_seo_description ?? '';
|
|
25
|
-
this.default_seo_keywords = config.default_seo_keywords ?? '';
|
|
26
|
-
this.native = config.native ?? false;
|
|
27
|
-
if (config.session_storage_key) {
|
|
28
|
-
this.session_storage_key = config.session_storage_key;
|
|
29
|
-
}
|
|
30
|
-
if (config.title_separator) {
|
|
31
|
-
this.title_separator = config.title_separator;
|
|
32
|
-
}
|
|
33
|
-
if (config.coupon_storage_key) {
|
|
34
|
-
this.coupon_storage_key = config.coupon_storage_key;
|
|
35
|
-
}
|
|
36
|
-
if (config.voucher_storage_key) {
|
|
37
|
-
this.voucher_storage_key = config.voucher_storage_key;
|
|
38
|
-
}
|
|
39
|
-
if (this.native && config.device_designation) {
|
|
40
|
-
this.device_designation = config.device_designation;
|
|
41
|
-
}
|
|
42
|
-
this.legacy_cdn = config.legacy_cdn;
|
|
43
|
-
this.cdn = config.cdn;
|
|
44
|
-
if (config.ftg_cdn) {
|
|
45
|
-
this.ftg_cdn = config.ftg_cdn;
|
|
32
|
+
}
|
|
33
|
+
updateWsid(wsid) {
|
|
34
|
+
if (wsid === '') {
|
|
35
|
+
throw new Error('Invalid WSID');
|
|
46
36
|
}
|
|
47
|
-
this.
|
|
37
|
+
this.wsid = wsid;
|
|
38
|
+
}
|
|
39
|
+
udpateCdn(cdn, ftg_cdn) {
|
|
40
|
+
this.cdn = cdn;
|
|
41
|
+
this.ftg_cdn = ftg_cdn;
|
|
42
|
+
}
|
|
43
|
+
udpateLegacyCdn(cdn) {
|
|
44
|
+
this.legacy_cdn = cdn;
|
|
48
45
|
}
|
|
49
46
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: EsolveConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
50
47
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: EsolveConfigService, providedIn: 'root' }); }
|
|
@@ -55,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
55
52
|
providedIn: 'root',
|
|
56
53
|
}]
|
|
57
54
|
}], ctorParameters: () => [] });
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWNvbmZpZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL2NvcmUvZXNvbHZlLWNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUt0RSxNQUFNLE9BQU8sbUJBQW1CO0lBaUM1QjtRQWhDaUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRWpELFNBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN4QixZQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDOUIsYUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBRXZDLGtCQUFrQjtRQUNYLFdBQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7UUFDckMsdUJBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsSUFBSSxLQUFLLENBQUM7UUFFcEUsb0JBQW9CO1FBQ2IsaUJBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDOUMsaUJBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDOUMsb0JBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsSUFBSSxHQUFHLENBQUM7UUFDckQsc0JBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUM7UUFDeEQsNEJBQXVCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsSUFBSSxFQUFFLENBQUM7UUFDcEUseUJBQW9CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsSUFBSSxFQUFFLENBQUM7UUFFckUsZUFBZTtRQUNSLHVCQUFrQixHQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixJQUFJLGdCQUFnQixDQUFDO1FBQ2hELHNCQUFpQixHQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixJQUFJLGtCQUFrQixDQUFDO1FBQ2pELHVCQUFrQixHQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixJQUFJLG1CQUFtQixDQUFDO1FBRTFELGVBQWU7UUFDUixlQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDcEMsUUFBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQ3RCLFlBQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUM5QixxQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBR25ELElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUMxQyxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNMLENBQUM7SUFFTSxVQUFVLENBQUMsSUFBWTtRQUMxQixJQUFJLElBQUksS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxTQUFTLENBQUMsR0FBWSxFQUFFLE9BQWdCO1FBQzNDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDM0IsQ0FBQztJQUVNLGVBQWUsQ0FBQyxHQUFZO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO0lBQzFCLENBQUM7OEdBdERRLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGNBRmhCLE1BQU07OzJGQUVULG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRXNvbHZlQ29ubmVjdENvbmZpZyB9IGZyb20gJy4vZXNvbHZlLWNvbm5lY3QtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBFU09MVkVfQ09OTkVDVF9DT05GSUcgfSBmcm9tICcuL2Vzb2x2ZS1jb25uZWN0LWNvbmZpZy50b2tlbic7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEVzb2x2ZUNvbmZpZ1NlcnZpY2UgaW1wbGVtZW50cyBFc29sdmVDb25uZWN0Q29uZmlnIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdChFU09MVkVfQ09OTkVDVF9DT05GSUcpO1xuXG4gICAgcHVibGljIHdzaWQgPSB0aGlzLmNvbmZpZy53c2lkO1xuICAgIHB1YmxpYyBhcGlfdXJsID0gdGhpcy5jb25maWcuYXBpX3VybDtcbiAgICBwdWJsaWMgc2l0ZV91cmwgPSB0aGlzLmNvbmZpZy5zaXRlX3VybDtcblxuICAgIC8vIERldmljZSBzcGVjaWZpY1xuICAgIHB1YmxpYyBuYXRpdmUgPSB0aGlzLmNvbmZpZy5uYXRpdmUgPz8gZmFsc2U7XG4gICAgcHVibGljIGRldmljZV9kZXNpZ25hdGlvbiA9IHRoaXMuY29uZmlnLmRldmljZV9kZXNpZ25hdGlvbiA/PyAnd2ViJztcblxuICAgIC8vIFNFTyBjb25maWd1cmF0aW9uXG4gICAgcHVibGljIHRpdGxlX3ByZWZpeCA9IHRoaXMuY29uZmlnLnRpdGxlX3ByZWZpeCA/PyAnJztcbiAgICBwdWJsaWMgdGl0bGVfc3VmZml4ID0gdGhpcy5jb25maWcudGl0bGVfc3VmZml4ID8/ICcnO1xuICAgIHB1YmxpYyB0aXRsZV9zZXBhcmF0b3IgPSB0aGlzLmNvbmZpZy50aXRsZV9zZXBhcmF0b3IgPz8gJ3wnO1xuICAgIHB1YmxpYyBkZWZhdWx0X3Nlb190aXRsZSA9IHRoaXMuY29uZmlnLmRlZmF1bHRfc2VvX3RpdGxlID8/ICcnO1xuICAgIHB1YmxpYyBkZWZhdWx0X3Nlb19kZXNjcmlwdGlvbiA9IHRoaXMuY29uZmlnLmRlZmF1bHRfc2VvX2Rlc2NyaXB0aW9uID8/ICcnO1xuICAgIHB1YmxpYyBkZWZhdWx0X3Nlb19rZXl3b3JkcyA9IHRoaXMuY29uZmlnLmRlZmF1bHRfc2VvX2tleXdvcmRzID8/ICcnO1xuXG4gICAgLy8gU3RvcmFnZSBrZXlzXG4gICAgcHVibGljIHNlc3Npb25fY29va2llX2tleSA9XG4gICAgICAgIHRoaXMuY29uZmlnLnNlc3Npb25fY29va2llX2tleSA/PyAnX25nX2VzbHZfdG9rZW4nO1xuICAgIHB1YmxpYyBjb3Vwb25fY29va2llX2tleSA9XG4gICAgICAgIHRoaXMuY29uZmlnLmNvdXBvbl9jb29raWVfa2V5ID8/ICdfbmdfZXNsdl9jb3Vwb25zJztcbiAgICBwdWJsaWMgdm91Y2hlcl9jb29raWVfa2V5ID1cbiAgICAgICAgdGhpcy5jb25maWcudm91Y2hlcl9jb29raWVfa2V5ID8/ICdfbmdfZXNsdl92b3VjaGVycyc7XG5cbiAgICAvLyBDRE4gc2V0dGluZ3NcbiAgICBwdWJsaWMgbGVnYWN5X2NkbiA9IHRoaXMuY29uZmlnLmxlZ2FjeV9jZG47XG4gICAgcHVibGljIGNkbiA9IHRoaXMuY29uZmlnLmNkbjtcbiAgICBwdWJsaWMgZnRnX2NkbiA9IHRoaXMuY29uZmlnLmZ0Z19jZG47XG4gICAgcHVibGljIGVycm9yX2ltYWdlX3BhdGggPSB0aGlzLmNvbmZpZy5lcnJvcl9pbWFnZV9wYXRoO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGlmICh0aGlzLmFwaV91cmwgPT09ICcnIHx8IHRoaXMud3NpZCA9PT0gJycpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBlU29sdmUgRXVydXMgY29uZmlnJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlV3NpZCh3c2lkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHdzaWQgPT09ICcnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgV1NJRCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy53c2lkID0gd3NpZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgdWRwYXRlQ2RuKGNkbj86IHN0cmluZywgZnRnX2Nkbj86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmNkbiA9IGNkbjtcbiAgICAgICAgdGhpcy5mdGdfY2RuID0gZnRnX2NkbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgdWRwYXRlTGVnYWN5Q2RuKGNkbj86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmxlZ2FjeV9jZG4gPSBjZG47XG4gICAgfVxufVxuIl19
|