@experteam-mx/ngx-services 16.0.0 → 16.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/esm2020/experteam-mx-ngx-services.mjs +5 -0
  2. package/esm2020/lib/apis/api-catalogs.service.mjs +42 -0
  3. package/esm2020/lib/apis/api-companies.service.mjs +255 -0
  4. package/esm2020/lib/apis/api-external-ops.service.mjs +53 -0
  5. package/esm2020/lib/apis/api-security.service.mjs +128 -0
  6. package/esm2020/lib/apis/models/api-catalogs.interfaces.mjs +2 -0
  7. package/esm2020/lib/apis/models/api-catalogs.types.mjs +2 -0
  8. package/esm2020/lib/apis/models/api-companies.interfaces.mjs +2 -0
  9. package/esm2020/lib/apis/models/api-companies.types.mjs +2 -0
  10. package/esm2020/lib/apis/models/api-external-ops.interfaces.mjs +2 -0
  11. package/esm2020/lib/apis/models/api-external-ops.types.mjs +2 -0
  12. package/esm2020/lib/apis/models/api-security.interfaces.mjs +2 -0
  13. package/esm2020/lib/apis/models/api-security.types.mjs +2 -0
  14. package/esm2020/lib/apis/models/api.models.mjs +2 -0
  15. package/esm2020/lib/helpers/http.mjs +64 -0
  16. package/esm2020/lib/interceptors/api-headers.interceptor.mjs +34 -0
  17. package/esm2020/lib/interceptors/api-key.interceptor.mjs +38 -0
  18. package/esm2020/lib/interceptors/api-token.interceptor.mjs +35 -0
  19. package/esm2020/lib/interceptors/http-caching.interceptor.mjs +38 -0
  20. package/esm2020/lib/ngx-services.models.mjs +2 -0
  21. package/esm2020/lib/ngx-services.module.mjs +37 -0
  22. package/esm2020/public-api.mjs +27 -0
  23. package/esm2022/lib/apis/api-catalogs.service.mjs +42 -0
  24. package/esm2022/lib/apis/api-companies.service.mjs +2 -2
  25. package/esm2022/lib/apis/api-external-ops.service.mjs +53 -0
  26. package/esm2022/lib/apis/api-security.service.mjs +2 -2
  27. package/esm2022/lib/apis/{api-catalog.models.mjs → models/api-catalogs.interfaces.mjs} +1 -1
  28. package/esm2022/lib/apis/models/api-catalogs.types.mjs +2 -0
  29. package/esm2022/lib/apis/models/api-companies.interfaces.mjs +1 -1
  30. package/esm2022/lib/apis/models/api-external-ops.interfaces.mjs +2 -0
  31. package/esm2022/lib/apis/models/api-external-ops.types.mjs +2 -0
  32. package/esm2022/lib/apis/models/api-security.interfaces.mjs +1 -1
  33. package/esm2022/lib/helpers/http.mjs +2 -4
  34. package/esm2022/lib/interceptors/api-key.interceptor.mjs +38 -0
  35. package/esm2022/lib/ngx-services.models.mjs +1 -1
  36. package/esm2022/public-api.mjs +9 -2
  37. package/fesm2015/experteam-mx-ngx-services.mjs +723 -0
  38. package/fesm2015/experteam-mx-ngx-services.mjs.map +1 -0
  39. package/fesm2020/experteam-mx-ngx-services.mjs +705 -0
  40. package/fesm2020/experteam-mx-ngx-services.mjs.map +1 -0
  41. package/fesm2022/experteam-mx-ngx-services.mjs +126 -6
  42. package/fesm2022/experteam-mx-ngx-services.mjs.map +1 -1
  43. package/lib/apis/api-catalogs.service.d.ts +26 -0
  44. package/lib/apis/api-external-ops.service.d.ts +34 -0
  45. package/lib/apis/{api-catalog.models.d.ts → models/api-catalogs.interfaces.d.ts} +5 -1
  46. package/lib/apis/models/api-catalogs.types.d.ts +5 -0
  47. package/lib/apis/models/api-companies.interfaces.d.ts +1 -1
  48. package/lib/apis/models/api-external-ops.interfaces.d.ts +23 -0
  49. package/lib/apis/models/api-external-ops.types.d.ts +18 -0
  50. package/lib/apis/models/api-security.interfaces.d.ts +1 -1
  51. package/lib/interceptors/api-key.interceptor.d.ts +19 -0
  52. package/lib/ngx-services.models.d.ts +6 -19
  53. package/package.json +1 -1
  54. package/public-api.d.ts +8 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWV4dGVybmFsLW9wcy50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4cGVydGVhbS9uZ3gtc2VydmljZXMvc3JjL2xpYi9hcGlzL21vZGVscy9hcGktZXh0ZXJuYWwtb3BzLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tICcuL2FwaS1leHRlcm5hbC1vcHMuaW50ZXJmYWNlcydcclxuXHJcbmV4cG9ydCB0eXBlIERlbGl2ZXJ5Q29uZmlybWF0aW9uRGF0YSA9IHtcclxuICBvcGVyYXRpb246IE9wZXJhdGlvblxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQdXREZWxpdmVyeUNvbmZpcm1hdGlvbkluID0ge1xyXG4gIG90cENvZGU6IHN0cmluZ1xyXG4gIHNpZ25hdHVyZToge1xyXG4gICAgc3RhdHVzOiAnQ29tcGxldGVkJ1xyXG4gICAgb3BlcmF0aW9uX2lkOiBudW1iZXJcclxuICAgIHNpZ25hdHVyZV9iYXNlXzY0OiBzdHJpbmdcclxuICAgIG1pbWVfdHlwZTogJ2ltYWdlL3BuZydcclxuICB9IHwge1xyXG4gICAgc3RhdHVzOiAnQ2FuY2VsZWQnXHJcbiAgICBvcGVyYXRpb25faWQ6IG51bWJlclxyXG4gICAgc2lnbmF0dXJlX2Jhc2VfNjQ6IG51bGxcclxuICAgIG1pbWVfdHlwZTogbnVsbFxyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXNlY3VyaXR5LmludGVyZmFjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHBlcnRlYW0vbmd4LXNlcnZpY2VzL3NyYy9saWIvYXBpcy9tb2RlbHMvYXBpLXNlY3VyaXR5LmludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhcmF2ZWxNb2RlbCB9IGZyb20gJy4vYXBpLm1vZGVscydcclxuaW1wb3J0IHsgTGFuZ3VhZ2UgfSBmcm9tICcuL2FwaS1jYXRhbG9ncy5pbnRlcmZhY2VzJ1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uIGV4dGVuZHMgTGFyYXZlbE1vZGVsIHtcclxuICBuYW1lOiBzdHJpbmdcclxuICB1c2VybmFtZTogc3RyaW5nXHJcbiAgZW1haWw6IHN0cmluZ1xyXG4gIG1vZGVsX3R5cGU6IHN0cmluZ1xyXG4gIG1vZGVsX2lkOiBudW1iZXJcclxuICBhdXRoX3R5cGU6IHN0cmluZ1xyXG4gIGxhbmd1YWdlX2lkOiBudW1iZXJcclxuICBjb3VudHJ5X2lkOiBudW1iZXJcclxuICBsb2NhdGlvbl9pZDogbnVtYmVyXHJcbiAgaW5zdGFsbGF0aW9uX2lkOiBudW1iZXJcclxuICBjb21wYW55X2NvdW50cnlfaWQ6IG51bWJlclxyXG4gIGNvdW50cnlfcmVmZXJlbmNlX2N1cnJlbmN5X2lkOiBudW1iZXJcclxuICBvcGVuaW5nX2lkOiBudW1iZXJcclxuICBsb2NhbGU6IHN0cmluZ1xyXG4gIHBlcm1pc3Npb25zOiBzdHJpbmdbXVxyXG4gIHJvbGVzOiBSb2xlW11cclxuICBzZXNzaW9uOiBTZXNzaW9uXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUm9sZSBleHRlbmRzIExhcmF2ZWxNb2RlbCB7XHJcbiAgY29kZTogc3RyaW5nXHJcbiAgbmFtZTogc3RyaW5nXHJcbiAgZ3VhcmRfbmFtZTogc3RyaW5nXHJcbiAgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25bXVxyXG4gIHJvbGVfdHlwZV9pZDogbnVtYmVyXHJcbiAgcm9sZV90eXBlOiBSb2xlVHlwZVxyXG4gIGNvbXBhbnlfY291bnRyeV9pZDogbnVtYmVyXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUm9sZVR5cGUgZXh0ZW5kcyBMYXJhdmVsTW9kZWwge1xyXG4gIG5hbWU6IHN0cmluZ1xyXG4gIGxldmVsOiBudW1iZXJcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQZXJtaXNzaW9uIGV4dGVuZHMgTGFyYXZlbE1vZGVsIHtcclxuICBuYW1lOiBzdHJpbmdcclxuICBndWFyZF9uYW1lOiBzdHJpbmdcclxuICBwaXZvdDoge1xyXG4gICAgcm9sZV9pZDogbnVtYmVyXHJcbiAgICBwZXJtaXNzaW9uX2lkOiBudW1iZXJcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVXNlciBleHRlbmRzIExhcmF2ZWxNb2RlbCB7XHJcbiAgbmFtZTogc3RyaW5nXHJcbiAgdXNlcm5hbWU6IHN0cmluZ1xyXG4gIGVtYWlsOiBzdHJpbmdcclxuICBtb2RlbF90eXBlOiBzdHJpbmdcclxuICBtb2RlbF9pZDogbnVtYmVyXHJcbiAgYXV0aF90eXBlOiBzdHJpbmdcclxuICBsYW5ndWFnZV9pZDogbnVtYmVyXHJcbiAgcGVybWlzc2lvbnM6IHN0cmluZ1tdXHJcbiAgcm9sZTogUm9sZVxyXG4gIHNlc3Npb246IFNlc3Npb25cclxuICBsYW5ndWFnZTogTGFuZ3VhZ2VcclxufVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXNlY3VyaXR5LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXhwZXJ0ZWFtL25neC1zZXJ2aWNlcy9zcmMvbGliL2FwaXMvbW9kZWxzL2FwaS1zZWN1cml0eS50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2Vzc2lvbiwgVXNlciB9IGZyb20gJy4vYXBpLXNlY3VyaXR5LmludGVyZmFjZXMnXHJcblxyXG5leHBvcnQgdHlwZSBMb2dpbkluID0ge1xyXG4gIHVzZXJuYW1lOiBzdHJpbmdcclxuICBwYXNzd29yZDogc3RyaW5nXHJcbiAgcm9sZT86IHN0cmluZ1xyXG59XHJcbmV4cG9ydCB0eXBlIExvZ2luT3V0ID0ge1xyXG4gIGFjY2Vzc190b2tlbjogc3RyaW5nXHJcbiAgdG9rZW5fdHlwZTogc3RyaW5nXHJcbiAgZXhwaXJlc19pbjogbnVtYmVyXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIENyZWF0ZVNlc3Npb25JbiA9IHtcclxuICBtb2RlbFR5cGU6IHN0cmluZ1xyXG4gIG1vZGVsSWQ6IG51bWJlclxyXG4gIHRva2VuPzogc3RyaW5nXHJcbn1cclxuZXhwb3J0IHR5cGUgQ3JlYXRlU2Vzc2lvbk91dCA9IHtcclxuICBzZXNzaW9uOiBTZXNzaW9uXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEdldFVzZXJPdXQgPSB7XHJcbiAgdXNlcjogVXNlclxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1lT3V0IGV4dGVuZHMgR2V0VXNlck91dCB7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEdldFVzZXJJbmZvSW4gPSB7XHJcbiAgdG9rZW46IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDaGFuZ2VMYW5ndWFnZUluID0ge1xyXG4gIGxhbmd1YWdlSWQ6IG51bWJlclxyXG59XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4cGVydGVhbS9uZ3gtc2VydmljZXMvc3JjL2xpYi9hcGlzL21vZGVscy9hcGkubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEFwaVJlc3BvbnNlIHtcclxuICBzdGF0dXM6ICdzdWNjZXNzJyB8ICdmYWlsJyB8ICdlcnJvcidcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBcGlTdWNjZXNzPFQ+IGV4dGVuZHMgQXBpUmVzcG9uc2Uge1xyXG4gIHN0YXR1czogJ3N1Y2Nlc3MnXHJcbiAgZGF0YTogVFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFwaU1vZGVsIHtcclxuICBpZDogbnVtYmVyXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGFyYXZlbE1vZGVsIGV4dGVuZHMgQXBpTW9kZWwge1xyXG4gIGlzX2FjdGl2ZTogYm9vbGVhblxyXG4gIGNyZWF0ZWRfYXQ6IERhdGUgfCBzdHJpbmdcclxuICB1cGRhdGVkX2F0OiBEYXRlIHwgc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3ltZm9ueU1vZGVsIGV4dGVuZHMgQXBpTW9kZWwge1xyXG4gIGlzQWN0aXZlOiBib29sZWFuXHJcbiAgY3JlYXRlZEF0OiBEYXRlIHwgc3RyaW5nXHJcbiAgdXBkYXRlZEF0OiBEYXRlIHwgc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlQYXJhbXMge1xyXG4gIFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj5cclxufVxyXG4iXX0=
@@ -0,0 +1,64 @@
1
+ import { HttpHeaders, HttpParams } from '@angular/common/http';
2
+ /**
3
+ * Convert an object of key-value pairs into a URL query string.
4
+ *
5
+ * @param {Object} params - The key-value pairs to converted into a query string.
6
+ *
7
+ * @return {string} - The generated query string.
8
+ */
9
+ export const queryString = (params) => {
10
+ let queryElements = [];
11
+ Object.entries(params).forEach(([key, value]) => {
12
+ if (Array.isArray(value)) {
13
+ const arrayQuery = value
14
+ .map((item) => `${encodeURIComponent(key)}=${encodeURIComponent(item)}`)
15
+ .join('&');
16
+ queryElements.push(arrayQuery);
17
+ }
18
+ else {
19
+ const encodedQuery = `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;
20
+ queryElements.push(encodedQuery);
21
+ }
22
+ });
23
+ const queryString = queryElements.join('&');
24
+ return queryString.length ? `?${queryString}` : '';
25
+ };
26
+ /**
27
+ * Creates an instance of HttpParams using the provided params object.
28
+ *
29
+ * @param {Object} params - The object containing the params to the HttpParams constructor.
30
+ *
31
+ * @returns {HttpParams} - An instance of HttpParams created from the params object.
32
+ */
33
+ export const httpParams = (params) => new HttpParams({ fromObject: params });
34
+ /**
35
+ * Returns the headers for generating PDF files.
36
+ *
37
+ * @param {string} format - The format of the headers, 'object' or 'http_header'.
38
+ *
39
+ * @returns {HttpHeaders | { [header: string]: string | string[] }} - The headers for generating PDF files.
40
+ */
41
+ export const pdfHeaders = (format = 'object') => {
42
+ const headers = {
43
+ 'Accept': 'application/pdf'
44
+ };
45
+ return format === 'object'
46
+ ? headers
47
+ : new HttpHeaders(headers);
48
+ };
49
+ /**
50
+ * Returns the headers for generating XML files.
51
+ *
52
+ * @param {string} format - The format of the headers, 'object' or 'http_header'.
53
+ *
54
+ * @returns {HttpHeaders | { [header: string]: string | string[] }} - The headers for generating XML files.
55
+ */
56
+ export const xmlHeaders = (format = 'object') => {
57
+ const headers = {
58
+ 'Accept': 'application/xml',
59
+ };
60
+ return format === 'object'
61
+ ? headers
62
+ : new HttpHeaders(headers);
63
+ };
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4cGVydGVhbS9uZ3gtc2VydmljZXMvc3JjL2xpYi9oZWxwZXJzL2h0dHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUc5RDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxNQUFtQixFQUFVLEVBQUU7SUFDekQsSUFBSSxhQUFhLEdBQWEsRUFBRSxDQUFBO0lBRWhDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtRQUM5QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsTUFBTSxVQUFVLEdBQUcsS0FBSztpQkFDckIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLElBQWlDLENBQUMsRUFBRSxDQUFDO2lCQUNwRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7WUFFWixhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1NBQy9CO2FBQU07WUFDTCxNQUFNLFlBQVksR0FBRyxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLEtBQWtDLENBQUMsRUFBRSxDQUFBO1lBRTNHLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7U0FDakM7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUVGLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7SUFFM0MsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7QUFDcEQsQ0FBQyxDQUFBO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBbUIsRUFBYyxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtBQUVyRzs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxTQUFtQyxRQUFRLEVBRXBFLEVBQUU7SUFDRixNQUFNLE9BQU8sR0FBRztRQUNkLFFBQVEsRUFBRSxpQkFBaUI7S0FDNUIsQ0FBQTtJQUVELE9BQU8sTUFBTSxLQUFLLFFBQVE7UUFDeEIsQ0FBQyxDQUFDLE9BQU87UUFDVCxDQUFDLENBQUMsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUE7QUFDOUIsQ0FBQyxDQUFBO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsU0FBbUMsUUFBUSxFQUVwRSxFQUFFO0lBQ0YsTUFBTSxPQUFPLEdBQUc7UUFDZCxRQUFRLEVBQUUsaUJBQWlCO0tBQzVCLENBQUE7SUFFRCxPQUFPLE1BQU0sS0FBSyxRQUFRO1FBQ3hCLENBQUMsQ0FBQyxPQUFPO1FBQ1QsQ0FBQyxDQUFDLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQzlCLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXHJcbmltcG9ydCB7IFF1ZXJ5UGFyYW1zIH0gZnJvbSAnLi4vYXBpcy9tb2RlbHMvYXBpLm1vZGVscydcclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IGFuIG9iamVjdCBvZiBrZXktdmFsdWUgcGFpcnMgaW50byBhIFVSTCBxdWVyeSBzdHJpbmcuXHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXMgLSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNvbnZlcnRlZCBpbnRvIGEgcXVlcnkgc3RyaW5nLlxyXG4gKlxyXG4gKiBAcmV0dXJuIHtzdHJpbmd9IC0gVGhlIGdlbmVyYXRlZCBxdWVyeSBzdHJpbmcuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgcXVlcnlTdHJpbmcgPSAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IHN0cmluZyA9PiB7XHJcbiAgbGV0IHF1ZXJ5RWxlbWVudHM6IHN0cmluZ1tdID0gW11cclxuXHJcbiAgT2JqZWN0LmVudHJpZXMocGFyYW1zKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICBjb25zdCBhcnJheVF1ZXJ5ID0gdmFsdWVcclxuICAgICAgICAubWFwKChpdGVtKSA9PiBgJHtlbmNvZGVVUklDb21wb25lbnQoa2V5KX09JHtlbmNvZGVVUklDb21wb25lbnQoaXRlbSBhcyBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKX1gKVxyXG4gICAgICAgIC5qb2luKCcmJylcclxuXHJcbiAgICAgIHF1ZXJ5RWxlbWVudHMucHVzaChhcnJheVF1ZXJ5KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZW5jb2RlZFF1ZXJ5ID0gYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlIGFzIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pfWBcclxuXHJcbiAgICAgIHF1ZXJ5RWxlbWVudHMucHVzaChlbmNvZGVkUXVlcnkpXHJcbiAgICB9XHJcbiAgfSlcclxuXHJcbiAgY29uc3QgcXVlcnlTdHJpbmcgPSBxdWVyeUVsZW1lbnRzLmpvaW4oJyYnKVxyXG5cclxuICByZXR1cm4gcXVlcnlTdHJpbmcubGVuZ3RoID8gYD8ke3F1ZXJ5U3RyaW5nfWAgOiAnJ1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBIdHRwUGFyYW1zIHVzaW5nIHRoZSBwcm92aWRlZCBwYXJhbXMgb2JqZWN0LlxyXG4gKlxyXG4gKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zIC0gVGhlIG9iamVjdCBjb250YWluaW5nIHRoZSBwYXJhbXMgdG8gdGhlIEh0dHBQYXJhbXMgY29uc3RydWN0b3IuXHJcbiAqXHJcbiAqIEByZXR1cm5zIHtIdHRwUGFyYW1zfSAtIEFuIGluc3RhbmNlIG9mIEh0dHBQYXJhbXMgY3JlYXRlZCBmcm9tIHRoZSBwYXJhbXMgb2JqZWN0LlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGh0dHBQYXJhbXMgPSAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IEh0dHBQYXJhbXMgPT4gbmV3IEh0dHBQYXJhbXMoeyBmcm9tT2JqZWN0OiBwYXJhbXMgfSlcclxuXHJcbi8qKlxyXG4gKiBSZXR1cm5zIHRoZSBoZWFkZXJzIGZvciBnZW5lcmF0aW5nIFBERiBmaWxlcy5cclxuICpcclxuICogQHBhcmFtIHtzdHJpbmd9IGZvcm1hdCAtIFRoZSBmb3JtYXQgb2YgdGhlIGhlYWRlcnMsICdvYmplY3QnIG9yICdodHRwX2hlYWRlcicuXHJcbiAqXHJcbiAqIEByZXR1cm5zIHtIdHRwSGVhZGVycyB8IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfX0gLSBUaGUgaGVhZGVycyBmb3IgZ2VuZXJhdGluZyBQREYgZmlsZXMuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgcGRmSGVhZGVycyA9IChmb3JtYXQ6ICdvYmplY3QnIHwgJ2h0dHBfaGVhZGVyJyA9ICdvYmplY3QnKTogSHR0cEhlYWRlcnMgfCB7XHJcbiAgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW11cclxufSA9PiB7XHJcbiAgY29uc3QgaGVhZGVycyA9IHtcclxuICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vcGRmJ1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGZvcm1hdCA9PT0gJ29iamVjdCdcclxuICAgID8gaGVhZGVyc1xyXG4gICAgOiBuZXcgSHR0cEhlYWRlcnMoaGVhZGVycylcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgdGhlIGhlYWRlcnMgZm9yIGdlbmVyYXRpbmcgWE1MIGZpbGVzLlxyXG4gKlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gZm9ybWF0IC0gVGhlIGZvcm1hdCBvZiB0aGUgaGVhZGVycywgJ29iamVjdCcgb3IgJ2h0dHBfaGVhZGVyJy5cclxuICpcclxuICogQHJldHVybnMge0h0dHBIZWFkZXJzIHwgeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9fSAtIFRoZSBoZWFkZXJzIGZvciBnZW5lcmF0aW5nIFhNTCBmaWxlcy5cclxuICovXHJcbmV4cG9ydCBjb25zdCB4bWxIZWFkZXJzID0gKGZvcm1hdDogJ29iamVjdCcgfCAnaHR0cF9oZWFkZXInID0gJ29iamVjdCcpOiBIdHRwSGVhZGVycyB8IHtcclxuICBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXVxyXG59ID0+IHtcclxuICBjb25zdCBoZWFkZXJzID0ge1xyXG4gICAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi94bWwnLFxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGZvcm1hdCA9PT0gJ29iamVjdCdcclxuICAgID8gaGVhZGVyc1xyXG4gICAgOiBuZXcgSHR0cEhlYWRlcnMoaGVhZGVycylcclxufVxyXG4iXX0=
@@ -0,0 +1,34 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { HttpHeaders } from '@angular/common/http';
3
+ import * as i0 from "@angular/core";
4
+ export class ApiHeadersInterceptor {
5
+ /**
6
+ * Intercepts HTTP requests and adds common headers.
7
+ *
8
+ * @param {HttpRequest<unknown>} request - The HTTP request intercepted.
9
+ * @param {HttpHandler} next - The next handler in the chain.
10
+ *
11
+ * @returns {Observable<HttpEvent<unknown>>} - Observable of the HTTP event after interception.
12
+ */
13
+ intercept(request, next) {
14
+ let headers = new HttpHeaders({
15
+ 'cache-control': 'max-age=0, no-cache, no-store, must-revalidate',
16
+ 'expires': '0',
17
+ 'pragma': 'no-cache'
18
+ });
19
+ if (!request.headers.has('Content-Type'))
20
+ headers = headers.set('Content-Type', 'application/json');
21
+ if (!request.headers.has('Accept'))
22
+ headers = headers.set('Accept', 'application/json');
23
+ if (!request.headers.has('Accept-Language'))
24
+ headers = headers.set('Accept-Language', localStorage.getItem('lang') ?? 'en');
25
+ request = request.clone({ headers });
26
+ return next.handle(request);
27
+ }
28
+ }
29
+ ApiHeadersInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiHeadersInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
30
+ ApiHeadersInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiHeadersInterceptor });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiHeadersInterceptor, decorators: [{
32
+ type: Injectable
33
+ }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWhlYWRlcnMuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHBlcnRlYW0vbmd4LXNlcnZpY2VzL3NyYy9saWIvaW50ZXJjZXB0b3JzL2FwaS1oZWFkZXJzLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUEwQixXQUFXLEVBQWdDLE1BQU0sc0JBQXNCLENBQUE7O0FBSXhHLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEM7Ozs7Ozs7T0FPRztJQUNILFNBQVMsQ0FBRSxPQUE2QixFQUFFLElBQWlCO1FBQ3pELElBQUksT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDO1lBQzVCLGVBQWUsRUFBRSxnREFBZ0Q7WUFDakUsU0FBUyxFQUFFLEdBQUc7WUFDZCxRQUFRLEVBQUUsVUFBVTtTQUNyQixDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDO1lBQ3RDLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFBO1FBRTNELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDaEMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLENBQUE7UUFFckQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDO1lBQ3pDLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUE7UUFFaEYsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBRXBDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUM3QixDQUFDOzttSEE1QlUscUJBQXFCO3VIQUFyQixxQkFBcUI7NEZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyLCBIdHRwSGVhZGVycywgSHR0cEludGVyY2VwdG9yLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEFwaUhlYWRlcnNJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcbiAgLyoqXHJcbiAgICogSW50ZXJjZXB0cyBIVFRQIHJlcXVlc3RzIGFuZCBhZGRzIGNvbW1vbiBoZWFkZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtIdHRwUmVxdWVzdDx1bmtub3duPn0gcmVxdWVzdCAtIFRoZSBIVFRQIHJlcXVlc3QgaW50ZXJjZXB0ZWQuXHJcbiAgICogQHBhcmFtIHtIdHRwSGFuZGxlcn0gbmV4dCAtIFRoZSBuZXh0IGhhbmRsZXIgaW4gdGhlIGNoYWluLlxyXG4gICAqXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8SHR0cEV2ZW50PHVua25vd24+Pn0gLSBPYnNlcnZhYmxlIG9mIHRoZSBIVFRQIGV2ZW50IGFmdGVyIGludGVyY2VwdGlvbi5cclxuICAgKi9cclxuICBpbnRlcmNlcHQgKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PHVua25vd24+PiB7XHJcbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICdjYWNoZS1jb250cm9sJzogJ21heC1hZ2U9MCwgbm8tY2FjaGUsIG5vLXN0b3JlLCBtdXN0LXJldmFsaWRhdGUnLFxyXG4gICAgICAnZXhwaXJlcyc6ICcwJyxcclxuICAgICAgJ3ByYWdtYSc6ICduby1jYWNoZSdcclxuICAgIH0pXHJcblxyXG4gICAgaWYgKCFyZXF1ZXN0LmhlYWRlcnMuaGFzKCdDb250ZW50LVR5cGUnKSlcclxuICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpXHJcblxyXG4gICAgaWYgKCFyZXF1ZXN0LmhlYWRlcnMuaGFzKCdBY2NlcHQnKSlcclxuICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCAnYXBwbGljYXRpb24vanNvbicpXHJcblxyXG4gICAgaWYgKCFyZXF1ZXN0LmhlYWRlcnMuaGFzKCdBY2NlcHQtTGFuZ3VhZ2UnKSlcclxuICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQtTGFuZ3VhZ2UnLCBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZycpID8/ICdlbicpXHJcblxyXG4gICAgcmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoeyBoZWFkZXJzIH0pXHJcblxyXG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpXHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,38 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ApiKeyInterceptor {
4
+ constructor(environments) {
5
+ this.environments = environments;
6
+ }
7
+ /**
8
+ * Intercepts the HTTP request and adds the Authorization header.
9
+ *
10
+ * @param {HttpRequest<unknown>} request - The HTTP request to intercept.
11
+ * @param {HttpHandler} next - The next HTTP handler in the chain.
12
+ *
13
+ * @returns {Observable<HttpEvent<unknown>>} - An observable containing the HTTP event.
14
+ */
15
+ intercept(request, next) {
16
+ const keyName = this.environments.keyName;
17
+ const keyValue = this.environments.keyValue;
18
+ if (!keyName || !keyValue)
19
+ return next.handle(request);
20
+ if (request.headers.has(keyName))
21
+ return next.handle(request);
22
+ request = request.clone({
23
+ setHeaders: {
24
+ [keyName]: keyValue
25
+ }
26
+ });
27
+ return next.handle(request);
28
+ }
29
+ }
30
+ ApiKeyInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiKeyInterceptor, deps: [{ token: 'env' }], target: i0.ɵɵFactoryTarget.Injectable });
31
+ ApiKeyInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiKeyInterceptor });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiKeyInterceptor, decorators: [{
33
+ type: Injectable
34
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
35
+ type: Inject,
36
+ args: ['env']
37
+ }] }]; } });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWtleS5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4cGVydGVhbS9uZ3gtc2VydmljZXMvc3JjL2xpYi9pbnRlcmNlcHRvcnMvYXBpLWtleS5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTs7QUFNbEQsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixZQUN5QixZQUF5QjtRQUF6QixpQkFBWSxHQUFaLFlBQVksQ0FBYTtJQUMvQyxDQUFDO0lBRUo7Ozs7Ozs7T0FPRztJQUNILFNBQVMsQ0FBRSxPQUE2QixFQUFFLElBQWlCO1FBQ3pELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFBO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFBO1FBRTNDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUU3QixJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7UUFFN0IsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDdEIsVUFBVSxFQUFFO2dCQUNWLENBQUMsT0FBTyxDQUFDLEVBQUUsUUFBUTthQUNwQjtTQUNGLENBQUMsQ0FBQTtRQUVGLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUM3QixDQUFDOzsrR0E5QlUsaUJBQWlCLGtCQUVsQixLQUFLO21IQUZKLGlCQUFpQjs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVOzswQkFHTixNQUFNOzJCQUFDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uL25neC1zZXJ2aWNlcy5tb2RlbHMnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBcGlLZXlJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcbiAgY29uc3RydWN0b3IgKFxyXG4gICAgQEluamVjdCgnZW52JykgcHJpdmF0ZSBlbnZpcm9ubWVudHM6IEVudmlyb25tZW50LFxyXG4gICkge31cclxuXHJcbiAgLyoqXHJcbiAgICogSW50ZXJjZXB0cyB0aGUgSFRUUCByZXF1ZXN0IGFuZCBhZGRzIHRoZSBBdXRob3JpemF0aW9uIGhlYWRlci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7SHR0cFJlcXVlc3Q8dW5rbm93bj59IHJlcXVlc3QgLSBUaGUgSFRUUCByZXF1ZXN0IHRvIGludGVyY2VwdC5cclxuICAgKiBAcGFyYW0ge0h0dHBIYW5kbGVyfSBuZXh0IC0gVGhlIG5leHQgSFRUUCBoYW5kbGVyIGluIHRoZSBjaGFpbi5cclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPEh0dHBFdmVudDx1bmtub3duPj59IC0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSBIVFRQIGV2ZW50LlxyXG4gICAqL1xyXG4gIGludGVyY2VwdCAocmVxdWVzdDogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8dW5rbm93bj4+IHtcclxuICAgIGNvbnN0IGtleU5hbWUgPSB0aGlzLmVudmlyb25tZW50cy5rZXlOYW1lXHJcbiAgICBjb25zdCBrZXlWYWx1ZSA9IHRoaXMuZW52aXJvbm1lbnRzLmtleVZhbHVlXHJcblxyXG4gICAgaWYgKCFrZXlOYW1lIHx8ICFrZXlWYWx1ZSlcclxuICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpXHJcblxyXG4gICAgaWYgKHJlcXVlc3QuaGVhZGVycy5oYXMoa2V5TmFtZSkpXHJcbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KVxyXG5cclxuICAgIHJlcXVlc3QgPSByZXF1ZXN0LmNsb25lKHtcclxuICAgICAgc2V0SGVhZGVyczoge1xyXG4gICAgICAgIFtrZXlOYW1lXToga2V5VmFsdWVcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdClcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,35 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "ngx-cookie-service";
4
+ export class ApiTokenInterceptor {
5
+ constructor(cookie) {
6
+ this.cookie = cookie;
7
+ }
8
+ /**
9
+ * Intercepts the HTTP request and adds the Authorization header.
10
+ *
11
+ * @param {HttpRequest<unknown>} request - The HTTP request to intercept.
12
+ * @param {HttpHandler} next - The next HTTP handler in the chain.
13
+ *
14
+ * @returns {Observable<HttpEvent<unknown>>} - An observable containing the HTTP event.
15
+ */
16
+ intercept(request, next) {
17
+ if (request.headers.has('Authorization'))
18
+ return next.handle(request);
19
+ const token = this.cookie.get('tokenCRA');
20
+ if (!token)
21
+ return next.handle(request);
22
+ request = request.clone({
23
+ setHeaders: {
24
+ Authorization: `Bearer ${token}`
25
+ }
26
+ });
27
+ return next.handle(request);
28
+ }
29
+ }
30
+ ApiTokenInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiTokenInterceptor, deps: [{ token: i1.CookieService }], target: i0.ɵɵFactoryTarget.Injectable });
31
+ ApiTokenInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiTokenInterceptor });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiTokenInterceptor, decorators: [{
33
+ type: Injectable
34
+ }], ctorParameters: function () { return [{ type: i1.CookieService }]; } });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXRva2VuLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXhwZXJ0ZWFtL25neC1zZXJ2aWNlcy9zcmMvbGliL2ludGVyY2VwdG9ycy9hcGktdG9rZW4uaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTs7O0FBTTFDLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsWUFBcUIsTUFBcUI7UUFBckIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtJQUFHLENBQUM7SUFFOUM7Ozs7Ozs7T0FPRztJQUNILFNBQVMsQ0FBRSxPQUE2QixFQUFFLElBQWlCO1FBQ3pELElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDO1lBQ3RDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUU3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUV6QyxJQUFJLENBQUMsS0FBSztZQUNSLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUU3QixPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUN0QixVQUFVLEVBQUU7Z0JBQ1YsYUFBYSxFQUFFLFVBQVUsS0FBSyxFQUFFO2FBQ2pDO1NBQ0YsQ0FBQyxDQUFBO1FBRUYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzdCLENBQUM7O2lIQTNCVSxtQkFBbUI7cUhBQW5CLG1CQUFtQjs0RkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7IEh0dHBFdmVudCwgSHR0cEhhbmRsZXIsIEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tICduZ3gtY29va2llLXNlcnZpY2UnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBcGlUb2tlbkludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcclxuICBjb25zdHJ1Y3RvciAocHJpdmF0ZSBjb29raWU6IENvb2tpZVNlcnZpY2UpIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIEludGVyY2VwdHMgdGhlIEhUVFAgcmVxdWVzdCBhbmQgYWRkcyB0aGUgQXV0aG9yaXphdGlvbiBoZWFkZXIuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0h0dHBSZXF1ZXN0PHVua25vd24+fSByZXF1ZXN0IC0gVGhlIEhUVFAgcmVxdWVzdCB0byBpbnRlcmNlcHQuXHJcbiAgICogQHBhcmFtIHtIdHRwSGFuZGxlcn0gbmV4dCAtIFRoZSBuZXh0IEhUVFAgaGFuZGxlciBpbiB0aGUgY2hhaW4uXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxIdHRwRXZlbnQ8dW5rbm93bj4+fSAtIEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgSFRUUCBldmVudC5cclxuICAgKi9cclxuICBpbnRlcmNlcHQgKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PHVua25vd24+PiB7XHJcbiAgICBpZiAocmVxdWVzdC5oZWFkZXJzLmhhcygnQXV0aG9yaXphdGlvbicpKVxyXG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdClcclxuXHJcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuY29va2llLmdldCgndG9rZW5DUkEnKVxyXG5cclxuICAgIGlmICghdG9rZW4pXHJcbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KVxyXG5cclxuICAgIHJlcXVlc3QgPSByZXF1ZXN0LmNsb25lKHtcclxuICAgICAgc2V0SGVhZGVyczoge1xyXG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpXHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,38 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { HttpResponse } from '@angular/common/http';
3
+ import { of } from 'rxjs';
4
+ import { tap } from 'rxjs/operators';
5
+ import * as i0 from "@angular/core";
6
+ const DEFAULT_TTL = 10000; // ttl in ms
7
+ export class HttpCachingInterceptor {
8
+ constructor(envs) {
9
+ this.envs = envs;
10
+ this.cache = new Map();
11
+ }
12
+ intercept(req, next) {
13
+ if (req.method !== 'GET')
14
+ return next.handle(req);
15
+ const cached = this.cache.get(req.urlWithParams);
16
+ if (cached) {
17
+ const isExpired = Date.now() > cached.ttl;
18
+ if (!isExpired)
19
+ return of(cached.res);
20
+ this.cache.delete(req.urlWithParams); // If expired, remove the entry from cache
21
+ }
22
+ return next.handle(req).pipe(tap((res) => {
23
+ if (!(res instanceof HttpResponse))
24
+ return;
25
+ const ttl = Date.now() + (this.envs.cacheTtl ?? DEFAULT_TTL);
26
+ this.cache.set(req.urlWithParams, { res, ttl });
27
+ }));
28
+ }
29
+ }
30
+ HttpCachingInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: HttpCachingInterceptor, deps: [{ token: 'env' }], target: i0.ɵɵFactoryTarget.Injectable });
31
+ HttpCachingInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: HttpCachingInterceptor });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: HttpCachingInterceptor, decorators: [{
33
+ type: Injectable
34
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
35
+ type: Inject,
36
+ args: ['env']
37
+ }] }]; } });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jYWNoaW5nLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXhwZXJ0ZWFtL25neC1zZXJ2aWNlcy9zcmMvbGliL2ludGVyY2VwdG9ycy9odHRwLWNhY2hpbmcuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUF3RCxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUV6RyxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTs7QUFHcEMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFBLENBQUMsWUFBWTtBQUd0QyxNQUFNLE9BQU8sc0JBQXNCO0lBR2pDLFlBQW9DLElBQWlCO1FBQWpCLFNBQUksR0FBSixJQUFJLENBQWE7UUFGN0MsVUFBSyxHQUFHLElBQUksR0FBRyxFQUFtRCxDQUFBO0lBRWxCLENBQUM7SUFFekQsU0FBUyxDQUFFLEdBQXFCLEVBQUUsSUFBaUI7UUFDakQsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEtBQUs7WUFDdEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRXpCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUVoRCxJQUFJLE1BQU0sRUFBRTtZQUNWLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFBO1lBRXpDLElBQUksQ0FBQyxTQUFTO2dCQUNaLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUV2QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUEsQ0FBQywwQ0FBMEM7U0FDaEY7UUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUMxQixHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNWLElBQUksQ0FBQyxDQUFDLEdBQUcsWUFBWSxZQUFZLENBQUM7Z0JBQ2hDLE9BQU07WUFFUixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxXQUFXLENBQUMsQ0FBQTtZQUU1RCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUE7UUFDakQsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7O29IQTlCVSxzQkFBc0Isa0JBR1osS0FBSzt3SEFIZixzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVTs7MEJBSUssTUFBTTsyQkFBQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgSHR0cEV2ZW50LCBIdHRwSGFuZGxlciwgSHR0cEludGVyY2VwdG9yLCBIdHRwUmVxdWVzdCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uL25neC1zZXJ2aWNlcy5tb2RlbHMnXHJcblxyXG5jb25zdCBERUZBVUxUX1RUTCA9IDEwMDAwIC8vIHR0bCBpbiBtc1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgSHR0cENhY2hpbmdJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcbiAgcHJpdmF0ZSBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCB7IHR0bDogbnVtYmVyLCByZXM6IEh0dHBSZXNwb25zZTxhbnk+IH0+KClcclxuXHJcbiAgY29uc3RydWN0b3IgKEBJbmplY3QoJ2VudicpIHByaXZhdGUgZW52czogRW52aXJvbm1lbnQpIHt9XHJcblxyXG4gIGludGVyY2VwdCAocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcclxuICAgIGlmIChyZXEubWV0aG9kICE9PSAnR0VUJylcclxuICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSlcclxuXHJcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLmNhY2hlLmdldChyZXEudXJsV2l0aFBhcmFtcylcclxuXHJcbiAgICBpZiAoY2FjaGVkKSB7XHJcbiAgICAgIGNvbnN0IGlzRXhwaXJlZCA9IERhdGUubm93KCkgPiBjYWNoZWQudHRsXHJcblxyXG4gICAgICBpZiAoIWlzRXhwaXJlZClcclxuICAgICAgICByZXR1cm4gb2YoY2FjaGVkLnJlcylcclxuXHJcbiAgICAgIHRoaXMuY2FjaGUuZGVsZXRlKHJlcS51cmxXaXRoUGFyYW1zKSAvLyBJZiBleHBpcmVkLCByZW1vdmUgdGhlIGVudHJ5IGZyb20gY2FjaGVcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKS5waXBlKFxyXG4gICAgICB0YXAoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmICghKHJlcyBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkpXHJcbiAgICAgICAgICByZXR1cm5cclxuXHJcbiAgICAgICAgY29uc3QgdHRsID0gRGF0ZS5ub3coKSArICh0aGlzLmVudnMuY2FjaGVUdGwgPz8gREVGQVVMVF9UVEwpXHJcblxyXG4gICAgICAgIHRoaXMuY2FjaGUuc2V0KHJlcS51cmxXaXRoUGFyYW1zLCB7IHJlcywgdHRsIH0pXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXNlcnZpY2VzLm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4cGVydGVhbS9uZ3gtc2VydmljZXMvc3JjL2xpYi9uZ3gtc2VydmljZXMubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBFbnZpcm9ubWVudCA9IHtcclxuICAvLyBjb25maWdzXHJcbiAgY2FjaGVUdGw/OiBudW1iZXJcclxuICBrZXlOYW1lPzogc3RyaW5nXHJcbiAga2V5VmFsdWU/OiBzdHJpbmdcclxuICAvLyBhcGlzXHJcbiAgYXBpQ2F0YWxvZ3NVcmw/OiBzdHJpbmdcclxuICBhcGlDb21wYW5pZXNVcmw/OiBzdHJpbmdcclxuICBhcGlFeHRlcm5hbE9wcz86IHN0cmluZ1xyXG4gIGFwaVNlY3VyaXR5VXJsPzogc3RyaW5nXHJcbn1cclxuIl19
@@ -0,0 +1,37 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { HttpClientModule } from '@angular/common/http';
3
+ import * as i0 from "@angular/core";
4
+ export class NgxServicesModule {
5
+ /**
6
+ * Returns a module with providers for the NgxServicesModule.
7
+ *
8
+ * @param {Environment} environment - The environment configuration object.
9
+ *
10
+ * @return {ModuleWithProviders<NgxServicesModule>} The module with providers for the NgxServicesModule.
11
+ */
12
+ static forRoot(environment) {
13
+ return {
14
+ ngModule: NgxServicesModule,
15
+ providers: [
16
+ {
17
+ provide: 'env',
18
+ useValue: environment
19
+ }
20
+ ]
21
+ };
22
+ }
23
+ }
24
+ NgxServicesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NgxServicesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
25
+ NgxServicesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: NgxServicesModule, imports: [HttpClientModule] });
26
+ NgxServicesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NgxServicesModule, imports: [HttpClientModule] });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NgxServicesModule, decorators: [{
28
+ type: NgModule,
29
+ args: [{
30
+ declarations: [],
31
+ imports: [
32
+ HttpClientModule
33
+ ],
34
+ exports: []
35
+ }]
36
+ }] });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXNlcnZpY2VzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4cGVydGVhbS9uZ3gtc2VydmljZXMvc3JjL2xpYi9uZ3gtc2VydmljZXMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFBOztBQVN2RCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxPQUFPLENBQUUsV0FBd0I7UUFDN0MsT0FBTztZQUNMLFFBQVEsRUFBRSxpQkFBaUI7WUFDM0IsU0FBUyxFQUFFO2dCQUNUO29CQUNFLE9BQU8sRUFBRSxLQUFLO29CQUNkLFFBQVEsRUFBRSxXQUFXO2lCQUN0QjthQUNGO1NBQ0YsQ0FBQTtJQUNILENBQUM7OytHQWxCVSxpQkFBaUI7Z0hBQWpCLGlCQUFpQixZQUoxQixnQkFBZ0I7Z0hBSVAsaUJBQWlCLFlBSjFCLGdCQUFnQjs0RkFJUCxpQkFBaUI7a0JBUDdCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRTt3QkFDUCxnQkFBZ0I7cUJBQ2pCO29CQUNELE9BQU8sRUFBRSxFQUFFO2lCQUNaIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4vbmd4LXNlcnZpY2VzLm1vZGVscydcclxuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEh0dHBDbGllbnRNb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hTZXJ2aWNlc01vZHVsZSB7XHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBhIG1vZHVsZSB3aXRoIHByb3ZpZGVycyBmb3IgdGhlIE5neFNlcnZpY2VzTW9kdWxlLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtFbnZpcm9ubWVudH0gZW52aXJvbm1lbnQgLSBUaGUgZW52aXJvbm1lbnQgY29uZmlndXJhdGlvbiBvYmplY3QuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHtNb2R1bGVXaXRoUHJvdmlkZXJzPE5neFNlcnZpY2VzTW9kdWxlPn0gVGhlIG1vZHVsZSB3aXRoIHByb3ZpZGVycyBmb3IgdGhlIE5neFNlcnZpY2VzTW9kdWxlLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgZm9yUm9vdCAoZW52aXJvbm1lbnQ6IEVudmlyb25tZW50KTogTW9kdWxlV2l0aFByb3ZpZGVyczxOZ3hTZXJ2aWNlc01vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IE5neFNlcnZpY2VzTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm92aWRlOiAnZW52JyxcclxuICAgICAgICAgIHVzZVZhbHVlOiBlbnZpcm9ubWVudFxyXG4gICAgICAgIH1cclxuICAgICAgXVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,27 @@
1
+ /*
2
+ * Public API Surface of ngx-services
3
+ */
4
+ export * from './lib/ngx-services.module';
5
+ // api services
6
+ export * from './lib/apis/api-catalogs.service';
7
+ export * from './lib/apis/api-companies.service';
8
+ export * from './lib/apis/api-external-ops.service';
9
+ export * from './lib/apis/api-security.service';
10
+ // api models
11
+ export * from './lib/apis/models/api-catalogs.interfaces';
12
+ export * from './lib/apis/models/api-catalogs.types';
13
+ export * from './lib/apis/models/api-companies.interfaces';
14
+ export * from './lib/apis/models/api-companies.types';
15
+ export * from './lib/apis/models/api-external-ops.interfaces';
16
+ export * from './lib/apis/models/api-external-ops.types';
17
+ export * from './lib/apis/models/api-security.interfaces';
18
+ export * from './lib/apis/models/api-security.types';
19
+ export * from './lib/apis/models/api.models';
20
+ // interceptors
21
+ export * from './lib/interceptors/api-headers.interceptor';
22
+ export * from './lib/interceptors/api-key.interceptor';
23
+ export * from './lib/interceptors/api-token.interceptor';
24
+ export * from './lib/interceptors/http-caching.interceptor';
25
+ // helpers
26
+ export * from './lib/helpers/http';
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4cGVydGVhbS9uZ3gtc2VydmljZXMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLDJCQUEyQixDQUFBO0FBRXpDLGVBQWU7QUFDZixjQUFjLGlDQUFpQyxDQUFBO0FBQy9DLGNBQWMsa0NBQWtDLENBQUE7QUFDaEQsY0FBYyxxQ0FBcUMsQ0FBQTtBQUNuRCxjQUFjLGlDQUFpQyxDQUFBO0FBRS9DLGFBQWE7QUFDYixjQUFjLDJDQUEyQyxDQUFBO0FBQ3pELGNBQWMsc0NBQXNDLENBQUE7QUFDcEQsY0FBYyw0Q0FBNEMsQ0FBQTtBQUMxRCxjQUFjLHVDQUF1QyxDQUFBO0FBQ3JELGNBQWMsK0NBQStDLENBQUE7QUFDN0QsY0FBYywwQ0FBMEMsQ0FBQTtBQUN4RCxjQUFjLDJDQUEyQyxDQUFBO0FBQ3pELGNBQWMsc0NBQXNDLENBQUE7QUFDcEQsY0FBYyw4QkFBOEIsQ0FBQTtBQUU1QyxlQUFlO0FBQ2YsY0FBYyw0Q0FBNEMsQ0FBQTtBQUMxRCxjQUFjLHdDQUF3QyxDQUFBO0FBQ3RELGNBQWMsMENBQTBDLENBQUE7QUFDeEQsY0FBYyw2Q0FBNkMsQ0FBQTtBQUUzRCxVQUFVO0FBQ1YsY0FBYyxvQkFBb0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZ3gtc2VydmljZXNcclxuICovXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL25neC1zZXJ2aWNlcy5tb2R1bGUnXHJcblxyXG4vLyBhcGkgc2VydmljZXNcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpcy9hcGktY2F0YWxvZ3Muc2VydmljZSdcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpcy9hcGktY29tcGFuaWVzLnNlcnZpY2UnXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaXMvYXBpLWV4dGVybmFsLW9wcy5zZXJ2aWNlJ1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGlzL2FwaS1zZWN1cml0eS5zZXJ2aWNlJ1xyXG5cclxuLy8gYXBpIG1vZGVsc1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGlzL21vZGVscy9hcGktY2F0YWxvZ3MuaW50ZXJmYWNlcydcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpcy9tb2RlbHMvYXBpLWNhdGFsb2dzLnR5cGVzJ1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGlzL21vZGVscy9hcGktY29tcGFuaWVzLmludGVyZmFjZXMnXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaXMvbW9kZWxzL2FwaS1jb21wYW5pZXMudHlwZXMnXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaXMvbW9kZWxzL2FwaS1leHRlcm5hbC1vcHMuaW50ZXJmYWNlcydcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpcy9tb2RlbHMvYXBpLWV4dGVybmFsLW9wcy50eXBlcydcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpcy9tb2RlbHMvYXBpLXNlY3VyaXR5LmludGVyZmFjZXMnXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaXMvbW9kZWxzL2FwaS1zZWN1cml0eS50eXBlcydcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpcy9tb2RlbHMvYXBpLm1vZGVscydcclxuXHJcbi8vIGludGVyY2VwdG9yc1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmNlcHRvcnMvYXBpLWhlYWRlcnMuaW50ZXJjZXB0b3InXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyY2VwdG9ycy9hcGkta2V5LmludGVyY2VwdG9yJ1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmNlcHRvcnMvYXBpLXRva2VuLmludGVyY2VwdG9yJ1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmNlcHRvcnMvaHR0cC1jYWNoaW5nLmludGVyY2VwdG9yJ1xyXG5cclxuLy8gaGVscGVyc1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9oZWxwZXJzL2h0dHAnXHJcbiJdfQ==
@@ -0,0 +1,42 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { map } from 'rxjs';
3
+ import { httpParams } from '../helpers/http';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common/http";
6
+ export class ApiCatalogsService {
7
+ constructor(environments, http) {
8
+ this.environments = environments;
9
+ this.http = http;
10
+ }
11
+ /**
12
+ * Retrieves the URL from the environments' API catalogs configuration.
13
+ *
14
+ * @return {string} The URL from the API catalogs, or an empty string if not defined.
15
+ */
16
+ get url() {
17
+ return this.environments.apiCatalogsUrl ?? '';
18
+ }
19
+ /**
20
+ * Fetches a list of languages based on the provided query parameters.
21
+ *
22
+ * @param {QueryParams} params - The query parameters to filter the languages.
23
+ * @return {Observable<LanguagesData>} An observable containing the languages' data.
24
+ */
25
+ getLanguages(params) {
26
+ return this.http.get(`${this.url}/languages`, {
27
+ params: httpParams(params),
28
+ }).pipe(map(({ data }) => data));
29
+ }
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiCatalogsService, deps: [{ token: 'env' }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
31
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiCatalogsService, providedIn: 'root' }); }
32
+ }
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiCatalogsService, decorators: [{
34
+ type: Injectable,
35
+ args: [{
36
+ providedIn: 'root'
37
+ }]
38
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
39
+ type: Inject,
40
+ args: ['env']
41
+ }] }, { type: i1.HttpClient }]; } });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNhdGFsb2dzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHBlcnRlYW0vbmd4LXNlcnZpY2VzL3NyYy9saWIvYXBpcy9hcGktY2F0YWxvZ3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUVsRCxPQUFPLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFBO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTs7O0FBUTVDLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFDeUIsWUFBeUIsRUFDeEMsSUFBZ0I7UUFERCxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUN4QyxTQUFJLEdBQUosSUFBSSxDQUFZO0lBQ3RCLENBQUM7SUFFTDs7OztPQUlHO0lBQ0gsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUE7SUFDL0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFFLE1BQW1CO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQTRCLEdBQUcsSUFBSSxDQUFDLEdBQUcsWUFBWSxFQUFFO1lBQ3ZFLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDO1NBQzNCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDOytHQXpCVSxrQkFBa0Isa0JBRW5CLEtBQUs7bUhBRkosa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUdJLE1BQU07MkJBQUMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7IEFwaVN1Y2Nlc3MsIFF1ZXJ5UGFyYW1zIH0gZnJvbSAnLi9tb2RlbHMvYXBpLm1vZGVscydcclxuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgaHR0cFBhcmFtcyB9IGZyb20gJy4uL2hlbHBlcnMvaHR0cCdcclxuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi9uZ3gtc2VydmljZXMubW9kZWxzJ1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXHJcbmltcG9ydCB7IExhbmd1YWdlc0RhdGEgfSBmcm9tICcuL21vZGVscy9hcGktY2F0YWxvZ3MudHlwZXMnXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcGlDYXRhbG9nc1NlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yIChcclxuICAgIEBJbmplY3QoJ2VudicpIHByaXZhdGUgZW52aXJvbm1lbnRzOiBFbnZpcm9ubWVudCxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICApIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIFVSTCBmcm9tIHRoZSBlbnZpcm9ubWVudHMnIEFQSSBjYXRhbG9ncyBjb25maWd1cmF0aW9uLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgVVJMIGZyb20gdGhlIEFQSSBjYXRhbG9ncywgb3IgYW4gZW1wdHkgc3RyaW5nIGlmIG5vdCBkZWZpbmVkLlxyXG4gICAqL1xyXG4gIGdldCB1cmwgKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5lbnZpcm9ubWVudHMuYXBpQ2F0YWxvZ3NVcmwgPz8gJydcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgYSBsaXN0IG9mIGxhbmd1YWdlcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIHRvIGZpbHRlciB0aGUgbGFuZ3VhZ2VzLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8TGFuZ3VhZ2VzRGF0YT59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgbGFuZ3VhZ2VzJyBkYXRhLlxyXG4gICAqL1xyXG4gIGdldExhbmd1YWdlcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8TGFuZ3VhZ2VzRGF0YT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxMYW5ndWFnZXNEYXRhPj4oYCR7dGhpcy51cmx9L2xhbmd1YWdlc2AsIHtcclxuICAgICAgcGFyYW1zOiBodHRwUGFyYW1zKHBhcmFtcyksXHJcbiAgICB9KS5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -14,7 +14,7 @@ export class ApiCompaniesService {
14
14
  * @return {string} The URL of the companies API.
15
15
  */
16
16
  get url() {
17
- return this.environments.apiCompaniesUrl;
17
+ return this.environments.apiCompaniesUrl ?? '';
18
18
  }
19
19
  /**
20
20
  * Fetches the installations based on the provided query parameters.
@@ -252,4 +252,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
252
252
  type: Inject,
253
253
  args: ['env']
254
254
  }] }, { type: i1.HttpClient }]; } });
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNvbXBhbmllcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXhwZXJ0ZWFtL25neC1zZXJ2aWNlcy9zcmMvbGliL2FwaXMvYXBpLWNvbXBhbmllcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBMkJsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQWMsTUFBTSxNQUFNLENBQUE7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFBOzs7QUFNNUMsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUN5QixZQUF5QixFQUN4QyxJQUFnQjtRQURELGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3hDLFNBQUksR0FBSixJQUFJLENBQVk7SUFDdEIsQ0FBQztJQUVMOzs7O09BSUc7SUFDSCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFBO0lBQzFDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGdCQUFnQixDQUFFLE1BQW1CO1FBQ25DLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWdDLEdBQUcsSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLEVBQUU7WUFDL0UsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUM7U0FDM0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGVBQWUsQ0FBRSxFQUFVO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQStCLEdBQUcsSUFBSSxDQUFDLEdBQUcsa0JBQWtCLEVBQUUsRUFB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T0FLRztJQUNILFlBQVksQ0FBRSxNQUFtQjtRQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUE0QixHQUFHLElBQUksQ0FBQyxHQUFHLFlBQVksRUFBRTtZQUN2RSxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQztTQUMzQixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQzsrR0EvUVUsbUJBQW1CLGtCQUVwQixLQUFLO21IQUZKLG1CQUFtQixjQUZsQixNQUFNOzs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFHSSxNQUFNOzJCQUFDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uL25neC1zZXJ2aWNlcy5tb2RlbHMnXHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcclxuaW1wb3J0IHtcclxuICBBY2NvdW50RW50aXRpZXNEYXRhLFxyXG4gIENvbXBhbnlDb3VudHJpZXNEYXRhLFxyXG4gIENvbXBhbnlDb3VudHJ5RGF0YSxcclxuICBDb21wYW55Q291bnRyeVRheGVzRGF0YSxcclxuICBDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY2llc0RhdGEsXHJcbiAgQ291bnRyeVJlZmVyZW5jZURhdGEsXHJcbiAgQ291bnRyeVJlZmVyZW5jZXNEYXRhLFxyXG4gIEVtcGxveWVlRGF0YSxcclxuICBFbXBsb3llZXNEYXRhLFxyXG4gIEV4Y2hhbmdlc0RhdGEsXHJcbiAgSW5zdGFsbGF0aW9uRGF0YSxcclxuICBJbnN0YWxsYXRpb25zRGF0YSxcclxuICBMb2NhdGlvbkRhdGEsXHJcbiAgTG9jYXRpb25FbXBsb3llZXNEYXRhLFxyXG4gIExvY2F0aW9uc0RhdGEsXHJcbiAgUGFyYW1ldGVyc0RhdGEsXHJcbiAgUGFyYW1ldGVyc1Byb3BzLFxyXG4gIFBhcmFtZXRlclZhbHVlRGF0YSxcclxuICBQYXJhbWV0ZXJWYWx1ZVByb3BzLFxyXG4gIFN1cHBseUVudGl0aWVzRGF0YSxcclxuICBXb3JrZmxvd3NEYXRhXHJcbn0gZnJvbSAnLi9tb2RlbHMvYXBpLWNvbXBhbmllcy50eXBlcydcclxuaW1wb3J0IHsgQXBpU3VjY2VzcywgUXVlcnlQYXJhbXMgfSBmcm9tICcuL21vZGVscy9hcGkubW9kZWxzJ1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgbWFwLCBtZXJnZU1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IGh0dHBQYXJhbXMgfSBmcm9tICcuLi9oZWxwZXJzL2h0dHAnXHJcbmltcG9ydCB7IENvdW50cnlDdXJyZW5jeVJhdGUgfSBmcm9tICcuL21vZGVscy9hcGktY29tcGFuaWVzLmludGVyZmFjZXMnXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcGlDb21wYW5pZXNTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvciAoXHJcbiAgICBASW5qZWN0KCdlbnYnKSBwcml2YXRlIGVudmlyb25tZW50czogRW52aXJvbm1lbnQsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBVUkwgZm9yIHRoZSBjb21wYW5pZXMgQVBJIGZyb20gdGhlIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb25zLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgVVJMIG9mIHRoZSBjb21wYW5pZXMgQVBJLlxyXG4gICAqL1xyXG4gIGdldCB1cmwgKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5lbnZpcm9ubWVudHMuYXBpQ29tcGFuaWVzVXJsXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBpbnN0YWxsYXRpb25zIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgdXNlZCB0byBmaWx0ZXIgdGhlIGluc3RhbGxhdGlvbnMgcXVlcnkuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxJbnN0YWxsYXRpb25zRGF0YT59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgaW5zdGFsbGF0aW9ucyBkYXRhLlxyXG4gICAqL1xyXG4gIGdldEluc3RhbGxhdGlvbnMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPEluc3RhbGxhdGlvbnNEYXRhPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEluc3RhbGxhdGlvbnNEYXRhPj4oYCR7dGhpcy51cmx9L2luc3RhbGxhdGlvbnNgLCB7XHJcbiAgICAgIHBhcmFtczogaHR0cFBhcmFtcyhwYXJhbXMpLFxyXG4gICAgfSkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgaW5zdGFsbGF0aW9uIGRldGFpbHMgYmFzZWQgb24gdGhlIGdpdmVuIGluc3RhbGxhdGlvbiBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgaW5zdGFsbGF0aW9uIHRvIHJldHJpZXZlLlxyXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPEluc3RhbGxhdGlvbkRhdGE+fSBBbiBvYnNlcnZhYmxlIG9mIHRoZSBpbnN0YWxsYXRpb24gZGV0YWlscy5cclxuICAgKi9cclxuICBnZXRJbnN0YWxsYXRpb24gKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPEluc3RhbGxhdGlvbkRhdGE+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8SW5zdGFsbGF0aW9uRGF0YT4+KGAke3RoaXMudXJsfS9pbnN0YWxsYXRpb25zLyR7aWR9YClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGxvY2F0aW9ucyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIHRvIHVzZSBmb3IgcXVlcnlpbmcgbG9jYXRpb25zLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8TG9jYXRpb25zRGF0YT59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgbG9jYXRpb25zIGRhdGEuXHJcbiAgICovXHJcbiAgZ2V0TG9jYXRpb25zIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxMb2NhdGlvbnNEYXRhPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPExvY2F0aW9uc0RhdGE+PihgJHt0aGlzLnVybH0vbG9jYXRpb25zYCwge1xyXG4gICAgICBwYXJhbXM6IGh0dHBQYXJhbXMocGFyYW1zKSxcclxuICAgIH0pLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBsb2NhdGlvbiBkZXRhaWxzIGZvciBhIGdpdmVuIGxvY2F0aW9uIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBsb2NhdGlvbi5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPExvY2F0aW9uRGF0YT59IEFuIE9ic2VydmFibGUgY29udGFpbmluZyB0aGUgbG9jYXRpb24gZGV0YWlscy5cclxuICAgKi9cclxuICBnZXRMb2NhdGlvbiAoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8TG9jYXRpb25EYXRhPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPExvY2F0aW9uRGF0YT4+KGAke3RoaXMudXJsfS9sb2NhdGlvbnMvJHtpZH1gKVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2YgYWN0aXZlIHN1cHBseSBlbnRpdGllcy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIHRvIGZpbHRlciBzdXBwbHkgZW50aXRpZXMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxTdXBwbHlFbnRpdGllc0RhdGE+fSBPYnNlcnZhYmxlIGVtaXR0aW5nIHN1cHBseSBlbnRpdGllcyBkYXRhLlxyXG4gICAqL1xyXG4gIGdldFN1cHBseUVudGl0aWVzQWN0aXZlIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxTdXBwbHlFbnRpdGllc0RhdGE+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8U3VwcGx5RW50aXRpZXNEYXRhPj4oYCR7dGhpcy51cmx9L3N1cHBseS1lbnRpdGllcy9hY3RpdmVzYCwge1xyXG4gICAgICBwYXJhbXM6IGh0dHBQYXJhbXMocGFyYW1zKSxcclxuICAgIH0pLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIGEgbGlzdCBvZiBlbXBsb3llZXMgYmFzZWQgb24gdGhlIHNwZWNpZmllZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgdG8gZmlsdGVyIGFuZCBzb3J0IHRoZSBlbXBsb3llZXMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxFbXBsb3llZXNEYXRhPn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBsaXN0IG9mIGVtcGxveWVlcy5cclxuICAgKi9cclxuICBnZXRFbXBsb3llZXMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPEVtcGxveWVlc0RhdGE+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8RW1wbG95ZWVzRGF0YT4+KGAke3RoaXMudXJsfS9lbXBsb3llZXNgLCB7XHJcbiAgICAgIHBhcmFtczogaHR0cFBhcmFtcyhwYXJhbXMpLFxyXG4gICAgfSkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgYW4gZW1wbG95ZWUncyBkZXRhaWxzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBlbXBsb3llZSBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgZW1wbG95ZWUuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxFbXBsb3llZURhdGE+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGVtcGxveWVlJ3MgZGV0YWlscy5cclxuICAgKi9cclxuICBnZXRFbXBsb3llZSAoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8RW1wbG95ZWVEYXRhPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEVtcGxveWVlRGF0YT4+KGAke3RoaXMudXJsfS9lbXBsb3llZXMvJHtpZH1gKVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgbGlzdCBvZiBlbXBsb3llZXMgZm9yIGEgc3BlY2lmaWVkIGxvY2F0aW9uIGJhc2VkIG9uIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcXVlcnkgcGFyYW1ldGVycyB1c2VkIHRvIGZpbHRlciBhbmQgcmV0cmlldmUgdGhlIGxvY2F0aW9uIGVtcGxveWVlcy5cclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxMb2NhdGlvbkVtcGxveWVlc0RhdGE+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGxpc3Qgb2YgZW1wbG95ZWVzIGZvciB0aGUgc3BlY2lmaWVkIGxvY2F0aW9uLlxyXG4gICAqL1xyXG4gIGdldExvY2F0aW9uRW1wbG95ZWVzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxMb2NhdGlvbkVtcGxveWVlc0RhdGE+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8TG9jYXRpb25FbXBsb3llZXNEYXRhPj4oYCR7dGhpcy51cmx9L2xvY2F0aW9uLWVtcGxveWVlc2AsIHtcclxuICAgICAgcGFyYW1zOiBodHRwUGFyYW1zKHBhcmFtcyksXHJcbiAgICB9KS5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBjb3VudHJpZXMgd2hlcmUgdGhlIGNvbXBhbnkgb3BlcmF0ZXMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcXVlcnkgcGFyYW1ldGVycyBmb3IgdGhlIEFQSSByZXF1ZXN0LlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Q29tcGFueUNvdW50cmllc0RhdGE+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIGxpc3Qgb2YgY29tcGFueSBjb3VudHJpZXMuXHJcbiAgICovXHJcbiAgZ2V0Q29tcGFueUNvdW50cmllcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8Q29tcGFueUNvdW50cmllc0RhdGE+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8Q29tcGFueUNvdW50cmllc0RhdGE+PihgJHt0aGlzLnVybH0vY29tcGFueS1jb3VudHJpZXNgLCB7XHJcbiAgICAgIHBhcmFtczogaHR0cFBhcmFtcyhwYXJhbXMpLFxyXG4gICAgfSkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGNvdW50cnkgaW5mb3JtYXRpb24gZm9yIGEgc3BlY2lmaWVkIGNvbXBhbnkgYnkgaXRzIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBjb21wYW55LlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Q29tcGFueUNvdW50cnlEYXRhPn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSBjb3VudHJ5IGluZm9ybWF0aW9uIG9mIHRoZSBjb21wYW55LlxyXG4gICAqL1xyXG4gIGdldENvbXBhbnlDb3VudHJ5IChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxDb21wYW55Q291bnRyeURhdGE+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8Q29tcGFueUNvdW50cnlEYXRhPj4oYCR7dGhpcy51cmx9L2NvbXBhbnktY291bnRyaWVzLyR7aWR9YClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSByZWZlcmVuY2UgY3VycmVuY2llcyBmb3IgYSBnaXZlbiBjb3VudHJ5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdG8gaW5jbHVkZSBpbiB0aGUgcmVxdWVzdC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENvdW50cnlSZWZlcmVuY2VDdXJyZW5jaWVzRGF0YT59IFRoZSBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIGNvdW50cnkgcmVmZXJlbmNlIGN1cnJlbmNpZXMgZGF0YS5cclxuICAgKi9cclxuICBnZXRDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY2llcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8Q291bnRyeVJlZmVyZW5jZUN1cnJlbmNpZXNEYXRhPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPENvdW50cnlSZWZlcmVuY2VDdXJyZW5jaWVzRGF0YT4+KFxyXG4gICAgICBgJHt0aGlzLnVybH0vY291bnRyeS1yZWZlcmVuY2UtY3VycmVuY2llc2AsXHJcbiAgICAgIHsgcGFyYW1zIH1cclxuICAgICkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2YgY3VycmVuY2llcyBmb3IgZGlmZmVyZW50IGNvdW50cmllcyBhbG9uZyB3aXRoIHRoZWlyIGN1cnJlbnQgZXhjaGFuZ2UgcmF0ZXMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcXVlcnkgcGFyYW1ldGVycyB1c2VkIHRvIGZldGNoIHRoZSBjb3VudHJ5IHJlZmVyZW5jZSBjdXJyZW5jaWVzLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Q291bnRyeUN1cnJlbmN5UmF0ZVtdPn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGFuIGFycmF5IG9mIGNvdW50cnkgY3VycmVuY3kgcmF0ZXMuXHJcbiAgICovXHJcbiAgZ2V0Q291bnRyeUN1cnJlbmNpZXNXaXRoUmF0ZSAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8Q291bnRyeUN1cnJlbmN5UmF0ZVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY2llcyhwYXJhbXMpXHJcbiAgICAgIC5waXBlKG1lcmdlTWFwKChjdXJyZW5jaWVzRGF0YSkgPT4ge1xyXG4gICAgICAgIGNvbnN0ICRvYnNlcnZhYmxlcyA9IGN1cnJlbmNpZXNEYXRhLmNvdW50cnlfcmVmZXJlbmNlX2N1cnJlbmNpZXNcclxuICAgICAgICAgIC5tYXAoKGNvdW50cnlfcmVmZXJlbmNlX2N1cnJlbmN5KSA9PlxyXG4gICAgICAgICAgICB0aGlzLmdldEN1cnJlbnRFeGNoYW5nZXMoe1xyXG4gICAgICAgICAgICAgIGN1cnJlbmN5X2lkOiBjb3VudHJ5X3JlZmVyZW5jZV9jdXJyZW5jeS5jdXJyZW5jeS5pZCxcclxuICAgICAgICAgICAgfSkucGlwZShcclxuICAgICAgICAgICAgICBtYXAoKGV4Y2hhbmdlc0RhdGEpID0+ICh7XHJcbiAgICAgICAgICAgICAgICAuLi5jb3VudHJ5X3JlZmVyZW5jZV9jdXJyZW5jeSxcclxuICAgICAgICAgICAgICAgIHJhdGU6IGV4Y2hhbmdlc0RhdGEuZXhjaGFuZ2VzWzBdPy52YWx1ZSA/PyAxLjAwLFxyXG4gICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApXHJcblxyXG4gICAgICAgIHJldHVybiBmb3JrSm9pbigkb2JzZXJ2YWJsZXMpXHJcbiAgICAgIH0pKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBjdXJyZW50IGV4Y2hhbmdlcyBiYXNlZCBvbiB0aGUgZ2l2ZW4gcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIHRvIGZpbHRlciB0aGUgZXhjaGFuZ2VzLlxyXG4gICAqXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8RXhjaGFuZ2VzRGF0YT59IC0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBBUEkgcmVzcG9uc2UgZGF0YSBjb250YWluaW5nIHRoZSBjdXJyZW50IGV4Y2hhbmdlcy5cclxuICAgKi9cclxuICBnZXRDdXJyZW50RXhjaGFuZ2VzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxFeGNoYW5nZXNEYXRhPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEV4Y2hhbmdlc0RhdGE+PihgJHt0aGlzLnVybH0vZXhjaGFuZ2VzL2N1cnJlbnRgLCB7XHJcbiAgICAgIHBhcmFtczogaHR0cFBhcmFtcyhwYXJhbXMpLFxyXG4gICAgfSkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIGNvdW50cnktc3BlY2lmaWMgdGF4IGluZm9ybWF0aW9uIGZvciBhIGNvbXBhbnkuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyB1c2VkIHRvIGZpbHRlciBhbmQgcXVlcnkgdGhlIHRheGVzLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Q29tcGFueUNvdW50cnlUYXhlc0RhdGE+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHRheCBpbmZvcm1hdGlvbi5cclxuICAgKi9cclxuICBnZXRDb21wYW55Q291bnRyeVRheGVzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxDb21wYW55Q291bnRyeVRheGVzRGF0YT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxDb21wYW55Q291bnRyeVRheGVzRGF0YT4+KGAke3RoaXMudXJsfS9jb21wYW55LWNvdW50cnktdGF4ZXNgLCB7XHJcbiAgICAgIHBhcmFtczogaHR0cFBhcmFtcyhwYXJhbXMpLFxyXG4gICAgfSkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgbGlzdCBvZiBhY3RpdmUgYWNjb3VudCBlbnRpdGllcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIHRvIGZpbHRlciBhbmQgcXVlcnkgYWN0aXZlIGFjY291bnQgZW50aXRpZXMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxBY2NvdW50RW50aXRpZXNEYXRhPn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBsaXN0IG9mIGFjdGl2ZSBhY2NvdW50IGVudGl0aWVzLlxyXG4gICAqL1xyXG4gIGdldEFjdGl2ZUFjY291bnRFbnRpdGllcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8QWNjb3VudEVudGl0aWVzRGF0YT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxBY2NvdW50RW50aXRpZXNEYXRhPj4oYCR7dGhpcy51cmx9L2FjY291bnQtZW50aXRpZXMvYWN0aXZlc2AsIHtcclxuICAgICAgcGFyYW1zOiBodHRwUGFyYW1zKHBhcmFtcyksXHJcbiAgICB9KS5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBwYXJhbWV0ZXIgdmFsdWVzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXIgbmFtZXMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlcXVpcmVkIHBhcmFtZXRlcnMuXHJcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGFyYW1zLnBhcmFtTmFtZXMgLSBBbiBhcnJheSBvZiBwYXJhbWV0ZXIgbmFtZXMgZm9yIHdoaWNoIHRoZSB2YWx1ZXMgbmVlZCB0byBiZSBmZXRjaGVkLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8UGFyYW1ldGVyc0RhdGE+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGZldGNoZWQgcGFyYW1ldGVyIHZhbHVlcy5cclxuICAgKi9cclxuICBnZXRQYXJhbWV0ZXJzICh7XHJcbiAgICBwYXJhbU5hbWVzLFxyXG4gIH06IFBhcmFtZXRlcnNQcm9wcyk6IE9ic2VydmFibGU8UGFyYW1ldGVyc0RhdGE+IHtcclxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBwYXJhbU5hbWVzLm1hcCgocCkgPT4gKHsgbmFtZTogcCB9KSlcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxQYXJhbWV0ZXJzRGF0YT4+KGAke3RoaXMudXJsfS9wYXJhbWV0ZXJzLXZhbHVlc2AsIHtcclxuICAgICAgcGFyYW1ldGVyc1xyXG4gICAgfSkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgdmFsdWUgb2YgYSBzcGVjaWZpZWQgcGFyYW1ldGVyLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IGlucHV0IC0gVGhlIGlucHV0IG9iamVjdCBjb250YWluaW5nIHRoZSBwYXJhbWV0ZXIgZGV0YWlscy5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gaW5wdXQucGFyYW1OYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciB3aG9zZSB2YWx1ZSBpcyB0byBiZSByZXRyaWV2ZWQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxQYXJhbWV0ZXJWYWx1ZURhdGE+fSBBbiBvYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlci5cclxuICAgKi9cclxuICBnZXRQYXJhbWV0ZXJWYWx1ZSAoe1xyXG4gICAgcGFyYW1OYW1lLFxyXG4gIH06IFBhcmFtZXRlclZhbHVlUHJvcHMpOiBPYnNlcnZhYmxlPFBhcmFtZXRlclZhbHVlRGF0YT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxQYXJhbWV0ZXJWYWx1ZURhdGE+PihgJHt0aGlzLnVybH0vcGFyYW1ldGVycy12YWx1ZXMvJHtwYXJhbU5hbWV9YClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGNvdW50cnkgcmVmZXJlbmNlcyBiYXNlZCBvbiB0aGUgZ2l2ZW4gcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIGZvciByZXRyaWV2aW5nIGNvdW50cnkgcmVmZXJlbmNlcy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENvdW50cnlSZWZlcmVuY2VzRGF0YT59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgY291bnRyeSByZWZlcmVuY2UgZGF0YS5cclxuICAgKi9cclxuICBnZXRDb3VudHJ5UmVmZXJlbmNlcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8Q291bnRyeVJlZmVyZW5jZXNEYXRhPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPENvdW50cnlSZWZlcmVuY2VzRGF0YT4+KGAke3RoaXMudXJsfS9jb3VudHJ5LXJlZmVyZW5jZXNgLCB7XHJcbiAgICAgIHBhcmFtczogaHR0cFBhcmFtcyhwYXJhbXMpLFxyXG4gICAgfSkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIGNvdW50cnkgcmVmZXJlbmNlIGRhdGEgZm9yIGEgZ2l2ZW4gY291bnRyeSBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgY291bnRyeSBmb3Igd2hpY2ggdGhlIHJlZmVyZW5jZSBkYXRhIGlzIHRvIGJlIHJldHJpZXZlZC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENvdW50cnlSZWZlcmVuY2VEYXRhPn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSBjb3VudHJ5IHJlZmVyZW5jZSBkYXRhLlxyXG4gICAqL1xyXG4gIGdldENvdW50cnlSZWZlcmVuY2UgKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPENvdW50cnlSZWZlcmVuY2VEYXRhPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPENvdW50cnlSZWZlcmVuY2VEYXRhPj4oYCR7dGhpcy51cmx9L2NvdW50cnktcmVmZXJlbmNlcy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgbGlzdCBvZiB3b3JrZmxvd3MgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcXVlcnkgcGFyYW1ldGVycyB1c2VkIHRvIGZpbHRlciB3b3JrZmxvd3MuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxXb3JrZmxvd3NEYXRhPn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSB3b3JrZmxvdyBkYXRhLlxyXG4gICAqL1xyXG4gIGdldFdvcmtmbG93cyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8V29ya2Zsb3dzRGF0YT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxXb3JrZmxvd3NEYXRhPj4oYCR7dGhpcy51cmx9L3dvcmtmbG93c2AsIHtcclxuICAgICAgcGFyYW1zOiBodHRwUGFyYW1zKHBhcmFtcyksXHJcbiAgICB9KS5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxufVxyXG4iXX0=
255
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNvbXBhbmllcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXhwZXJ0ZWFtL25neC1zZXJ2aWNlcy9zcmMvbGliL2FwaXMvYXBpLWNvbXBhbmllcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBMkJsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQWMsTUFBTSxNQUFNLENBQUE7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFBOzs7QUFNNUMsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUN5QixZQUF5QixFQUN4QyxJQUFnQjtRQURELGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3hDLFNBQUksR0FBSixJQUFJLENBQVk7SUFDdEIsQ0FBQztJQUVMOzs7O09BSUc7SUFDSCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQTtJQUNoRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxnQkFBZ0IsQ0FBRSxNQUFtQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFnQyxHQUFHLElBQUksQ0FBQyxHQUFHLGdCQUFnQixFQUFFO1lBQy9FLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDO1NBQzNCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxlQUFlLENBQUUsRUFBVTtRQUN6QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUErQixHQUFHLElBQUksQ0FBQyxHQUFHLGtCQUFr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O0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUUsTUFBbUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBNEIsR0FBRyxJQUFJLENBQUMsR0FBRyxZQUFZLEVBQUU7WUFDdkUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUM7U0FDM0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7K0dBL1FVLG1CQUFtQixrQkFFcEIsS0FBSzttSEFGSixtQkFBbUIsY0FGbEIsTUFBTTs7NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBR0ksTUFBTTsyQkFBQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi9uZ3gtc2VydmljZXMubW9kZWxzJ1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXHJcbmltcG9ydCB7XHJcbiAgQWNjb3VudEVudGl0aWVzRGF0YSxcclxuICBDb21wYW55Q291bnRyaWVzRGF0YSxcclxuICBDb21wYW55Q291bnRyeURhdGEsXHJcbiAgQ29tcGFueUNvdW50cnlUYXhlc0RhdGEsXHJcbiAgQ291bnRyeVJlZmVyZW5jZUN1cnJlbmNpZXNEYXRhLFxyXG4gIENvdW50cnlSZWZlcmVuY2VEYXRhLFxyXG4gIENvdW50cnlSZWZlcmVuY2VzRGF0YSxcclxuICBFbXBsb3llZURhdGEsXHJcbiAgRW1wbG95ZWVzRGF0YSxcclxuICBFeGNoYW5nZXNEYXRhLFxyXG4gIEluc3RhbGxhdGlvbkRhdGEsXHJcbiAgSW5zdGFsbGF0aW9uc0RhdGEsXHJcbiAgTG9jYXRpb25EYXRhLFxyXG4gIExvY2F0aW9uRW1wbG95ZWVzRGF0YSxcclxuICBMb2NhdGlvbnNEYXRhLFxyXG4gIFBhcmFtZXRlcnNEYXRhLFxyXG4gIFBhcmFtZXRlcnNQcm9wcyxcclxuICBQYXJhbWV0ZXJWYWx1ZURhdGEsXHJcbiAgUGFyYW1ldGVyVmFsdWVQcm9wcyxcclxuICBTdXBwbHlFbnRpdGllc0RhdGEsXHJcbiAgV29ya2Zsb3dzRGF0YVxyXG59IGZyb20gJy4vbW9kZWxzL2FwaS1jb21wYW5pZXMudHlwZXMnXHJcbmltcG9ydCB7IEFwaVN1Y2Nlc3MsIFF1ZXJ5UGFyYW1zIH0gZnJvbSAnLi9tb2RlbHMvYXBpLm1vZGVscydcclxuaW1wb3J0IHsgZm9ya0pvaW4sIG1hcCwgbWVyZ2VNYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBodHRwUGFyYW1zIH0gZnJvbSAnLi4vaGVscGVycy9odHRwJ1xyXG5pbXBvcnQgeyBDb3VudHJ5Q3VycmVuY3lSYXRlIH0gZnJvbSAnLi9tb2RlbHMvYXBpLWNvbXBhbmllcy5pbnRlcmZhY2VzJ1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBpQ29tcGFuaWVzU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IgKFxyXG4gICAgQEluamVjdCgnZW52JykgcHJpdmF0ZSBlbnZpcm9ubWVudHM6IEVudmlyb25tZW50LFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICkgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgVVJMIGZvciB0aGUgY29tcGFuaWVzIEFQSSBmcm9tIHRoZSBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9ucy5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIFVSTCBvZiB0aGUgY29tcGFuaWVzIEFQSS5cclxuICAgKi9cclxuICBnZXQgdXJsICgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZW52aXJvbm1lbnRzLmFwaUNvbXBhbmllc1VybCA/PyAnJ1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgaW5zdGFsbGF0aW9ucyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIHVzZWQgdG8gZmlsdGVyIHRoZSBpbnN0YWxsYXRpb25zIHF1ZXJ5LlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8SW5zdGFsbGF0aW9uc0RhdGE+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGluc3RhbGxhdGlvbnMgZGF0YS5cclxuICAgKi9cclxuICBnZXRJbnN0YWxsYXRpb25zIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxJbnN0YWxsYXRpb25zRGF0YT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxJbnN0YWxsYXRpb25zRGF0YT4+KGAke3RoaXMudXJsfS9pbnN0YWxsYXRpb25zYCwge1xyXG4gICAgICBwYXJhbXM6IGh0dHBQYXJhbXMocGFyYW1zKSxcclxuICAgIH0pLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGluc3RhbGxhdGlvbiBkZXRhaWxzIGJhc2VkIG9uIHRoZSBnaXZlbiBpbnN0YWxsYXRpb24gSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGluc3RhbGxhdGlvbiB0byByZXRyaWV2ZS5cclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxJbnN0YWxsYXRpb25EYXRhPn0gQW4gb2JzZXJ2YWJsZSBvZiB0aGUgaW5zdGFsbGF0aW9uIGRldGFpbHMuXHJcbiAgICovXHJcbiAgZ2V0SW5zdGFsbGF0aW9uIChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxJbnN0YWxsYXRpb25EYXRhPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEluc3RhbGxhdGlvbkRhdGE+PihgJHt0aGlzLnVybH0vaW5zdGFsbGF0aW9ucy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBsb2NhdGlvbnMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyB0byB1c2UgZm9yIHF1ZXJ5aW5nIGxvY2F0aW9ucy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPExvY2F0aW9uc0RhdGE+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGxvY2F0aW9ucyBkYXRhLlxyXG4gICAqL1xyXG4gIGdldExvY2F0aW9ucyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8TG9jYXRpb25zRGF0YT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxMb2NhdGlvbnNEYXRhPj4oYCR7dGhpcy51cmx9L2xvY2F0aW9uc2AsIHtcclxuICAgICAgcGFyYW1zOiBodHRwUGFyYW1zKHBhcmFtcyksXHJcbiAgICB9KS5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgbG9jYXRpb24gZGV0YWlscyBmb3IgYSBnaXZlbiBsb2NhdGlvbiBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgbG9jYXRpb24uXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxMb2NhdGlvbkRhdGE+fSBBbiBPYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIGxvY2F0aW9uIGRldGFpbHMuXHJcbiAgICovXHJcbiAgZ2V0TG9jYXRpb24gKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPExvY2F0aW9uRGF0YT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxMb2NhdGlvbkRhdGE+PihgJHt0aGlzLnVybH0vbG9jYXRpb25zLyR7aWR9YClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGFjdGl2ZSBzdXBwbHkgZW50aXRpZXMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcXVlcnkgcGFyYW1ldGVycyB0byBmaWx0ZXIgc3VwcGx5IGVudGl0aWVzLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8U3VwcGx5RW50aXRpZXNEYXRhPn0gT2JzZXJ2YWJsZSBlbWl0dGluZyBzdXBwbHkgZW50aXRpZXMgZGF0YS5cclxuICAgKi9cclxuICBnZXRTdXBwbHlFbnRpdGllc0FjdGl2ZSAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8U3VwcGx5RW50aXRpZXNEYXRhPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPFN1cHBseUVudGl0aWVzRGF0YT4+KGAke3RoaXMudXJsfS9zdXBwbHktZW50aXRpZXMvYWN0aXZlc2AsIHtcclxuICAgICAgcGFyYW1zOiBodHRwUGFyYW1zKHBhcmFtcyksXHJcbiAgICB9KS5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBhIGxpc3Qgb2YgZW1wbG95ZWVzIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIHRvIGZpbHRlciBhbmQgc29ydCB0aGUgZW1wbG95ZWVzLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RW1wbG95ZWVzRGF0YT59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgbGlzdCBvZiBlbXBsb3llZXMuXHJcbiAgICovXHJcbiAgZ2V0RW1wbG95ZWVzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxFbXBsb3llZXNEYXRhPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEVtcGxveWVlc0RhdGE+PihgJHt0aGlzLnVybH0vZW1wbG95ZWVzYCwge1xyXG4gICAgICBwYXJhbXM6IGh0dHBQYXJhbXMocGFyYW1zKSxcclxuICAgIH0pLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIGFuIGVtcGxveWVlJ3MgZGV0YWlscyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgZW1wbG95ZWUgSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGVtcGxveWVlLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RW1wbG95ZWVEYXRhPn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBlbXBsb3llZSdzIGRldGFpbHMuXHJcbiAgICovXHJcbiAgZ2V0RW1wbG95ZWUgKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPEVtcGxveWVlRGF0YT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxFbXBsb3llZURhdGE+PihgJHt0aGlzLnVybH0vZW1wbG95ZWVzLyR7aWR9YClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGxpc3Qgb2YgZW1wbG95ZWVzIGZvciBhIHNwZWNpZmllZCBsb2NhdGlvbiBiYXNlZCBvbiBwcm92aWRlZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdXNlZCB0byBmaWx0ZXIgYW5kIHJldHJpZXZlIHRoZSBsb2NhdGlvbiBlbXBsb3llZXMuXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8TG9jYXRpb25FbXBsb3llZXNEYXRhPn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBsaXN0IG9mIGVtcGxveWVlcyBmb3IgdGhlIHNwZWNpZmllZCBsb2NhdGlvbi5cclxuICAgKi9cclxuICBnZXRMb2NhdGlvbkVtcGxveWVlcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8TG9jYXRpb25FbXBsb3llZXNEYXRhPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPExvY2F0aW9uRW1wbG95ZWVzRGF0YT4+KGAke3RoaXMudXJsfS9sb2NhdGlvbi1lbXBsb3llZXNgLCB7XHJcbiAgICAgIHBhcmFtczogaHR0cFBhcmFtcyhwYXJhbXMpLFxyXG4gICAgfSkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2YgY291bnRyaWVzIHdoZXJlIHRoZSBjb21wYW55IG9wZXJhdGVzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgZm9yIHRoZSBBUEkgcmVxdWVzdC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENvbXBhbnlDb3VudHJpZXNEYXRhPn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSBsaXN0IG9mIGNvbXBhbnkgY291bnRyaWVzLlxyXG4gICAqL1xyXG4gIGdldENvbXBhbnlDb3VudHJpZXMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPENvbXBhbnlDb3VudHJpZXNEYXRhPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPENvbXBhbnlDb3VudHJpZXNEYXRhPj4oYCR7dGhpcy51cmx9L2NvbXBhbnktY291bnRyaWVzYCwge1xyXG4gICAgICBwYXJhbXM6IGh0dHBQYXJhbXMocGFyYW1zKSxcclxuICAgIH0pLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBjb3VudHJ5IGluZm9ybWF0aW9uIGZvciBhIHNwZWNpZmllZCBjb21wYW55IGJ5IGl0cyBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgY29tcGFueS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENvbXBhbnlDb3VudHJ5RGF0YT59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgY291bnRyeSBpbmZvcm1hdGlvbiBvZiB0aGUgY29tcGFueS5cclxuICAgKi9cclxuICBnZXRDb21wYW55Q291bnRyeSAoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8Q29tcGFueUNvdW50cnlEYXRhPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPENvbXBhbnlDb3VudHJ5RGF0YT4+KGAke3RoaXMudXJsfS9jb21wYW55LWNvdW50cmllcy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgcmVmZXJlbmNlIGN1cnJlbmNpZXMgZm9yIGEgZ2l2ZW4gY291bnRyeS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIHRvIGluY2x1ZGUgaW4gdGhlIHJlcXVlc3QuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY2llc0RhdGE+fSBUaGUgb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSBjb3VudHJ5IHJlZmVyZW5jZSBjdXJyZW5jaWVzIGRhdGEuXHJcbiAgICovXHJcbiAgZ2V0Q291bnRyeVJlZmVyZW5jZUN1cnJlbmNpZXMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPENvdW50cnlSZWZlcmVuY2VDdXJyZW5jaWVzRGF0YT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY2llc0RhdGE+PihcclxuICAgICAgYCR7dGhpcy51cmx9L2NvdW50cnktcmVmZXJlbmNlLWN1cnJlbmNpZXNgLFxyXG4gICAgICB7IHBhcmFtcyB9XHJcbiAgICApLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGN1cnJlbmNpZXMgZm9yIGRpZmZlcmVudCBjb3VudHJpZXMgYWxvbmcgd2l0aCB0aGVpciBjdXJyZW50IGV4Y2hhbmdlIHJhdGVzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdXNlZCB0byBmZXRjaCB0aGUgY291bnRyeSByZWZlcmVuY2UgY3VycmVuY2llcy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENvdW50cnlDdXJyZW5jeVJhdGVbXT59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyBhbiBhcnJheSBvZiBjb3VudHJ5IGN1cnJlbmN5IHJhdGVzLlxyXG4gICAqL1xyXG4gIGdldENvdW50cnlDdXJyZW5jaWVzV2l0aFJhdGUgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPENvdW50cnlDdXJyZW5jeVJhdGVbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q291bnRyeVJlZmVyZW5jZUN1cnJlbmNpZXMocGFyYW1zKVxyXG4gICAgICAucGlwZShtZXJnZU1hcCgoY3VycmVuY2llc0RhdGEpID0+IHtcclxuICAgICAgICBjb25zdCAkb2JzZXJ2YWJsZXMgPSBjdXJyZW5jaWVzRGF0YS5jb3VudHJ5X3JlZmVyZW5jZV9jdXJyZW5jaWVzXHJcbiAgICAgICAgICAubWFwKChjb3VudHJ5X3JlZmVyZW5jZV9jdXJyZW5jeSkgPT5cclxuICAgICAgICAgICAgdGhpcy5nZXRDdXJyZW50RXhjaGFuZ2VzKHtcclxuICAgICAgICAgICAgICBjdXJyZW5jeV9pZDogY291bnRyeV9yZWZlcmVuY2VfY3VycmVuY3kuY3VycmVuY3kuaWQsXHJcbiAgICAgICAgICAgIH0pLnBpcGUoXHJcbiAgICAgICAgICAgICAgbWFwKChleGNoYW5nZXNEYXRhKSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgLi4uY291bnRyeV9yZWZlcmVuY2VfY3VycmVuY3ksXHJcbiAgICAgICAgICAgICAgICByYXRlOiBleGNoYW5nZXNEYXRhLmV4Y2hhbmdlc1swXT8udmFsdWUgPz8gMS4wMCxcclxuICAgICAgICAgICAgICB9KSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKVxyXG5cclxuICAgICAgICByZXR1cm4gZm9ya0pvaW4oJG9ic2VydmFibGVzKVxyXG4gICAgICB9KSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBleGNoYW5nZXMgYmFzZWQgb24gdGhlIGdpdmVuIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcXVlcnkgcGFyYW1ldGVycyB0byBmaWx0ZXIgdGhlIGV4Y2hhbmdlcy5cclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPEV4Y2hhbmdlc0RhdGE+fSAtIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgQVBJIHJlc3BvbnNlIGRhdGEgY29udGFpbmluZyB0aGUgY3VycmVudCBleGNoYW5nZXMuXHJcbiAgICovXHJcbiAgZ2V0Q3VycmVudEV4Y2hhbmdlcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8RXhjaGFuZ2VzRGF0YT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxFeGNoYW5nZXNEYXRhPj4oYCR7dGhpcy51cmx9L2V4Y2hhbmdlcy9jdXJyZW50YCwge1xyXG4gICAgICBwYXJhbXM6IGh0dHBQYXJhbXMocGFyYW1zKSxcclxuICAgIH0pLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBjb3VudHJ5LXNwZWNpZmljIHRheCBpbmZvcm1hdGlvbiBmb3IgYSBjb21wYW55LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgdXNlZCB0byBmaWx0ZXIgYW5kIHF1ZXJ5IHRoZSB0YXhlcy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENvbXBhbnlDb3VudHJ5VGF4ZXNEYXRhPn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSB0YXggaW5mb3JtYXRpb24uXHJcbiAgICovXHJcbiAgZ2V0Q29tcGFueUNvdW50cnlUYXhlcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8Q29tcGFueUNvdW50cnlUYXhlc0RhdGE+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8Q29tcGFueUNvdW50cnlUYXhlc0RhdGE+PihgJHt0aGlzLnVybH0vY29tcGFueS1jb3VudHJ5LXRheGVzYCwge1xyXG4gICAgICBwYXJhbXM6IGh0dHBQYXJhbXMocGFyYW1zKSxcclxuICAgIH0pLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGxpc3Qgb2YgYWN0aXZlIGFjY291bnQgZW50aXRpZXMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyB0byBmaWx0ZXIgYW5kIHF1ZXJ5IGFjdGl2ZSBhY2NvdW50IGVudGl0aWVzLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8QWNjb3VudEVudGl0aWVzRGF0YT59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgbGlzdCBvZiBhY3RpdmUgYWNjb3VudCBlbnRpdGllcy5cclxuICAgKi9cclxuICBnZXRBY3RpdmVBY2NvdW50RW50aXRpZXMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPEFjY291bnRFbnRpdGllc0RhdGE+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8QWNjb3VudEVudGl0aWVzRGF0YT4+KGAke3RoaXMudXJsfS9hY2NvdW50LWVudGl0aWVzL2FjdGl2ZXNgLCB7XHJcbiAgICAgIHBhcmFtczogaHR0cFBhcmFtcyhwYXJhbXMpLFxyXG4gICAgfSkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgcGFyYW1ldGVyIHZhbHVlcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGFyYW1ldGVyIG5hbWVzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtcyAtIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSByZXF1aXJlZCBwYXJhbWV0ZXJzLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHBhcmFtcy5wYXJhbU5hbWVzIC0gQW4gYXJyYXkgb2YgcGFyYW1ldGVyIG5hbWVzIGZvciB3aGljaCB0aGUgdmFsdWVzIG5lZWQgdG8gYmUgZmV0Y2hlZC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFBhcmFtZXRlcnNEYXRhPn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBmZXRjaGVkIHBhcmFtZXRlciB2YWx1ZXMuXHJcbiAgICovXHJcbiAgZ2V0UGFyYW1ldGVycyAoe1xyXG4gICAgcGFyYW1OYW1lcyxcclxuICB9OiBQYXJhbWV0ZXJzUHJvcHMpOiBPYnNlcnZhYmxlPFBhcmFtZXRlcnNEYXRhPiB7XHJcbiAgICBjb25zdCBwYXJhbWV0ZXJzID0gcGFyYW1OYW1lcy5tYXAoKHApID0+ICh7IG5hbWU6IHAgfSkpXHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFwaVN1Y2Nlc3M8UGFyYW1ldGVyc0RhdGE+PihgJHt0aGlzLnVybH0vcGFyYW1ldGVycy12YWx1ZXNgLCB7XHJcbiAgICAgIHBhcmFtZXRlcnNcclxuICAgIH0pLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIHZhbHVlIG9mIGEgc3BlY2lmaWVkIHBhcmFtZXRlci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBpbnB1dCAtIFRoZSBpbnB1dCBvYmplY3QgY29udGFpbmluZyB0aGUgcGFyYW1ldGVyIGRldGFpbHMuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlucHV0LnBhcmFtTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgd2hvc2UgdmFsdWUgaXMgdG8gYmUgcmV0cmlldmVkLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8UGFyYW1ldGVyVmFsdWVEYXRhPn0gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXIuXHJcbiAgICovXHJcbiAgZ2V0UGFyYW1ldGVyVmFsdWUgKHtcclxuICAgIHBhcmFtTmFtZSxcclxuICB9OiBQYXJhbWV0ZXJWYWx1ZVByb3BzKTogT2JzZXJ2YWJsZTxQYXJhbWV0ZXJWYWx1ZURhdGE+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8UGFyYW1ldGVyVmFsdWVEYXRhPj4oYCR7dGhpcy51cmx9L3BhcmFtZXRlcnMtdmFsdWVzLyR7cGFyYW1OYW1lfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBjb3VudHJ5IHJlZmVyZW5jZXMgYmFzZWQgb24gdGhlIGdpdmVuIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcXVlcnkgcGFyYW1ldGVycyBmb3IgcmV0cmlldmluZyBjb3VudHJ5IHJlZmVyZW5jZXMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDb3VudHJ5UmVmZXJlbmNlc0RhdGE+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIGNvdW50cnkgcmVmZXJlbmNlIGRhdGEuXHJcbiAgICovXHJcbiAgZ2V0Q291bnRyeVJlZmVyZW5jZXMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPENvdW50cnlSZWZlcmVuY2VzRGF0YT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxDb3VudHJ5UmVmZXJlbmNlc0RhdGE+PihgJHt0aGlzLnVybH0vY291bnRyeS1yZWZlcmVuY2VzYCwge1xyXG4gICAgICBwYXJhbXM6IGh0dHBQYXJhbXMocGFyYW1zKSxcclxuICAgIH0pLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBjb3VudHJ5IHJlZmVyZW5jZSBkYXRhIGZvciBhIGdpdmVuIGNvdW50cnkgSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGNvdW50cnkgZm9yIHdoaWNoIHRoZSByZWZlcmVuY2UgZGF0YSBpcyB0byBiZSByZXRyaWV2ZWQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDb3VudHJ5UmVmZXJlbmNlRGF0YT59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgY291bnRyeSByZWZlcmVuY2UgZGF0YS5cclxuICAgKi9cclxuICBnZXRDb3VudHJ5UmVmZXJlbmNlIChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxDb3VudHJ5UmVmZXJlbmNlRGF0YT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxDb3VudHJ5UmVmZXJlbmNlRGF0YT4+KGAke3RoaXMudXJsfS9jb3VudHJ5LXJlZmVyZW5jZXMvJHtpZH1gKVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIGxpc3Qgb2Ygd29ya2Zsb3dzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdXNlZCB0byBmaWx0ZXIgd29ya2Zsb3dzLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8V29ya2Zsb3dzRGF0YT59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgd29ya2Zsb3cgZGF0YS5cclxuICAgKi9cclxuICBnZXRXb3JrZmxvd3MgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPFdvcmtmbG93c0RhdGE+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8V29ya2Zsb3dzRGF0YT4+KGAke3RoaXMudXJsfS93b3JrZmxvd3NgLCB7XHJcbiAgICAgIHBhcmFtczogaHR0cFBhcmFtcyhwYXJhbXMpLFxyXG4gICAgfSkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,53 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { map } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common/http";
5
+ export class ApiExternalOpsService {
6
+ constructor(environments, http) {
7
+ this.environments = environments;
8
+ this.http = http;
9
+ }
10
+ /**
11
+ * Retrieves the API pickups URL from the environments configuration.
12
+ *
13
+ * @return {string} The API pickups URL.
14
+ */
15
+ get url() {
16
+ return this.environments.apiExternalOps ?? '';
17
+ }
18
+ /**
19
+ * Retrieves delivery confirmation details based on the provided OTP code.
20
+ *
21
+ * @param {string} otpCode - The OTP code used to search for delivery confirmation.
22
+ * @return {Observable<DeliveryConfirmationData>} An observable containing the delivery confirmation data.
23
+ */
24
+ getDeliveryConfirmation(otpCode) {
25
+ return this.http.get(`${this.url}/delivery-confirmation/search/${otpCode}`)
26
+ .pipe(map(({ data }) => data));
27
+ }
28
+ /**
29
+ * Put a delivery confirmation by sending an OTP code and a signature.
30
+ *
31
+ * @param {Object} options - The options object
32
+ * @param {string} options.otpCode - The OTP code for confirming the delivery.
33
+ * @param {string} options.signature - The signature for the delivery confirmation.
34
+ * @return {Observable<{}>} An observable that completes when the delivery confirmation is successfully submitted.
35
+ */
36
+ putDeliveryConfirmation({ otpCode, signature, }) {
37
+ return this.http.put(`${this.url}/delivery-confirmation/confirmation/${otpCode}`, {
38
+ signature
39
+ }).pipe(map(({ data }) => data));
40
+ }
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiExternalOpsService, deps: [{ token: 'env' }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
42
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiExternalOpsService, providedIn: 'root' }); }
43
+ }
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiExternalOpsService, decorators: [{
45
+ type: Injectable,
46
+ args: [{
47
+ providedIn: 'root'
48
+ }]
49
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
50
+ type: Inject,
51
+ args: ['env']
52
+ }] }, { type: i1.HttpClient }]; } });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWV4dGVybmFsLW9wcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXhwZXJ0ZWFtL25neC1zZXJ2aWNlcy9zcmMvbGliL2FwaXMvYXBpLWV4dGVybmFsLW9wcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBSWxELE9BQU8sRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUE7OztBQU10QyxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQ3lCLFlBQXlCLEVBQ3hDLElBQWdCO1FBREQsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDeEMsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUN0QixDQUFDO0lBRUw7Ozs7T0FJRztJQUNILElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFBO0lBQy9DLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLHVCQUF1QixDQUFFLE9BQWU7UUFDN0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBdUMsR0FBRyxJQUFJLENBQUMsR0FBRyxpQ0FBaUMsT0FBTyxFQUFFLENBQUM7YUFDOUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSx1QkFBdUIsQ0FBRSxFQUM5QixPQUFPLEVBQ1AsU0FBUyxHQUNpQjtRQUMxQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFpQixHQUFHLElBQUksQ0FBQyxHQUFHLHVDQUF1QyxPQUFPLEVBQUUsRUFBRTtZQUNoRyxTQUFTO1NBQ1YsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7K0dBekNVLHFCQUFxQixrQkFFdEIsS0FBSzttSEFGSixxQkFBcUIsY0FGcEIsTUFBTTs7NEZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBR0ksTUFBTTsyQkFBQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi9uZ3gtc2VydmljZXMubW9kZWxzJ1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXHJcbmltcG9ydCB7IEFwaVN1Y2Nlc3MgfSBmcm9tICcuL21vZGVscy9hcGkubW9kZWxzJ1xyXG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBEZWxpdmVyeUNvbmZpcm1hdGlvbkRhdGEsIFB1dERlbGl2ZXJ5Q29uZmlybWF0aW9uSW4gfSBmcm9tICcuL21vZGVscy9hcGktZXh0ZXJuYWwtb3BzLnR5cGVzJ1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBpRXh0ZXJuYWxPcHNTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvciAoXHJcbiAgICBASW5qZWN0KCdlbnYnKSBwcml2YXRlIGVudmlyb25tZW50czogRW52aXJvbm1lbnQsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBBUEkgcGlja3VwcyBVUkwgZnJvbSB0aGUgZW52aXJvbm1lbnRzIGNvbmZpZ3VyYXRpb24uXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBBUEkgcGlja3VwcyBVUkwuXHJcbiAgICovXHJcbiAgZ2V0IHVybCAoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmVudmlyb25tZW50cy5hcGlFeHRlcm5hbE9wcyA/PyAnJ1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGRlbGl2ZXJ5IGNvbmZpcm1hdGlvbiBkZXRhaWxzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBPVFAgY29kZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvdHBDb2RlIC0gVGhlIE9UUCBjb2RlIHVzZWQgdG8gc2VhcmNoIGZvciBkZWxpdmVyeSBjb25maXJtYXRpb24uXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxEZWxpdmVyeUNvbmZpcm1hdGlvbkRhdGE+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIGRlbGl2ZXJ5IGNvbmZpcm1hdGlvbiBkYXRhLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXREZWxpdmVyeUNvbmZpcm1hdGlvbiAob3RwQ29kZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxEZWxpdmVyeUNvbmZpcm1hdGlvbkRhdGE+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8RGVsaXZlcnlDb25maXJtYXRpb25EYXRhPj4oYCR7dGhpcy51cmx9L2RlbGl2ZXJ5LWNvbmZpcm1hdGlvbi9zZWFyY2gvJHtvdHBDb2RlfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHV0IGEgZGVsaXZlcnkgY29uZmlybWF0aW9uIGJ5IHNlbmRpbmcgYW4gT1RQIGNvZGUgYW5kIGEgc2lnbmF0dXJlLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBvYmplY3RcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5vdHBDb2RlIC0gVGhlIE9UUCBjb2RlIGZvciBjb25maXJtaW5nIHRoZSBkZWxpdmVyeS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5zaWduYXR1cmUgLSBUaGUgc2lnbmF0dXJlIGZvciB0aGUgZGVsaXZlcnkgY29uZmlybWF0aW9uLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8e30+fSBBbiBvYnNlcnZhYmxlIHRoYXQgY29tcGxldGVzIHdoZW4gdGhlIGRlbGl2ZXJ5IGNvbmZpcm1hdGlvbiBpcyBzdWNjZXNzZnVsbHkgc3VibWl0dGVkLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBwdXREZWxpdmVyeUNvbmZpcm1hdGlvbiAoe1xyXG4gICAgb3RwQ29kZSxcclxuICAgIHNpZ25hdHVyZSxcclxuICB9OiBQdXREZWxpdmVyeUNvbmZpcm1hdGlvbkluKTogT2JzZXJ2YWJsZTx7fT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8QXBpU3VjY2Vzczx7fT4+KGAke3RoaXMudXJsfS9kZWxpdmVyeS1jb25maXJtYXRpb24vY29uZmlybWF0aW9uLyR7b3RwQ29kZX1gLCB7XHJcbiAgICAgIHNpZ25hdHVyZVxyXG4gICAgfSkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcbn1cclxuIl19