@c8y/ngx-components 1018.0.205 → 1018.0.206
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/api.service.d.ts +7 -1
- package/esm2020/api/api.service.mjs +17 -2
- package/esm2020/assets-navigator/asset-node.service.mjs +2 -2
- package/fesm2015/c8y-ngx-components-api.mjs +16 -1
- package/fesm2015/c8y-ngx-components-api.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-assets-navigator.mjs +1 -1
- package/fesm2015/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-api.mjs +16 -1
- package/fesm2020/c8y-ngx-components-api.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-assets-navigator.mjs +1 -1
- package/fesm2020/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/package.json +1 -1
package/api/api.service.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FetchClient } from '@c8y/client';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
2
|
+
import { Observable, MonoTypeOperatorFunction } from 'rxjs';
|
|
3
3
|
import { ApiCall } from './api.model';
|
|
4
4
|
import { HttpInterceptor } from './interceptor.model';
|
|
5
5
|
import { RequestStartAndFinish } from './http-handler.model';
|
|
@@ -32,6 +32,12 @@ export declare class ApiService implements RequestStartAndFinish {
|
|
|
32
32
|
method: string;
|
|
33
33
|
url: string;
|
|
34
34
|
}>;
|
|
35
|
+
/**
|
|
36
|
+
* Can be added to a pipe to exclude any permission call. Permission calls are PUT
|
|
37
|
+
* request with only an id in it, to verify if the user has access to this managed object.
|
|
38
|
+
* @returns The operator to be added to a pipe.
|
|
39
|
+
*/
|
|
40
|
+
excludePermissionCall(): MonoTypeOperatorFunction<ApiCall>;
|
|
35
41
|
/**
|
|
36
42
|
* Allows to intercept requests performed via the FetchClient requests.
|
|
37
43
|
* @param interceptor The interceptor to be added.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { FetchClient } from '@c8y/client';
|
|
3
|
-
import { Subject } from 'rxjs';
|
|
3
|
+
import { Subject, pipe } from 'rxjs';
|
|
4
4
|
import { filter } from 'rxjs/operators';
|
|
5
5
|
import { HttpInterceptHandler, HttpRequestHandler } from './http-handler.model';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
@@ -52,6 +52,21 @@ export class ApiService {
|
|
|
52
52
|
return response.clone().json().then(cb, cb);
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Can be added to a pipe to exclude any permission call. Permission calls are PUT
|
|
57
|
+
* request with only an id in it, to verify if the user has access to this managed object.
|
|
58
|
+
* @returns The operator to be added to a pipe.
|
|
59
|
+
*/
|
|
60
|
+
excludePermissionCall() {
|
|
61
|
+
return pipe(filter(({ method, options }) => {
|
|
62
|
+
if (method === 'PUT' && options.body && typeof options.body === 'string') {
|
|
63
|
+
const parsedBody = JSON.parse(options.body);
|
|
64
|
+
const bodyKeys = Object.keys(parsedBody);
|
|
65
|
+
return !(bodyKeys.length === 1 && bodyKeys[0] === 'id');
|
|
66
|
+
}
|
|
67
|
+
return true;
|
|
68
|
+
}));
|
|
69
|
+
}
|
|
55
70
|
/**
|
|
56
71
|
* Allows to intercept requests performed via the FetchClient requests.
|
|
57
72
|
* @param interceptor The interceptor to be added.
|
|
@@ -99,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
99
114
|
providedIn: 'root'
|
|
100
115
|
}]
|
|
101
116
|
}], ctorParameters: function () { return [{ type: i1.FetchClient }]; } });
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcGkvYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFpQyxNQUFNLGFBQWEsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUVuQixNQUFNLHNCQUFzQixDQUFDOzs7QUFLOUIsTUFBTSxPQUFPLFVBQVU7SUFNckIsWUFBb0IsTUFBbUI7UUFBbkIsV0FBTSxHQUFOLE1BQU0sQ0FBYTtRQUovQixpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDdEMsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztRQUNsRCx1QkFBa0IsR0FBRyxDQUFDLENBQUM7UUFHN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFlBQVksQ0FBQyxVQUFzQztRQUNqRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUMzQixNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLEVBQ3pDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FDbkIsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBQyxVQUFzQztRQUNoRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUMzQixNQUFNLENBQUMsQ0FBQyxF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QUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUM5RSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUNuQixDQUFDO1FBQ0YsS0FBSyxNQUFNLGFBQWEsSUFBSSxvQkFBb0IsRUFBRTtZQUNoRCxPQUFPLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNuRjtRQUNELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDOzt1R0EzR1UsVUFBVTsyR0FBVixVQUFVLGNBRlQsTUFBTTsyRkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZldGNoQ2xpZW50LCBJRmV0Y2hPcHRpb25zLCBJRmV0Y2hSZXNwb25zZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFwaUNhbGwsIEFwaUNhbGxPcHRpb25zIH0gZnJvbSAnLi9hcGkubW9kZWwnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHR0cEludGVyY2VwdG9yLCBIdHRwSGFuZGxlciB9IGZyb20gJy4vaW50ZXJjZXB0b3IubW9kZWwnO1xuaW1wb3J0IHtcbiAgSHR0cEludGVyY2VwdEhhbmRsZXIsXG4gIEh0dHBSZXF1ZXN0SGFuZGxlcixcbiAgUmVxdWVzdFN0YXJ0QW5kRmluaXNoXG59IGZyb20gJy4vaHR0cC1oYW5kbGVyLm1vZGVsJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXBpU2VydmljZSBpbXBsZW1lbnRzIFJlcXVlc3RTdGFydEFuZEZpbmlzaCB7XG4gIGNhbGxzOiBPYnNlcnZhYmxlPEFwaUNhbGw+O1xuICBwcml2YXRlIGNhbGxzU3ViamVjdCA9IG5ldyBTdWJqZWN0PEFwaUNhbGw+KCk7XG4gIHByaXZhdGUgaW50ZXJjZXB0b3JzID0gbmV3IE1hcDxzdHJpbmcsIEh0dHBJbnRlcmNlcHRvcj4oKTtcbiAgcHJpdmF0ZSBpbnRlcmNlcHRvckNvdW50ZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2xpZW50OiBGZXRjaENsaWVudCkge1xuICAgIHRoaXMuY2FsbHMgPSB0aGlzLmNhbGxzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLmhvb2tJbnRvQ2xpZW50RmV0Y2goKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gaG9vayBpbnRvIHRoZSByZXNwb25zZXMgcmVjZWl2ZWQgYnkgdGhlIEZldGNoQ2xpZW50LlxuICAgKiBUaGlzIGlzIG1lYW50IHRvIGJlIHVzZWQgdG8gcmVhY3Qgb24gdGhlIHJlc3BvbnNlcywgbm90IGZvciBtYW5pcHVsYXRpb24gb2YgdGhlIHJlc3BvbnNlcy5cbiAgICogQHBhcmFtIGhvb2tGaWx0ZXIgQSBmaWx0ZXIgZnVuY3Rpb24gdG8gZmlsdGVyIGZvciBzcGVjaWZpYyByZXNwb25zZXMuXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgb2YgdGhlIGZpbHRlcmVkIHJlc3BvbnNlcy5cbiAgICovXG4gIGhvb2tSZXNwb25zZShob29rRmlsdGVyOiAoY2FsbDogQXBpQ2FsbCkgPT4gYm9vbGVhbikge1xuICAgIHJldHVybiB0aGlzLmNhbGxzU3ViamVjdC5waXBlKFxuICAgICAgZmlsdGVyKCh7IHBoYXNlIH0pID0+IHBoYXNlID09PSAnZmluaXNoJyksXG4gICAgICBmaWx0ZXIoaG9va0ZpbHRlcilcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0byBob29rIGludG8gdGhlIHJlcXVlc3RzIHBlcmZvcm1lZCBieSB0aGUgRmV0Y2hDbGllbnQuXG4gICAqIFRoaXMgaXMgbWVhbnQgdG8gYmUgdXNlZCB0byByZWFjdCBvbiB0aGUgcmVxdWVzdHMsIG5vdCBmb3IgbWFuaXB1bGF0aW9uIG9mIHRoZSByZXF1ZXN0cy5cbiAgICogQHBhcmFtIGhvb2tGaWx0ZXIgQSBmaWx0ZXIgZnVuY3Rpb24gdG8gZmlsdGVyIGZvciBzcGVjaWZpYyByZXF1ZXN0cy5cbiAgICogQHJldHVybnMgQW4gT2JzZXJ2YWJsZSBvZiB0aGUgZmlsdGVyZWQgcmVxdWVzdHMuXG4gICAqL1xuICBob29rUmVxdWVzdChob29rRmlsdGVyOiAoY2FsbDogQXBpQ2FsbCkgPT4gYm9vbGVhbikge1xuICAgIHJldHVybiB0aGlzLmNhbGxzU3ViamVjdC5waXBlKFxuICAgICAgZmlsdGVyKCh7IHBoYXNlIH0pID0+IHBoYXNlID09PSAnc3RhcnQnKSxcbiAgICAgIGZpbHRlcihob29rRmlsdGVyKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBvbkZpbmlzaChjYWxsOiBBcGlDYWxsKSB7XG4gICAgdGhpcy5jYWxsc1N1YmplY3QubmV4dCh7IHBoYXNlOiAnZmluaXNoJywgLi4uY2FsbCB9KTtcbiAgfVxuXG4gIG9uU3RhcnQoY2FsbDogQXBpQ2FsbCkge1xuICAgIHRoaXMuY2FsbHNTdWJqZWN0Lm5leHQoeyBwaGFzZTogJ3N0YXJ0JywgLi4uY2FsbCB9KTtcbiAgfVxuXG4gIHJlc29sdmVEYXRhPFQgPSB1bmtub3duPihjYWxsOiBBcGlDYWxsKTogUHJvbWlzZTx7IGRhdGE6IFQ7IG1ldGhvZDogc3RyaW5nOyB1cmw6IHN0cmluZyB9PiB7XG4gICAgY29uc3QgeyByZXNwb25zZSwgbWV0aG9kLCB1cmwgfSA9IGNhbGw7XG4gICAgaWYgKCdkYXRhJyBpbiByZXNwb25zZSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IGRhdGE6IHJlc3BvbnNlLmRhdGEsIG1ldGhvZCwgdXJsIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBObyBDb250ZW50IHN1Y2Nlc3Mgc3RhdHVzLCBmb3IgZXhhbXBsZSBERUxFVEUgcmVxdWVzdC5cbiAgICAgIGlmICgocmVzcG9uc2UgYXMgUmVzcG9uc2UpPy5zdGF0dXMgPT09IDIwNCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgZGF0YTogbnVsbCwgbWV0aG9kLCB1cmwgfSk7XG4gICAgICB9XG4gICAgICBjb25zdCBjYiA9IGRhdGEgPT4gKHsgZGF0YSwgbWV0aG9kLCB1cmwgfSk7XG4gICAgICByZXR1cm4gKHJlc3BvbnNlIGFzIFJlc3BvbnNlKS5jbG9uZSgpLmpzb24oKS50aGVuKGNiLCBjYik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0byBpbnRlcmNlcHQgcmVxdWVzdHMgcGVyZm9ybWVkIHZpYSB0aGUgRmV0Y2hDbGllbnQgcmVxdWVzdHMuXG4gICAqIEBwYXJhbSBpbnRlcmNlcHRvciBUaGUgaW50ZXJjZXB0b3IgdG8gYmUgYWRkZWQuXG4gICAqIEBwYXJhbSBpZCBBbiBvcHRpb25hbCB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGludGVyY2VwdG9yLiBUaGUgY2hhaW4gb2YgaW50ZXJjZXB0b3JzIGlzIG9yZGVyZWQgYnkgdGhpcyBpZC4gQW5kIGl0IGNhbiBiZSB1c2VkIHRvIHJlbW92ZSB0aGUgaW50ZXJjZXB0b3IgbGF0ZXIgb24uXG4gICAqIEByZXR1cm5zIFRoZSBpZCBvZiB0aGUgaW50ZXJjZXB0b3IgKHNhbWUgYXMgcHJvdmlkZWQgaWQgaWYgb25lIHdhcyBwcm92aWRlZCwgb3RoZXJ3aXNlIGFuIGlkIHdpbGwgYmUgZ2VuZXJhdGVkKS5cbiAgICovXG4gIGFkZEludGVyY2VwdG9yKGludGVyY2VwdG9yOiBIdHRwSW50ZXJjZXB0b3IsIGlkPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWlkKSB7XG4gICAgICBpZCA9IGAkeysrdGhpcy5pbnRlcmNlcHRvckNvdW50ZXJ9YDtcbiAgICB9XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMuc2V0KGlkLCBpbnRlcmNlcHRvcik7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0byByZW1vdmUgYSBwcmV2aW91c2x5IGFkZGVkIGludGVyY2VwdG9yIGJ5IGl0J3MgaWQuXG4gICAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIGludGVyY2VwdG9yIHRoYXQgc2hvdWxkIGJlIHJlbW92ZWQuXG4gICAqIEByZXR1cm5zIHRydWUgaWYgYW4gaW50ZXJjZXB0b3IgZXhpc3RlZCBhbmQgaGFzIGJlZW4gcmVtb3ZlZCwgb3IgZmFsc2UgaWYgaWQgZG9lcyBub3QgZXhpc3QuXG4gICAqL1xuICByZW1vdmVJbnRlcmNlcHRvcihpZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJjZXB0b3JzLmRlbGV0ZShpZCk7XG4gIH1cblxuICBwcml2YXRlIGhvb2tJbnRvQ2xpZW50RmV0Y2goKSB7XG4gICAgY29uc3QgZmV0Y2g6IEZldGNoQ2xpZW50WydmZXRjaCddID0gdGhpcy5jbGllbnQuZmV0Y2guYmluZCh0aGlzLmNsaWVudCk7XG4gICAgY29uc3QgcmVxdWVzdEhhbmRsZXIgPSBuZXcgSHR0cFJlcXVlc3RIYW5kbGVyKGZldGNoLCB0aGlzKTtcbiAgICB0aGlzLmNsaWVudC5mZXRjaCA9IGFzeW5jIChcbiAgICAgIHVybCxcbiAgICAgIG9wdGlvbnM6IEFwaUNhbGxPcHRpb25zICYgSUZldGNoT3B0aW9ucyA9IHsgbWV0aG9kOiAnR0VUJyB9XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCB7IG1ldGhvZCB9ID0gb3B0aW9ucztcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUludGVyY2VwdG9yQ2hhaW4oeyB1cmwsIG9wdGlvbnMsIG1ldGhvZCB9LCByZXF1ZXN0SGFuZGxlcikudG9Qcm9taXNlKCk7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSW50ZXJjZXB0b3JDaGFpbihcbiAgICBjYWxsOiBBcGlDYWxsLFxuICAgIHJlcXVlc3RIYW5kbGVyOiBIdHRwUmVxdWVzdEhhbmRsZXJcbiAgKTogT2JzZXJ2YWJsZTxJRmV0Y2hSZXNwb25zZT4ge1xuICAgIGxldCBoYW5kbGVyOiBIdHRwSGFuZGxlciA9IHJlcXVlc3RIYW5kbGVyO1xuICAgIC8vIERvIHNvbWUgc29ydGluZyB0byBhbHdheXMgYXBwbHkgdGhlIGludGVyY2VwdG9ycyBpbiB0aGUgc3BlY2lmaWMgb3JkZXJcbiAgICBjb25zdCBzb3J0ZWRJbnRlcmNlcHRvcklkcyA9IEFycmF5LmZyb20odGhpcy5pbnRlcmNlcHRvcnMua2V5cygpKS5zb3J0KChhLCBiKSA9PlxuICAgICAgYi5sb2NhbGVDb21wYXJlKGEpXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IGludGVyY2VwdG9ySWQgb2Ygc29ydGVkSW50ZXJjZXB0b3JJZHMpIHtcbiAgICAgIGhhbmRsZXIgPSBuZXcgSHR0cEludGVyY2VwdEhhbmRsZXIodGhpcy5pbnRlcmNlcHRvcnMuZ2V0KGludGVyY2VwdG9ySWQpLCBoYW5kbGVyKTtcbiAgICB9XG4gICAgcmV0dXJuIGhhbmRsZXIuaGFuZGxlKGNhbGwpO1xuICB9XG59XG4iXX0=
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcGkvYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFpQyxNQUFNLGFBQWEsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUF3QyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsa0JBQWtCLEVBRW5CLE1BQU0sc0JBQXNCLENBQUM7OztBQUs5QixNQUFNLE9BQU8sVUFBVTtJQU1yQixZQUFvQixNQUFtQjtRQUFuQixXQUFNLEdBQU4sTUFBTSxDQUFhO1FBSi9CLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUN0QyxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUEyQixDQUFDO1FBQ2xELHVCQUFrQixHQUFHLENBQUMsQ0FBQztRQUc3QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFDLFVBQXNDO1FBQ2pELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQzNCLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsRUFDekMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUNuQixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLFVBQXNDO1FBQ2hELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQzNCLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsRUFDeEMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUNuQixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBYTtRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxPQUFPLENBQUMsSUFBYTtRQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxXQUFXLENBQWMsSUFBYTtRQUNwQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDdkMsSUFBSSxNQUFNLElBQUksUUFBUSxFQUFFO1lBQ3RCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQzlEO2FBQU07WUFDTCx5REFBeUQ7WUFDekQsSUFBSyxRQUFxQixFQUFFLE1BQU0sS0FBSyxHQUFHLEVBQUU7Z0JBQzFDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7YUFDckQ7WUFDRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDM0MsT0FBUSxRQUFxQixDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDM0Q7SUFDSCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILHFCQUFxQjtRQUNuQixPQUFPLElBQUksQ0FDVCxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO1lBQzdCLElBQUksTUFBTSxLQUFLLEtBQUssSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7Z0JBQ3hFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQWMsQ0FBQyxDQUFDO2dCQUN0RCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUN6QyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7YUFDekQ7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxjQUFjLENBQUMsV0FBNEIsRUFBRSxFQUFXO1FBQ3RELElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDUCxFQUFFLEdBQUcsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1NBQ3JDO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxpQkFBaUIsQ0FBQyxFQUFVO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixNQUFNLEtBQUssR0FBeUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4RSxNQUFNLGNBQWMsR0FBRyxJQUFJLGtCQUFrQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLEVBQ3ZCLEdBQUcsRUFDSCxVQUEwQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFDM0QsRUFBRTtZQUNGLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzNGLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTyxzQkFBc0IsQ0FDNUIsSUFBYSxFQUNiLGNBQWtDO1FBRWxDLElBQUksT0FBTyxHQUFnQixjQUFjLENBQUM7UUFDMUMseUVBQXlFO1FBQ3pFLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQzlFLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQ25CLENBQUM7UUFDRixLQUFLLE1BQU0sYUFBYSxJQUFJLG9CQUFvQixFQUFFO1lBQ2hELE9BQU8sR0FBRyxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ25GO1FBQ0QsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7O3VHQTVIVSxVQUFVOzJHQUFWLFVBQVUsY0FGVCxNQUFNOzJGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmV0Y2hDbGllbnQsIElGZXRjaE9wdGlvbnMsIElGZXRjaFJlc3BvbnNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSwgTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uLCBwaXBlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcGlDYWxsLCBBcGlDYWxsT3B0aW9ucyB9IGZyb20gJy4vYXBpLm1vZGVsJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEh0dHBJbnRlcmNlcHRvciwgSHR0cEhhbmRsZXIgfSBmcm9tICcuL2ludGVyY2VwdG9yLm1vZGVsJztcbmltcG9ydCB7XG4gIEh0dHBJbnRlcmNlcHRIYW5kbGVyLFxuICBIdHRwUmVxdWVzdEhhbmRsZXIsXG4gIFJlcXVlc3RTdGFydEFuZEZpbmlzaFxufSBmcm9tICcuL2h0dHAtaGFuZGxlci5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFwaVNlcnZpY2UgaW1wbGVtZW50cyBSZXF1ZXN0U3RhcnRBbmRGaW5pc2gge1xuICBjYWxsczogT2JzZXJ2YWJsZTxBcGlDYWxsPjtcbiAgcHJpdmF0ZSBjYWxsc1N1YmplY3QgPSBuZXcgU3ViamVjdDxBcGlDYWxsPigpO1xuICBwcml2YXRlIGludGVyY2VwdG9ycyA9IG5ldyBNYXA8c3RyaW5nLCBIdHRwSW50ZXJjZXB0b3I+KCk7XG4gIHByaXZhdGUgaW50ZXJjZXB0b3JDb3VudGVyID0gMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNsaWVudDogRmV0Y2hDbGllbnQpIHtcbiAgICB0aGlzLmNhbGxzID0gdGhpcy5jYWxsc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5ob29rSW50b0NsaWVudEZldGNoKCk7XG4gIH1cblxuICAvKipcbiAgICogQWxsb3dzIHRvIGhvb2sgaW50byB0aGUgcmVzcG9uc2VzIHJlY2VpdmVkIGJ5IHRoZSBGZXRjaENsaWVudC5cbiAgICogVGhpcyBpcyBtZWFudCB0byBiZSB1c2VkIHRvIHJlYWN0IG9uIHRoZSByZXNwb25zZXMsIG5vdCBmb3IgbWFuaXB1bGF0aW9uIG9mIHRoZSByZXNwb25zZXMuXG4gICAqIEBwYXJhbSBob29rRmlsdGVyIEEgZmlsdGVyIGZ1bmN0aW9uIHRvIGZpbHRlciBmb3Igc3BlY2lmaWMgcmVzcG9uc2VzLlxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIG9mIHRoZSBmaWx0ZXJlZCByZXNwb25zZXMuXG4gICAqL1xuICBob29rUmVzcG9uc2UoaG9va0ZpbHRlcjogKGNhbGw6IEFwaUNhbGwpID0+IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gdGhpcy5jYWxsc1N1YmplY3QucGlwZShcbiAgICAgIGZpbHRlcigoeyBwaGFzZSB9KSA9PiBwaGFzZSA9PT0gJ2ZpbmlzaCcpLFxuICAgICAgZmlsdGVyKGhvb2tGaWx0ZXIpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gaG9vayBpbnRvIHRoZSByZXF1ZXN0cyBwZXJmb3JtZWQgYnkgdGhlIEZldGNoQ2xpZW50LlxuICAgKiBUaGlzIGlzIG1lYW50IHRvIGJlIHVzZWQgdG8gcmVhY3Qgb24gdGhlIHJlcXVlc3RzLCBub3QgZm9yIG1hbmlwdWxhdGlvbiBvZiB0aGUgcmVxdWVzdHMuXG4gICAqIEBwYXJhbSBob29rRmlsdGVyIEEgZmlsdGVyIGZ1bmN0aW9uIHRvIGZpbHRlciBmb3Igc3BlY2lmaWMgcmVxdWVzdHMuXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgb2YgdGhlIGZpbHRlcmVkIHJlcXVlc3RzLlxuICAgKi9cbiAgaG9va1JlcXVlc3QoaG9va0ZpbHRlcjogKGNhbGw6IEFwaUNhbGwpID0+IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gdGhpcy5jYWxsc1N1YmplY3QucGlwZShcbiAgICAgIGZpbHRlcigoeyBwaGFzZSB9KSA9PiBwaGFzZSA9PT0gJ3N0YXJ0JyksXG4gICAgICBmaWx0ZXIoaG9va0ZpbHRlcilcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgb25GaW5pc2goY2FsbDogQXBpQ2FsbCkge1xuICAgIHRoaXMuY2FsbHNTdWJqZWN0Lm5leHQoeyBwaGFzZTogJ2ZpbmlzaCcsIC4uLmNhbGwgfSk7XG4gIH1cblxuICBvblN0YXJ0KGNhbGw6IEFwaUNhbGwpIHtcbiAgICB0aGlzLmNhbGxzU3ViamVjdC5uZXh0KHsgcGhhc2U6ICdzdGFydCcsIC4uLmNhbGwgfSk7XG4gIH1cblxuICByZXNvbHZlRGF0YTxUID0gdW5rbm93bj4oY2FsbDogQXBpQ2FsbCk6IFByb21pc2U8eyBkYXRhOiBUOyBtZXRob2Q6IHN0cmluZzsgdXJsOiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IHsgcmVzcG9uc2UsIG1ldGhvZCwgdXJsIH0gPSBjYWxsO1xuICAgIGlmICgnZGF0YScgaW4gcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoeyBkYXRhOiByZXNwb25zZS5kYXRhLCBtZXRob2QsIHVybCB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm8gQ29udGVudCBzdWNjZXNzIHN0YXR1cywgZm9yIGV4YW1wbGUgREVMRVRFIHJlcXVlc3QuXG4gICAgICBpZiAoKHJlc3BvbnNlIGFzIFJlc3BvbnNlKT8uc3RhdHVzID09PSAyMDQpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IGRhdGE6IG51bGwsIG1ldGhvZCwgdXJsIH0pO1xuICAgICAgfVxuICAgICAgY29uc3QgY2IgPSBkYXRhID0+ICh7IGRhdGEsIG1ldGhvZCwgdXJsIH0pO1xuICAgICAgcmV0dXJuIChyZXNwb25zZSBhcyBSZXNwb25zZSkuY2xvbmUoKS5qc29uKCkudGhlbihjYiwgY2IpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogQ2FuIGJlIGFkZGVkIHRvIGEgcGlwZSB0byBleGNsdWRlIGFueSBwZXJtaXNzaW9uIGNhbGwuIFBlcm1pc3Npb24gY2FsbHMgYXJlIFBVVFxuICAgKiByZXF1ZXN0IHdpdGggb25seSBhbiBpZCBpbiBpdCwgdG8gdmVyaWZ5IGlmIHRoZSB1c2VyIGhhcyBhY2Nlc3MgdG8gdGhpcyBtYW5hZ2VkIG9iamVjdC5cbiAgICogQHJldHVybnMgVGhlIG9wZXJhdG9yIHRvIGJlIGFkZGVkIHRvIGEgcGlwZS5cbiAgICovXG4gIGV4Y2x1ZGVQZXJtaXNzaW9uQ2FsbCgpOiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248QXBpQ2FsbD4ge1xuICAgIHJldHVybiBwaXBlKFxuICAgICAgZmlsdGVyKCh7IG1ldGhvZCwgb3B0aW9ucyB9KSA9PiB7XG4gICAgICAgIGlmIChtZXRob2QgPT09ICdQVVQnICYmIG9wdGlvbnMuYm9keSAmJiB0eXBlb2Ygb3B0aW9ucy5ib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGNvbnN0IHBhcnNlZEJvZHkgPSBKU09OLnBhcnNlKG9wdGlvbnMuYm9keSBhcyBzdHJpbmcpO1xuICAgICAgICAgIGNvbnN0IGJvZHlLZXlzID0gT2JqZWN0LmtleXMocGFyc2VkQm9keSk7XG4gICAgICAgICAgcmV0dXJuICEoYm9keUtleXMubGVuZ3RoID09PSAxICYmIGJvZHlLZXlzWzBdID09PSAnaWQnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gaW50ZXJjZXB0IHJlcXVlc3RzIHBlcmZvcm1lZCB2aWEgdGhlIEZldGNoQ2xpZW50IHJlcXVlc3RzLlxuICAgKiBAcGFyYW0gaW50ZXJjZXB0b3IgVGhlIGludGVyY2VwdG9yIHRvIGJlIGFkZGVkLlxuICAgKiBAcGFyYW0gaWQgQW4gb3B0aW9uYWwgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRvci4gVGhlIGNoYWluIG9mIGludGVyY2VwdG9ycyBpcyBvcmRlcmVkIGJ5IHRoaXMgaWQuIEFuZCBpdCBjYW4gYmUgdXNlZCB0byByZW1vdmUgdGhlIGludGVyY2VwdG9yIGxhdGVyIG9uLlxuICAgKiBAcmV0dXJucyBUaGUgaWQgb2YgdGhlIGludGVyY2VwdG9yIChzYW1lIGFzIHByb3ZpZGVkIGlkIGlmIG9uZSB3YXMgcHJvdmlkZWQsIG90aGVyd2lzZSBhbiBpZCB3aWxsIGJlIGdlbmVyYXRlZCkuXG4gICAqL1xuICBhZGRJbnRlcmNlcHRvcihpbnRlcmNlcHRvcjogSHR0cEludGVyY2VwdG9yLCBpZD86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFpZCkge1xuICAgICAgaWQgPSBgJHsrK3RoaXMuaW50ZXJjZXB0b3JDb3VudGVyfWA7XG4gICAgfVxuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnNldChpZCwgaW50ZXJjZXB0b3IpO1xuICAgIHJldHVybiBpZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gcmVtb3ZlIGEgcHJldmlvdXNseSBhZGRlZCBpbnRlcmNlcHRvciBieSBpdCdzIGlkLlxuICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBpbnRlcmNlcHRvciB0aGF0IHNob3VsZCBiZSByZW1vdmVkLlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGFuIGludGVyY2VwdG9yIGV4aXN0ZWQgYW5kIGhhcyBiZWVuIHJlbW92ZWQsIG9yIGZhbHNlIGlmIGlkIGRvZXMgbm90IGV4aXN0LlxuICAgKi9cbiAgcmVtb3ZlSW50ZXJjZXB0b3IoaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmludGVyY2VwdG9ycy5kZWxldGUoaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBob29rSW50b0NsaWVudEZldGNoKCkge1xuICAgIGNvbnN0IGZldGNoOiBGZXRjaENsaWVudFsnZmV0Y2gnXSA9IHRoaXMuY2xpZW50LmZldGNoLmJpbmQodGhpcy5jbGllbnQpO1xuICAgIGNvbnN0IHJlcXVlc3RIYW5kbGVyID0gbmV3IEh0dHBSZXF1ZXN0SGFuZGxlcihmZXRjaCwgdGhpcyk7XG4gICAgdGhpcy5jbGllbnQuZmV0Y2ggPSBhc3luYyAoXG4gICAgICB1cmwsXG4gICAgICBvcHRpb25zOiBBcGlDYWxsT3B0aW9ucyAmIElGZXRjaE9wdGlvbnMgPSB7IG1ldGhvZDogJ0dFVCcgfVxuICAgICkgPT4ge1xuICAgICAgY29uc3QgeyBtZXRob2QgfSA9IG9wdGlvbnM7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVJbnRlcmNlcHRvckNoYWluKHsgdXJsLCBvcHRpb25zLCBtZXRob2QgfSwgcmVxdWVzdEhhbmRsZXIpLnRvUHJvbWlzZSgpO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUludGVyY2VwdG9yQ2hhaW4oXG4gICAgY2FsbDogQXBpQ2FsbCxcbiAgICByZXF1ZXN0SGFuZGxlcjogSHR0cFJlcXVlc3RIYW5kbGVyXG4gICk6IE9ic2VydmFibGU8SUZldGNoUmVzcG9uc2U+IHtcbiAgICBsZXQgaGFuZGxlcjogSHR0cEhhbmRsZXIgPSByZXF1ZXN0SGFuZGxlcjtcbiAgICAvLyBEbyBzb21lIHNvcnRpbmcgdG8gYWx3YXlzIGFwcGx5IHRoZSBpbnRlcmNlcHRvcnMgaW4gdGhlIHNwZWNpZmljIG9yZGVyXG4gICAgY29uc3Qgc29ydGVkSW50ZXJjZXB0b3JJZHMgPSBBcnJheS5mcm9tKHRoaXMuaW50ZXJjZXB0b3JzLmtleXMoKSkuc29ydCgoYSwgYikgPT5cbiAgICAgIGIubG9jYWxlQ29tcGFyZShhKVxuICAgICk7XG4gICAgZm9yIChjb25zdCBpbnRlcmNlcHRvcklkIG9mIHNvcnRlZEludGVyY2VwdG9ySWRzKSB7XG4gICAgICBoYW5kbGVyID0gbmV3IEh0dHBJbnRlcmNlcHRIYW5kbGVyKHRoaXMuaW50ZXJjZXB0b3JzLmdldChpbnRlcmNlcHRvcklkKSwgaGFuZGxlcik7XG4gICAgfVxuICAgIHJldHVybiBoYW5kbGVyLmhhbmRsZShjYWxsKTtcbiAgfVxufVxuIl19
|
|
@@ -200,7 +200,7 @@ export class AssetNodeService {
|
|
|
200
200
|
return this.apiService
|
|
201
201
|
.hookResponse(({ url, method }) => ['PUT', 'DELETE', 'POST'].includes(method) &&
|
|
202
202
|
RegExp(`((inventory/managedObjects)|(service/smartgroup/smartgroups))/${mo.id}`).test(url))
|
|
203
|
-
.pipe(filter(() => !this.draggedData), mergeMap((this.apiService.resolveData)), filter(response => !response?.data?.c8y_Dashboard));
|
|
203
|
+
.pipe(filter(() => !this.draggedData), this.apiService.excludePermissionCall(), mergeMap((this.apiService.resolveData)), filter(response => !response?.data?.c8y_Dashboard));
|
|
204
204
|
}
|
|
205
205
|
else if (root) {
|
|
206
206
|
return this.apiService
|
|
@@ -285,4 +285,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
285
285
|
type: Inject,
|
|
286
286
|
args: [ASSET_NAVIGATOR_CONFIG]
|
|
287
287
|
}] }, { type: i4.DeviceGroupService }]; } });
|
|
288
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtbm9kZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYXNzZXRzLW5hdmlnYXRvci9hc3NldC1ub2RlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBa0IsZ0JBQWdCLEVBQVcsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRyxPQUFPLEVBQ0wsWUFBWSxFQUNaLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLFlBQVksRUFHWixjQUFjLEVBQ2QsV0FBVyxFQUNaLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBd0Isc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBVXJELE1BQU0sT0FBTyxnQkFBZ0I7SUFPM0IsWUFDUyxTQUEyQixFQUMzQixVQUFzQixFQUN0QixLQUFtQixFQUNuQixLQUFtQixFQUNoQixpQkFBb0MsRUFDcEMsSUFBaUIsRUFDakIsUUFBeUIsRUFDekIsY0FBOEIsRUFDVyxZQUFrQyxFQUMzRSxrQkFBc0M7UUFUekMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0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RSxzQkFBc0IsRUFBRSxNQUFNO2lCQUMvQjthQUNGLENBQUMsQ0FBQztZQUNILE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNoRixhQUFhLEdBQUcsR0FBRyxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7U0FDbEQ7YUFBTTtZQUNMLGFBQWEsR0FBRyxNQUFNLElBQUksTUFBTSxJQUFJLEVBQUUsQ0FBQztTQUN4QztRQUNELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7OzZHQTFUVSxnQkFBZ0IsNlBBZ0JMLHNCQUFzQjtpSEFoQmpDLGdCQUFnQixjQUZmLE1BQU07MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBaUJJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIEludmVudG9yeVNlcnZpY2UsIElSZXN1bHQsIFF1ZXJpZXNVdGlsLCBVc2VyU2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFsZXJ0U2VydmljZSxcbiAgQXBwU3RhdGVTZXJ2aWNlLFxuICBCcmVhZGNydW1iU2VydmljZSxcbiAgR3JvdXBGcmFnbWVudCxcbiAgTW9kYWxTZXJ2aWNlLFxuICBOYXZpZ2F0b3JOb2RlLFxuICBOYXZpZ2F0b3JOb2RlRGF0YSxcbiAgT3B0aW9uc1NlcnZpY2UsXG4gIFBlcm1pc3Npb25zXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYXBpJztcbmltcG9ydCB7IGVtcHR5IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXNzZXROb2RlIH0gZnJvbSAnLi9hc3NldC1ub2RlJztcbmltcG9ydCB7IEFzc2V0TmF2aWdhdG9yQ29uZmlnLCBBU1NFVF9OQVZJR0FUT1JfQ09ORklHIH0gZnJvbSAnLi9hc3NldC1ub2RlLWNvbmZpZy5tb2RlbCc7XG5pbXBvcnQgeyBEeW5hbWljR3JvdXBOb2RlIH0gZnJvbSAnLi9keW5hbWljLWdyb3VwLW5vZGUnO1xuaW1wb3J0IHsgRGV2aWNlR3JvdXBTZXJ2aWNlIH0gZnJvbSAnLi9ncm91cC5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBBc3NldE5vZGVNbyB7XG4gIGlkOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXNzZXROb2RlU2VydmljZSB7XG4gIHJvb3ROb2RlOiBBc3NldE5vZGU7XG4gIGZpcnN0VXJsID0gdHJ1ZTtcbiAgZHJhZ2dlZERhdGE6IEFzc2V0Tm9kZTtcbiAgcXVlcmllc1V0aWw6IFF1ZXJpZXNVdGlsO1xuICBwcm90ZWN0ZWQgUEFHRV9TSVpFID0gMjA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGludmVudG9yeTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwdWJsaWMgYXBpU2VydmljZTogQXBpU2VydmljZSxcbiAgICBwdWJsaWMgbW9kYWw6IE1vZGFsU2VydmljZSxcbiAgICBwdWJsaWMgYWxlcnQ6IEFsZXJ0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYnJlYWRjcnVtYlNlcnZpY2U6IEJyZWFkY3J1bWJTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB1c2VyOiBVc2VyU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgb3B0aW9uc1NlcnZpY2U6IE9wdGlvbnNTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVNTRVRfTkFWSUdBVE9SX0NPTkZJRykgcHVibGljIG1vZHVsZUNvbmZpZzogQXNzZXROYXZpZ2F0b3JDb25maWcsXG4gICAgcHJvdGVjdGVkIGRldmljZUdyb3VwU2VydmljZTogRGV2aWNlR3JvdXBTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMubW9kdWxlQ29uZmlnID0ge1xuICAgICAgcm9vdE5vZGVQcmlvcml0eTogMjAwMCxcbiAgICAgIC4uLihtb2R1bGVDb25maWcgfHwge30pXG4gICAgfTtcbiAgICB0aGlzLnF1ZXJpZXNVdGlsID0gbmV3IFF1ZXJpZXNVdGlsKCk7XG4gIH1cblxuICBpY29uKG1vOiBJTWFuYWdlZE9iamVjdCwgb3Blbj86IGJvb2xlYW4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmRldmljZUdyb3VwU2VydmljZS5pY29uKG1vLCBvcGVuKTtcbiAgfVxuXG4gIGlzR3JvdXAobW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMuZGV2aWNlR3JvdXBTZXJ2aWNlLmlzR3JvdXAobW8pO1xuICB9XG5cbiAgaXNEeW5hbWljR3JvdXAobW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMuZGV2aWNlR3JvdXBTZXJ2aWNlLmlzRHluYW1pY0dyb3VwKG1vKTtcbiAgfVxuXG4gIGlzRGF0YUJyb2tlcihtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy5kZXZpY2VHcm91cFNlcnZpY2UuaXNEYXRhQnJva2VyKG1vKTtcbiAgfVxuXG4gIGlzRGF0YUJyb2tlckFjdGl2ZShtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy5kZXZpY2VHcm91cFNlcnZpY2UuaXNEYXRhQnJva2VyQWN0aXZlKG1vKTtcbiAgfVxuXG4gIGlzQXNzZXQobW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMuZGV2aWNlR3JvdXBTZXJ2aWNlLmlzQXNzZXQobW8pO1xuICB9XG5cbiAgaXNBbnlHcm91cChtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy5kZXZpY2VHcm91cFNlcnZpY2UuaXNBbnlHcm91cChtbyk7XG4gIH1cblxuICBpc0RldmljZShtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy5kZXZpY2VHcm91cFNlcnZpY2UuaXNEZXZpY2UobW8pO1xuICB9XG5cbiAgY3JlYXRlUm9vdE5vZGUoY29uZmlnOiBOYXZpZ2F0b3JOb2RlRGF0YSA9IHt9KSB7XG4gICAgdGhpcy5yb290Tm9kZSA9IHRoaXMuY3JlYXRlQXNzZXROb2RlKHtcbiAgICAgIHJvb3Q6IHRydWUsXG4gICAgICAuLi5jb25maWcsXG4gICAgICBwcmlvcml0eTogdGhpcy5tb2R1bGVDb25maWcucm9vdE5vZGVQcmlvcml0eSxcbiAgICAgIGZlYXR1cmVJZDogJ2dyb3VwcydcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5yb290Tm9kZTtcbiAgfVxuXG4gIGNyZWF0ZUR5bmFtaWNHcm91cE5vZGUoY29uZmlnKSB7XG4gICAgcmV0dXJuIG5ldyBEeW5hbWljR3JvdXBOb2RlKHRoaXMsIGNvbmZpZyk7XG4gIH1cblxuICBjcmVhdGVBc3NldE5vZGUoY29uZmlnOiBQYXJ0aWFsPEFzc2V0Tm9kZT4pIHtcbiAgICByZXR1cm4gbmV3IEFzc2V0Tm9kZSh0aGlzLCBjb25maWcpO1xuICB9XG5cbiAgY3JlYXRlQ2hpbGROb2RlKG1hbmFnZWRPYmplY3QsIGNvbmZpZzogUGFydGlhbDxBc3NldE5vZGU+KSB7XG4gICAgY29uc3QgeyB0eXBlIH0gPSBtYW5hZ2VkT2JqZWN0O1xuICAgIGNvbmZpZy5tbyA9IG1hbmFnZWRPYmplY3Q7XG4gICAgaWYgKHR5cGUgPT09IEdyb3VwRnJhZ21lbnQuZHluYW1pY0dyb3VwVHlwZSkge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRHluYW1pY0dyb3VwTm9kZShjb25maWcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVBc3NldE5vZGUoY29uZmlnKTtcbiAgfVxuXG4gIGdldFJvb3ROb2RlcyhjdXN0b21GaWx0ZXI/OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IGRlZmF1bHRGaWx0ZXIgPSB7XG4gICAgICBwYWdlU2l6ZTogdGhpcy5QQUdFX1NJWkUsXG4gICAgICB3aXRoQ2hpbGRyZW46IGZhbHNlLFxuICAgICAgb25seVJvb3RzOiAhdGhpcy5vcHRpb25zU2VydmljZS5kaXNhYmxlT25seVJvb3RzUXVlcnksXG4gICAgICBxdWVyeTogdGhpcy5xdWVyaWVzVXRpbC5idWlsZFF1ZXJ5KHRoaXMubmF2Um9vdFF1ZXJ5RmlsdGVyKCkpXG4gICAgfTtcbiAgICBjb25zdCBncm91cEZpbHRlciA9IHsgLi4uZGVmYXVsdEZpbHRlciwgLi4uY3VzdG9tRmlsdGVyIH07XG5cbiAgICAvLyBkdWUgdG8gQkUgcGVyZm9ybWFuY2UgbGltaXRhdGlvbnMgd2UgZG8gbm90IGFsbG93IGZpbHRlcmluZyBhbmQgc29ydGluZyBmb3IgYSB1c2VyIHdpdGhvdXQgaW52ZW50b3J5IHJvbGVzXG4gICAgaWYgKFxuICAgICAgIXRoaXMudXNlci5oYXNBbnlSb2xlKHRoaXMuYXBwU3RhdGUuY3VycmVudFVzZXIudmFsdWUsIFtcbiAgICAgICAgUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfUkVBRCxcbiAgICAgICAgUGVybWlzc2lvbnMuUk9MRV9NQU5BR0VEX09CSkVDVF9SRUFEXG4gICAgICBdKVxuICAgICkge1xuICAgICAgZGVsZXRlIGdyb3VwRmlsdGVyLnF1ZXJ5O1xuICAgICAgT2JqZWN0LmFzc2lnbihncm91cEZpbHRlciwge1xuICAgICAgICBmcmFnbWVudFR5cGU6IEdyb3VwRnJhZ21lbnQuZ3JvdXBGcmFnbWVudFR5cGUsXG4gICAgICAgIG9ubHlSb290czogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmludmVudG9yeS5saXN0KHRoaXMuY3JlYXRlRmlsdGVyKGdyb3VwRmlsdGVyKSk7XG4gIH1cblxuICBnZXRBbGxJbnZlbnRvcmllcyhjdXN0b21GaWx0ZXI/OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IGRlZmF1bHRGaWx0ZXIgPSB7XG4gICAgICBwYWdlU2l6ZTogdGhpcy5QQUdFX1NJWkUsXG4gICAgICB3aXRoQ2hpbGRyZW46IGZhbHNlXG4gICAgfTtcbiAgICBjb25zdCBncm91cEZpbHRlciA9IHsgLi4uZGVmYXVsdEZpbHRlciwgLi4uY3VzdG9tRmlsdGVyIH07XG4gICAgcmV0dXJuIHRoaXMuaW52ZW50b3J5Lmxpc3QodGhpcy5jcmVhdGVGaWx0ZXIoZ3JvdXBGaWx0ZXIpKTtcbiAgfVxuXG4gIGdldEdyb3VwSXRlbXMobW9JZDogc3RyaW5nLCBleHRyYUZpbHRlcjogb2JqZWN0ID0ge30sIHdpdGhDaGlsZHJlbiA9IGZhbHNlLCBmaWx0ZXJRdWVyeSA9ICcnKSB7XG4gICAgY29uc3QgcXVlcnlGaWx0ZXIgPSB7XG4gICAgICB3aXRoQ2hpbGRyZW4sXG4gICAgICBwYWdlU2l6ZTogdGhpcy5QQUdFX1NJWkUsXG4gICAgICBxdWVyeTogdGhpcy5ncm91cFF1ZXJ5RmlsdGVyKG1vSWQsIGZpbHRlclF1ZXJ5KVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaW52ZW50b3J5LmNoaWxkQXNzZXRzTGlzdChtb0lkLCB7IC4uLnF1ZXJ5RmlsdGVyLCAuLi5leHRyYUZpbHRlciB9KTtcbiAgfVxuXG4gIGdldFVuYXNzaWduZWREZXZpY2VzKHdpdGhDaGlsZHJlbiA9IGZhbHNlLCBmaWx0ZXJRdWVyeSA9ICcnKSB7XG4gICAgY29uc3QgcXVlcnlGaWx0ZXI6IGFueSA9IHtcbiAgICAgIGZyYWdtZW50VHlwZTogJ2M4eV9Jc0RldmljZScsXG4gICAgICBvbmx5Um9vdHM6IHRydWUsXG4gICAgICB3aXRoQ2hpbGRyZW4sXG4gICAgICBwYWdlU2l6ZTogdGhpcy5QQUdFX1NJWkUsXG4gICAgICBxOiB0aGlzLmdldFVuYXNzaWduZWREZXZpY2VzUXVlcnlTdHIoZmlsdGVyUXVlcnkpXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5pbnZlbnRvcnkubGlzdCh0aGlzLmNyZWF0ZUZpbHRlcihxdWVyeUZpbHRlcikpO1xuICB9XG5cbiAgZ2V0RHluYW1pY0dyb3VwSXRlbXMoZ3JvdXBRdWVyeTogc3RyaW5nLCBmaWx0ZXJPYmo6IGFueSA9IHt9KSB7XG4gICAgY29uc3QgeyBxdWVyeSwgLi4ucXVlcnlQYXJhbXMgfSA9IGZpbHRlck9iajtcbiAgICBjb25zdCBvcmRlckJ5UXVlcnkgPSBxdWVyeTtcbiAgICBjb25zdCBxdWVyeUZpbHRlciA9IHtcbiAgICAgIHE6IHRoaXMuYnVpbGRDb21iaW5lZFF1ZXJ5KGdyb3VwUXVlcnksIG9yZGVyQnlRdWVyeSksXG4gICAgICAuLi5xdWVyeVBhcmFtc1xuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaW52ZW50b3J5Lmxpc3QodGhpcy5jcmVhdGVGaWx0ZXIocXVlcnlGaWx0ZXIpKTtcbiAgfVxuXG4gIGdldERldmljZUNoaWxkcmVuKFxuICAgIG1vSWQ6IHN0cmluZyxcbiAgICBleHRyYUZpbHRlcjogb2JqZWN0ID0ge30sXG4gICAgZmlsdGVyUXVlcnkgPSAnJyxcbiAgICB3aXRoQ2hpbGRyZW4gPSBmYWxzZVxuICApIHtcbiAgICBjb25zdCBxdWVyeUZpbHRlciA9IHtcbiAgICAgIHdpdGhDaGlsZHJlbixcbiAgICAgIHBhZ2VTaXplOiB0aGlzLlBBR0VfU0laRSxcbiAgICAgIHF1ZXJ5OiB0aGlzLmdyb3VwUXVlcnlGaWx0ZXIobW9JZCwgZmlsdGVyUXVlcnkpXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5pbnZlbnRvcnkuY2hpbGREZXZpY2VzTGlzdChtb0lkLCB7IC4uLnF1ZXJ5RmlsdGVyLCAuLi5leHRyYUZpbHRlciB9KTtcbiAgfVxuXG4gIGdldFVuYXNzaWduZWREZXZpY2VzUXVlcnlTdHIoZmlsdGVyUXVlcnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGhhc0dyb3VwSWQgPSBmaWx0ZXJRdWVyeS5pbmNsdWRlcygnYnlncm91cGlkJyk7XG4gICAgLy8gRmV0Y2ggYWxsIHVuYXNzaWduZWQgZGV2aWNlcy5cbiAgICBjb25zdCBkZWZhdWx0UXVlcnlTdHIgPSAnJG9yZGVyYnk9bmFtZSc7XG5cbiAgICAvLyBmaWx0ZXJRdWVyeSBpcyBhIGN1c3RvbSBxdWVyeSB0byBmZXRjaCB1bmFzc2lnbmVkIGRldmljZXMgZmlsdGVyZWQgYnkgbmFtZS5cbiAgICByZXR1cm4gaGFzR3JvdXBJZCB8fCAhZmlsdGVyUXVlcnkgPyBkZWZhdWx0UXVlcnlTdHIgOiBmaWx0ZXJRdWVyeTtcbiAgfVxuXG4gIGdyb3VwUXVlcnlGaWx0ZXIobW9JZDogc3RyaW5nLCBmaWx0ZXJRdWVyeT86IHN0cmluZykge1xuICAgIGlmICghZmlsdGVyUXVlcnkpIHtcbiAgICAgIHJldHVybiBgJGZpbHRlcj0oYnlncm91cGlkKCR7bW9JZH0pKSRvcmRlcmJ5PW5hbWVgO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyUXVlcnk7XG4gIH1cblxuICBuYXZSb290UXVlcnlGaWx0ZXIoKSB7XG4gICAgY29uc3QgbmF2Um9vdEZpbHRlciA9IHRoaXMucm9vdFF1ZXJ5RmlsdGVyKCk7XG4gICAgbmF2Um9vdEZpbHRlci5fX29yZGVyYnkgPSBbeyBuYW1lOiAxIH1dO1xuICAgIHJldHVybiBuYXZSb290RmlsdGVyO1xuICB9XG5cbiAgcm9vdFF1ZXJ5RmlsdGVyKCkge1xuICAgIGNvbnN0IHsgbW9kdWxlQ29uZmlnIH0gPSB0aGlzO1xuICAgIGNvbnN0IHJvb3RGaWx0ZXIgPSB0aGlzLm9wdGlvbnNTZXJ2aWNlLmRpc2FibGVPbmx5Um9vdHNRdWVyeVxuICAgICAgPyB7XG4gICAgICAgICAgX19maWx0ZXI6IHtcbiAgICAgICAgICAgIHR5cGU6IEdyb3VwRnJhZ21lbnQuZ3JvdXBUeXBlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBfX29yZGVyYnk6IFtdXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIF9fZmlsdGVyOiB7XG4gICAgICAgICAgICBfX2hhczogR3JvdXBGcmFnbWVudC5ncm91cEZyYWdtZW50VHlwZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgX19vcmRlcmJ5OiBbXVxuICAgICAgICB9O1xuICAgIGlmIChtb2R1bGVDb25maWcuc21hcnRHcm91cHMpIHtcbiAgICAgIGNvbnN0IHF1ZXJ5RmlsdGVyID0ge1xuICAgICAgICBfX2ZpbHRlcjoge1xuICAgICAgICAgIF9fYW5kOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6IEdyb3VwRnJhZ21lbnQuZHluYW1pY0dyb3VwVHlwZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgX19oYXM6IEdyb3VwRnJhZ21lbnQuZHluYW1pY0dyb3VwRnJhZ21lbnRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IF9fbm90OiB7IF9faGFzOiBgJHtHcm91cEZyYWdtZW50LmR5bmFtaWNHcm91cEZyYWdtZW50fS5pbnZpc2libGVgIH0gfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRoaXMucXVlcmllc1V0aWwuYWRkT3JGaWx0ZXIocm9vdEZpbHRlciwgcXVlcnlGaWx0ZXIpO1xuICAgIH1cbiAgICByZXR1cm4gcm9vdEZpbHRlcjtcbiAgfVxuXG4gIG9uVXBkYXRlKHsgbW8sIHJvb3QgfSkge1xuICAgIGlmIChtby5pZCkge1xuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgICAuaG9va1Jlc3BvbnNlKFxuICAgICAgICAgICh7IHVybCwgbWV0aG9kIH0pID0+XG4gICAgICAgICAgICBbJ1BVVCcsICdERUxFVEUnLCAnUE9TVCddLmluY2x1ZGVzKG1ldGhvZCkgJiZcbiAgICAgICAgICAgIFJlZ0V4cChgKChpbnZlbnRvcnkvbWFuYWdlZE9iamVjdHMpfChzZXJ2aWNlL3NtYXJ0Z3JvdXAvc21hcnRncm91cHMpKS8ke21vLmlkfWApLnRlc3QoXG4gICAgICAgICAgICAgIHVybFxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy5kcmFnZ2VkRGF0YSksXG4gICAgICAgICAgbWVyZ2VNYXAodGhpcy5hcGlTZXJ2aWNlLnJlc29sdmVEYXRhPElNYW5hZ2VkT2JqZWN0PiksXG4gICAgICAgICAgZmlsdGVyKHJlc3BvbnNlID0+ICFyZXNwb25zZT8uZGF0YT8uYzh5X0Rhc2hib2FyZClcbiAgICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHJvb3QpIHtcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgICAgLmhvb2tSZXNwb25zZShcbiAgICAgICAgICAoeyB1cmwsIG1ldGhvZCB9KSA9PlxuICAgICAgICAgICAgUmVnRXhwKCcoKGludmVudG9yeS9tYW5hZ2VkT2JqZWN0cyl8KHNlcnZpY2Uvc21hcnRncm91cC9zbWFydGdyb3VwcykpLz8kJykudGVzdCh1cmwpICYmXG4gICAgICAgICAgICBtZXRob2QgPT09ICdQT1NUJ1xuICAgICAgICApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKHRoaXMuYXBpU2VydmljZS5yZXNvbHZlRGF0YTxJTWFuYWdlZE9iamVjdD4pLFxuICAgICAgICAgIGZpbHRlcihyZXNwb25zZSA9PiB0aGlzLmlzTmV3TWFuYWdlZE9iamVjdFJvb3QocmVzcG9uc2UpKVxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZW1wdHkoKTtcbiAgICB9XG4gIH1cblxuICBpc05ld01hbmFnZWRPYmplY3RSb290KHJlc3BvbnNlOiBQYXJ0aWFsPElSZXN1bHQ8SU1hbmFnZWRPYmplY3Q+PiA9IHt9KSB7XG4gICAgY29uc3QgeyBkYXRhIH0gPSByZXNwb25zZTtcbiAgICBsZXQgaXNSb290QXNzZXQgPSBmYWxzZTtcblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlzUm9vdEFzc2V0ID0gISFkYXRhW0dyb3VwRnJhZ21lbnQuZ3JvdXBGcmFnbWVudFR5cGVdO1xuICAgICAgaWYgKCFpc1Jvb3RBc3NldCAmJiB0aGlzLm1vZHVsZUNvbmZpZy5zbWFydEdyb3Vwcykge1xuICAgICAgICBpc1Jvb3RBc3NldCA9ICEhZGF0YVtHcm91cEZyYWdtZW50LmR5bmFtaWNHcm91cEZyYWdtZW50XTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlzUm9vdEFzc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGl0IGlzIHBvc3NpYmxlIHRvIGRyb3AgYSBub2RlIGFmdGVyIGRyYWdnaW5nLlxuICAgKiBAcGFyYW0gZHJvcE9uUm9vdCBJcyB0aGUgZHJvcCBwZXJmb3JtZWQgb24gdGhlIHJvb3Qgbm9kZVxuICAgKi9cbiAgY2FuRHJvcE5vZGUoZHJvcE9uUm9vdDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhZHJvcE9uUm9vdCB8fFxuICAgICAgdGhpcy51c2VyLmhhc0FueVJvbGUodGhpcy5hcHBTdGF0ZS5jdXJyZW50VXNlci52YWx1ZSwgW1xuICAgICAgICBQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9BRE1JTixcbiAgICAgICAgUGVybWlzc2lvbnMuUk9MRV9NQU5BR0VEX09CSkVDVF9BRE1JTlxuICAgICAgXSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIGJyZWFkY3J1bWJzIGZvciBkZXZpY2VzLFxuICAgKiBzbyB3ZSBzZXQgYSBwcmVmZXJyZWQgb25lIG9uIGNsaWNrIG9uIGEgZGV2aWNlLlxuICAgKiBAcGFyYW0gcGFyZW50cyBUaGUgcGFyZW50IG5vZGVzIG9mIHRoZSBkZXZpY2UgdG8gc2VsZWN0IHRoZSBwcmVmZXJlZCBvbmUuXG4gICAqL1xuICBwcmVmZXJCcmVhZGNydW1iKHBhcmVudHM6IE5hdmlnYXRvck5vZGVbXSkge1xuICAgIGlmIChwYXJlbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5icmVhZGNydW1iU2VydmljZS5zZWxlY3RQcmVmZXJyZWRCeVBhdGgocGFyZW50c1swXS5wYXRoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlRmlsdGVyKGV4dHJhUGFyYW1zOiBhbnkgPSB7fSkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGN1cnJlbnRQYWdlOiAxLFxuICAgICAgd2l0aFRvdGFsUGFnZXM6IHRydWUsXG4gICAgICBwYWdlU2l6ZTogMTBcbiAgICB9O1xuICAgIHJldHVybiB7IC4uLnBhcmFtcywgLi4uZXh0cmFQYXJhbXMgfTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDb21iaW5lZFF1ZXJ5KHF1ZXJ5QSwgcXVlcnlCKSB7XG4gICAgbGV0IGNvbWJpbmVkUXVlcnk7XG4gICAgaWYgKHF1ZXJ5QSAmJiBxdWVyeUIpIHtcbiAgICAgIGNvbnN0IGZpbHRlclF1ZXJ5ID0gdGhpcy5xdWVyaWVzVXRpbC5idWlsZFF1ZXJ5KFtcbiAgICAgICAge1xuICAgICAgICAgIF9fdXNlRmlsdGVyUXVlcnlTdHJpbmc6IHF1ZXJ5QVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgX191c2VGaWx0ZXJRdWVyeVN0cmluZzogcXVlcnlCXG4gICAgICAgIH1cbiAgICAgIF0pO1xuICAgICAgY29uc3Qgb3JiZXJCeVF1ZXJ5ID0gdGhpcy5xdWVyaWVzVXRpbC5leHRyYWN0QW5kTWVyZ2VPcmRlckJ5cyhbcXVlcnlBLCBxdWVyeUJdKTtcbiAgICAgIGNvbWJpbmVkUXVlcnkgPSBgJHtmaWx0ZXJRdWVyeX0gJHtvcmJlckJ5UXVlcnl9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tYmluZWRRdWVyeSA9IHF1ZXJ5QSB8fCBxdWVyeUIgfHwgJyc7XG4gICAgfVxuICAgIHJldHVybiBjb21iaW5lZFF1ZXJ5O1xuICB9XG59XG4iXX0=
|
|
288
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtbm9kZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYXNzZXRzLW5hdmlnYXRvci9hc3NldC1ub2RlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBa0IsZ0JBQWdCLEVBQVcsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRyxPQUFPLEVBQ0wsWUFBWSxFQUNaLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLFlBQVksRUFHWixjQUFjLEVBQ2QsV0FBVyxFQUNaLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBd0Isc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBVXJELE1BQU0sT0FBTyxnQkFBZ0I7SUFPM0IsWUFDUyxTQUEyQixFQUMzQixVQUFzQixFQUN0QixLQUFtQixFQUNuQixLQUFtQixFQUNoQixpQkFBb0MsRUFDcEMsSUFBaUIsRUFDakIsUUFBeUIsRUFDekIsY0FBOEIsRUFDVyxZQUFrQyxFQUMzRSxrQkFBc0M7UUFUekMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0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QUNFLHNCQUFzQixFQUFFLE1BQU07aUJBQy9CO2dCQUNEO29CQUNFLHNCQUFzQixFQUFFLE1BQU07aUJBQy9CO2FBQ0YsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2hGLGFBQWEsR0FBRyxHQUFHLFdBQVcsSUFBSSxZQUFZLEVBQUUsQ0FBQztTQUNsRDthQUFNO1lBQ0wsYUFBYSxHQUFHLE1BQU0sSUFBSSxNQUFNLElBQUksRUFBRSxDQUFDO1NBQ3hDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQzs7NkdBM1RVLGdCQUFnQiw2UEFnQkwsc0JBQXNCO2lIQWhCakMsZ0JBQWdCLGNBRmYsTUFBTTsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFpQkksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSwgSVJlc3VsdCwgUXVlcmllc1V0aWwsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQWxlcnRTZXJ2aWNlLFxuICBBcHBTdGF0ZVNlcnZpY2UsXG4gIEJyZWFkY3J1bWJTZXJ2aWNlLFxuICBHcm91cEZyYWdtZW50LFxuICBNb2RhbFNlcnZpY2UsXG4gIE5hdmlnYXRvck5vZGUsXG4gIE5hdmlnYXRvck5vZGVEYXRhLFxuICBPcHRpb25zU2VydmljZSxcbiAgUGVybWlzc2lvbnNcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9hcGknO1xuaW1wb3J0IHsgZW1wdHkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWVyZ2VNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBc3NldE5vZGUgfSBmcm9tICcuL2Fzc2V0LW5vZGUnO1xuaW1wb3J0IHsgQXNzZXROYXZpZ2F0b3JDb25maWcsIEFTU0VUX05BVklHQVRPUl9DT05GSUcgfSBmcm9tICcuL2Fzc2V0LW5vZGUtY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IER5bmFtaWNHcm91cE5vZGUgfSBmcm9tICcuL2R5bmFtaWMtZ3JvdXAtbm9kZSc7XG5pbXBvcnQgeyBEZXZpY2VHcm91cFNlcnZpY2UgfSBmcm9tICcuL2dyb3VwLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFzc2V0Tm9kZU1vIHtcbiAgaWQ6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBc3NldE5vZGVTZXJ2aWNlIHtcbiAgcm9vdE5vZGU6IEFzc2V0Tm9kZTtcbiAgZmlyc3RVcmwgPSB0cnVlO1xuICBkcmFnZ2VkRGF0YTogQXNzZXROb2RlO1xuICBxdWVyaWVzVXRpbDogUXVlcmllc1V0aWw7XG4gIHByb3RlY3RlZCBQQUdFX1NJWkUgPSAyMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgaW52ZW50b3J5OiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHB1YmxpYyBhcGlTZXJ2aWNlOiBBcGlTZXJ2aWNlLFxuICAgIHB1YmxpYyBtb2RhbDogTW9kYWxTZXJ2aWNlLFxuICAgIHB1YmxpYyBhbGVydDogQWxlcnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBicmVhZGNydW1iU2VydmljZTogQnJlYWRjcnVtYlNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHVzZXI6IFVzZXJTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhcHBTdGF0ZTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvcHRpb25zU2VydmljZTogT3B0aW9uc1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChBU1NFVF9OQVZJR0FUT1JfQ09ORklHKSBwdWJsaWMgbW9kdWxlQ29uZmlnOiBBc3NldE5hdmlnYXRvckNvbmZpZyxcbiAgICBwcm90ZWN0ZWQgZGV2aWNlR3JvdXBTZXJ2aWNlOiBEZXZpY2VHcm91cFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5tb2R1bGVDb25maWcgPSB7XG4gICAgICByb290Tm9kZVByaW9yaXR5OiAyMDAwLFxuICAgICAgLi4uKG1vZHVsZUNvbmZpZyB8fCB7fSlcbiAgICB9O1xuICAgIHRoaXMucXVlcmllc1V0aWwgPSBuZXcgUXVlcmllc1V0aWwoKTtcbiAgfVxuXG4gIGljb24obW86IElNYW5hZ2VkT2JqZWN0LCBvcGVuPzogYm9vbGVhbik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuZGV2aWNlR3JvdXBTZXJ2aWNlLmljb24obW8sIG9wZW4pO1xuICB9XG5cbiAgaXNHcm91cChtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy5kZXZpY2VHcm91cFNlcnZpY2UuaXNHcm91cChtbyk7XG4gIH1cblxuICBpc0R5bmFtaWNHcm91cChtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy5kZXZpY2VHcm91cFNlcnZpY2UuaXNEeW5hbWljR3JvdXAobW8pO1xuICB9XG5cbiAgaXNEYXRhQnJva2VyKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiB0aGlzLmRldmljZUdyb3VwU2VydmljZS5pc0RhdGFCcm9rZXIobW8pO1xuICB9XG5cbiAgaXNEYXRhQnJva2VyQWN0aXZlKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiB0aGlzLmRldmljZUdyb3VwU2VydmljZS5pc0RhdGFCcm9rZXJBY3RpdmUobW8pO1xuICB9XG5cbiAgaXNBc3NldChtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy5kZXZpY2VHcm91cFNlcnZpY2UuaXNBc3NldChtbyk7XG4gIH1cblxuICBpc0FueUdyb3VwKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiB0aGlzLmRldmljZUdyb3VwU2VydmljZS5pc0FueUdyb3VwKG1vKTtcbiAgfVxuXG4gIGlzRGV2aWNlKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiB0aGlzLmRldmljZUdyb3VwU2VydmljZS5pc0RldmljZShtbyk7XG4gIH1cblxuICBjcmVhdGVSb290Tm9kZShjb25maWc6IE5hdmlnYXRvck5vZGVEYXRhID0ge30pIHtcbiAgICB0aGlzLnJvb3ROb2RlID0gdGhpcy5jcmVhdGVBc3NldE5vZGUoe1xuICAgICAgcm9vdDogdHJ1ZSxcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIHByaW9yaXR5OiB0aGlzLm1vZHVsZUNvbmZpZy5yb290Tm9kZVByaW9yaXR5LFxuICAgICAgZmVhdHVyZUlkOiAnZ3JvdXBzJ1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLnJvb3ROb2RlO1xuICB9XG5cbiAgY3JlYXRlRHluYW1pY0dyb3VwTm9kZShjb25maWcpIHtcbiAgICByZXR1cm4gbmV3IER5bmFtaWNHcm91cE5vZGUodGhpcywgY29uZmlnKTtcbiAgfVxuXG4gIGNyZWF0ZUFzc2V0Tm9kZShjb25maWc6IFBhcnRpYWw8QXNzZXROb2RlPikge1xuICAgIHJldHVybiBuZXcgQXNzZXROb2RlKHRoaXMsIGNvbmZpZyk7XG4gIH1cblxuICBjcmVhdGVDaGlsZE5vZGUobWFuYWdlZE9iamVjdCwgY29uZmlnOiBQYXJ0aWFsPEFzc2V0Tm9kZT4pIHtcbiAgICBjb25zdCB7IHR5cGUgfSA9IG1hbmFnZWRPYmplY3Q7XG4gICAgY29uZmlnLm1vID0gbWFuYWdlZE9iamVjdDtcbiAgICBpZiAodHlwZSA9PT0gR3JvdXBGcmFnbWVudC5keW5hbWljR3JvdXBUeXBlKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVEeW5hbWljR3JvdXBOb2RlKGNvbmZpZyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNyZWF0ZUFzc2V0Tm9kZShjb25maWcpO1xuICB9XG5cbiAgZ2V0Um9vdE5vZGVzKGN1c3RvbUZpbHRlcj86IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgZGVmYXVsdEZpbHRlciA9IHtcbiAgICAgIHBhZ2VTaXplOiB0aGlzLlBBR0VfU0laRSxcbiAgICAgIHdpdGhDaGlsZHJlbjogZmFsc2UsXG4gICAgICBvbmx5Um9vdHM6ICF0aGlzLm9wdGlvbnNTZXJ2aWNlLmRpc2FibGVPbmx5Um9vdHNRdWVyeSxcbiAgICAgIHF1ZXJ5OiB0aGlzLnF1ZXJpZXNVdGlsLmJ1aWxkUXVlcnkodGhpcy5uYXZSb290UXVlcnlGaWx0ZXIoKSlcbiAgICB9O1xuICAgIGNvbnN0IGdyb3VwRmlsdGVyID0geyAuLi5kZWZhdWx0RmlsdGVyLCAuLi5jdXN0b21GaWx0ZXIgfTtcblxuICAgIC8vIGR1ZSB0byBCRSBwZXJmb3JtYW5jZSBsaW1pdGF0aW9ucyB3ZSBkbyBub3QgYWxsb3cgZmlsdGVyaW5nIGFuZCBzb3J0aW5nIGZvciBhIHVzZXIgd2l0aG91dCBpbnZlbnRvcnkgcm9sZXNcbiAgICBpZiAoXG4gICAgICAhdGhpcy51c2VyLmhhc0FueVJvbGUodGhpcy5hcHBTdGF0ZS5jdXJyZW50VXNlci52YWx1ZSwgW1xuICAgICAgICBQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9SRUFELFxuICAgICAgICBQZXJtaXNzaW9ucy5ST0xFX01BTkFHRURfT0JKRUNUX1JFQURcbiAgICAgIF0pXG4gICAgKSB7XG4gICAgICBkZWxldGUgZ3JvdXBGaWx0ZXIucXVlcnk7XG4gICAgICBPYmplY3QuYXNzaWduKGdyb3VwRmlsdGVyLCB7XG4gICAgICAgIGZyYWdtZW50VHlwZTogR3JvdXBGcmFnbWVudC5ncm91cEZyYWdtZW50VHlwZSxcbiAgICAgICAgb25seVJvb3RzOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaW52ZW50b3J5Lmxpc3QodGhpcy5jcmVhdGVGaWx0ZXIoZ3JvdXBGaWx0ZXIpKTtcbiAgfVxuXG4gIGdldEFsbEludmVudG9yaWVzKGN1c3RvbUZpbHRlcj86IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgZGVmYXVsdEZpbHRlciA9IHtcbiAgICAgIHBhZ2VTaXplOiB0aGlzLlBBR0VfU0laRSxcbiAgICAgIHdpdGhDaGlsZHJlbjogZmFsc2VcbiAgICB9O1xuICAgIGNvbnN0IGdyb3VwRmlsdGVyID0geyAuLi5kZWZhdWx0RmlsdGVyLCAuLi5jdXN0b21GaWx0ZXIgfTtcbiAgICByZXR1cm4gdGhpcy5pbnZlbnRvcnkubGlzdCh0aGlzLmNyZWF0ZUZpbHRlcihncm91cEZpbHRlcikpO1xuICB9XG5cbiAgZ2V0R3JvdXBJdGVtcyhtb0lkOiBzdHJpbmcsIGV4dHJhRmlsdGVyOiBvYmplY3QgPSB7fSwgd2l0aENoaWxkcmVuID0gZmFsc2UsIGZpbHRlclF1ZXJ5ID0gJycpIHtcbiAgICBjb25zdCBxdWVyeUZpbHRlciA9IHtcbiAgICAgIHdpdGhDaGlsZHJlbixcbiAgICAgIHBhZ2VTaXplOiB0aGlzLlBBR0VfU0laRSxcbiAgICAgIHF1ZXJ5OiB0aGlzLmdyb3VwUXVlcnlGaWx0ZXIobW9JZCwgZmlsdGVyUXVlcnkpXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5pbnZlbnRvcnkuY2hpbGRBc3NldHNMaXN0KG1vSWQsIHsgLi4ucXVlcnlGaWx0ZXIsIC4uLmV4dHJhRmlsdGVyIH0pO1xuICB9XG5cbiAgZ2V0VW5hc3NpZ25lZERldmljZXMod2l0aENoaWxkcmVuID0gZmFsc2UsIGZpbHRlclF1ZXJ5ID0gJycpIHtcbiAgICBjb25zdCBxdWVyeUZpbHRlcjogYW55ID0ge1xuICAgICAgZnJhZ21lbnRUeXBlOiAnYzh5X0lzRGV2aWNlJyxcbiAgICAgIG9ubHlSb290czogdHJ1ZSxcbiAgICAgIHdpdGhDaGlsZHJlbixcbiAgICAgIHBhZ2VTaXplOiB0aGlzLlBBR0VfU0laRSxcbiAgICAgIHE6IHRoaXMuZ2V0VW5hc3NpZ25lZERldmljZXNRdWVyeVN0cihmaWx0ZXJRdWVyeSlcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmludmVudG9yeS5saXN0KHRoaXMuY3JlYXRlRmlsdGVyKHF1ZXJ5RmlsdGVyKSk7XG4gIH1cblxuICBnZXREeW5hbWljR3JvdXBJdGVtcyhncm91cFF1ZXJ5OiBzdHJpbmcsIGZpbHRlck9iajogYW55ID0ge30pIHtcbiAgICBjb25zdCB7IHF1ZXJ5LCAuLi5xdWVyeVBhcmFtcyB9ID0gZmlsdGVyT2JqO1xuICAgIGNvbnN0IG9yZGVyQnlRdWVyeSA9IHF1ZXJ5O1xuICAgIGNvbnN0IHF1ZXJ5RmlsdGVyID0ge1xuICAgICAgcTogdGhpcy5idWlsZENvbWJpbmVkUXVlcnkoZ3JvdXBRdWVyeSwgb3JkZXJCeVF1ZXJ5KSxcbiAgICAgIC4uLnF1ZXJ5UGFyYW1zXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5pbnZlbnRvcnkubGlzdCh0aGlzLmNyZWF0ZUZpbHRlcihxdWVyeUZpbHRlcikpO1xuICB9XG5cbiAgZ2V0RGV2aWNlQ2hpbGRyZW4oXG4gICAgbW9JZDogc3RyaW5nLFxuICAgIGV4dHJhRmlsdGVyOiBvYmplY3QgPSB7fSxcbiAgICBmaWx0ZXJRdWVyeSA9ICcnLFxuICAgIHdpdGhDaGlsZHJlbiA9IGZhbHNlXG4gICkge1xuICAgIGNvbnN0IHF1ZXJ5RmlsdGVyID0ge1xuICAgICAgd2l0aENoaWxkcmVuLFxuICAgICAgcGFnZVNpemU6IHRoaXMuUEFHRV9TSVpFLFxuICAgICAgcXVlcnk6IHRoaXMuZ3JvdXBRdWVyeUZpbHRlcihtb0lkLCBmaWx0ZXJRdWVyeSlcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmludmVudG9yeS5jaGlsZERldmljZXNMaXN0KG1vSWQsIHsgLi4ucXVlcnlGaWx0ZXIsIC4uLmV4dHJhRmlsdGVyIH0pO1xuICB9XG5cbiAgZ2V0VW5hc3NpZ25lZERldmljZXNRdWVyeVN0cihmaWx0ZXJRdWVyeSk6IHN0cmluZyB7XG4gICAgY29uc3QgaGFzR3JvdXBJZCA9IGZpbHRlclF1ZXJ5LmluY2x1ZGVzKCdieWdyb3VwaWQnKTtcbiAgICAvLyBGZXRjaCBhbGwgdW5hc3NpZ25lZCBkZXZpY2VzLlxuICAgIGNvbnN0IGRlZmF1bHRRdWVyeVN0ciA9ICckb3JkZXJieT1uYW1lJztcblxuICAgIC8vIGZpbHRlclF1ZXJ5IGlzIGEgY3VzdG9tIHF1ZXJ5IHRvIGZldGNoIHVuYXNzaWduZWQgZGV2aWNlcyBmaWx0ZXJlZCBieSBuYW1lLlxuICAgIHJldHVybiBoYXNHcm91cElkIHx8ICFmaWx0ZXJRdWVyeSA/IGRlZmF1bHRRdWVyeVN0ciA6IGZpbHRlclF1ZXJ5O1xuICB9XG5cbiAgZ3JvdXBRdWVyeUZpbHRlcihtb0lkOiBzdHJpbmcsIGZpbHRlclF1ZXJ5Pzogc3RyaW5nKSB7XG4gICAgaWYgKCFmaWx0ZXJRdWVyeSkge1xuICAgICAgcmV0dXJuIGAkZmlsdGVyPShieWdyb3VwaWQoJHttb0lkfSkpJG9yZGVyYnk9bmFtZWA7XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXJRdWVyeTtcbiAgfVxuXG4gIG5hdlJvb3RRdWVyeUZpbHRlcigpIHtcbiAgICBjb25zdCBuYXZSb290RmlsdGVyID0gdGhpcy5yb290UXVlcnlGaWx0ZXIoKTtcbiAgICBuYXZSb290RmlsdGVyLl9fb3JkZXJieSA9IFt7IG5hbWU6IDEgfV07XG4gICAgcmV0dXJuIG5hdlJvb3RGaWx0ZXI7XG4gIH1cblxuICByb290UXVlcnlGaWx0ZXIoKSB7XG4gICAgY29uc3QgeyBtb2R1bGVDb25maWcgfSA9IHRoaXM7XG4gICAgY29uc3Qgcm9vdEZpbHRlciA9IHRoaXMub3B0aW9uc1NlcnZpY2UuZGlzYWJsZU9ubHlSb290c1F1ZXJ5XG4gICAgICA/IHtcbiAgICAgICAgICBfX2ZpbHRlcjoge1xuICAgICAgICAgICAgdHlwZTogR3JvdXBGcmFnbWVudC5ncm91cFR5cGVcbiAgICAgICAgICB9LFxuICAgICAgICAgIF9fb3JkZXJieTogW11cbiAgICAgICAgfVxuICAgICAgOiB7XG4gICAgICAgICAgX19maWx0ZXI6IHtcbiAgICAgICAgICAgIF9faGFzOiBHcm91cEZyYWdtZW50Lmdyb3VwRnJhZ21lbnRUeXBlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBfX29yZGVyYnk6IFtdXG4gICAgICAgIH07XG4gICAgaWYgKG1vZHVsZUNvbmZpZy5zbWFydEdyb3Vwcykge1xuICAgICAgY29uc3QgcXVlcnlGaWx0ZXIgPSB7XG4gICAgICAgIF9fZmlsdGVyOiB7XG4gICAgICAgICAgX19hbmQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogR3JvdXBGcmFnbWVudC5keW5hbWljR3JvdXBUeXBlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBfX2hhczogR3JvdXBGcmFnbWVudC5keW5hbWljR3JvdXBGcmFnbWVudFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgX19ub3Q6IHsgX19oYXM6IGAke0dyb3VwRnJhZ21lbnQuZHluYW1pY0dyb3VwRnJhZ21lbnR9LmludmlzaWJsZWAgfSB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgdGhpcy5xdWVyaWVzVXRpbC5hZGRPckZpbHRlcihyb290RmlsdGVyLCBxdWVyeUZpbHRlcik7XG4gICAgfVxuICAgIHJldHVybiByb290RmlsdGVyO1xuICB9XG5cbiAgb25VcGRhdGUoeyBtbywgcm9vdCB9KSB7XG4gICAgaWYgKG1vLmlkKSB7XG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAgIC5ob29rUmVzcG9uc2UoXG4gICAgICAgICAgKHsgdXJsLCBtZXRob2QgfSkgPT5cbiAgICAgICAgICAgIFsnUFVUJywgJ0RFTEVURScsICdQT1NUJ10uaW5jbHVkZXMobWV0aG9kKSAmJlxuICAgICAgICAgICAgUmVnRXhwKGAoKGludmVudG9yeS9tYW5hZ2VkT2JqZWN0cyl8KHNlcnZpY2Uvc21hcnRncm91cC9zbWFydGdyb3VwcykpLyR7bW8uaWR9YCkudGVzdChcbiAgICAgICAgICAgICAgdXJsXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKCgpID0+ICF0aGlzLmRyYWdnZWREYXRhKSxcbiAgICAgICAgICB0aGlzLmFwaVNlcnZpY2UuZXhjbHVkZVBlcm1pc3Npb25DYWxsKCksXG4gICAgICAgICAgbWVyZ2VNYXAodGhpcy5hcGlTZXJ2aWNlLnJlc29sdmVEYXRhPElNYW5hZ2VkT2JqZWN0PiksXG4gICAgICAgICAgZmlsdGVyKHJlc3BvbnNlID0+ICFyZXNwb25zZT8uZGF0YT8uYzh5X0Rhc2hib2FyZClcbiAgICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHJvb3QpIHtcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgICAgLmhvb2tSZXNwb25zZShcbiAgICAgICAgICAoeyB1cmwsIG1ldGhvZCB9KSA9PlxuICAgICAgICAgICAgUmVnRXhwKCcoKGludmVudG9yeS9tYW5hZ2VkT2JqZWN0cyl8KHNlcnZpY2Uvc21hcnRncm91cC9zbWFydGdyb3VwcykpLz8kJykudGVzdCh1cmwpICYmXG4gICAgICAgICAgICBtZXRob2QgPT09ICdQT1NUJ1xuICAgICAgICApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKHRoaXMuYXBpU2VydmljZS5yZXNvbHZlRGF0YTxJTWFuYWdlZE9iamVjdD4pLFxuICAgICAgICAgIGZpbHRlcihyZXNwb25zZSA9PiB0aGlzLmlzTmV3TWFuYWdlZE9iamVjdFJvb3QocmVzcG9uc2UpKVxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZW1wdHkoKTtcbiAgICB9XG4gIH1cblxuICBpc05ld01hbmFnZWRPYmplY3RSb290KHJlc3BvbnNlOiBQYXJ0aWFsPElSZXN1bHQ8SU1hbmFnZWRPYmplY3Q+PiA9IHt9KSB7XG4gICAgY29uc3QgeyBkYXRhIH0gPSByZXNwb25zZTtcbiAgICBsZXQgaXNSb290QXNzZXQgPSBmYWxzZTtcblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlzUm9vdEFzc2V0ID0gISFkYXRhW0dyb3VwRnJhZ21lbnQuZ3JvdXBGcmFnbWVudFR5cGVdO1xuICAgICAgaWYgKCFpc1Jvb3RBc3NldCAmJiB0aGlzLm1vZHVsZUNvbmZpZy5zbWFydEdyb3Vwcykge1xuICAgICAgICBpc1Jvb3RBc3NldCA9ICEhZGF0YVtHcm91cEZyYWdtZW50LmR5bmFtaWNHcm91cEZyYWdtZW50XTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlzUm9vdEFzc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGl0IGlzIHBvc3NpYmxlIHRvIGRyb3AgYSBub2RlIGFmdGVyIGRyYWdnaW5nLlxuICAgKiBAcGFyYW0gZHJvcE9uUm9vdCBJcyB0aGUgZHJvcCBwZXJmb3JtZWQgb24gdGhlIHJvb3Qgbm9kZVxuICAgKi9cbiAgY2FuRHJvcE5vZGUoZHJvcE9uUm9vdDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhZHJvcE9uUm9vdCB8fFxuICAgICAgdGhpcy51c2VyLmhhc0FueVJvbGUodGhpcy5hcHBTdGF0ZS5jdXJyZW50VXNlci52YWx1ZSwgW1xuICAgICAgICBQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9BRE1JTixcbiAgICAgICAgUGVybWlzc2lvbnMuUk9MRV9NQU5BR0VEX09CSkVDVF9BRE1JTlxuICAgICAgXSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIGJyZWFkY3J1bWJzIGZvciBkZXZpY2VzLFxuICAgKiBzbyB3ZSBzZXQgYSBwcmVmZXJyZWQgb25lIG9uIGNsaWNrIG9uIGEgZGV2aWNlLlxuICAgKiBAcGFyYW0gcGFyZW50cyBUaGUgcGFyZW50IG5vZGVzIG9mIHRoZSBkZXZpY2UgdG8gc2VsZWN0IHRoZSBwcmVmZXJlZCBvbmUuXG4gICAqL1xuICBwcmVmZXJCcmVhZGNydW1iKHBhcmVudHM6IE5hdmlnYXRvck5vZGVbXSkge1xuICAgIGlmIChwYXJlbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5icmVhZGNydW1iU2VydmljZS5zZWxlY3RQcmVmZXJyZWRCeVBhdGgocGFyZW50c1swXS5wYXRoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlRmlsdGVyKGV4dHJhUGFyYW1zOiBhbnkgPSB7fSkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGN1cnJlbnRQYWdlOiAxLFxuICAgICAgd2l0aFRvdGFsUGFnZXM6IHRydWUsXG4gICAgICBwYWdlU2l6ZTogMTBcbiAgICB9O1xuICAgIHJldHVybiB7IC4uLnBhcmFtcywgLi4uZXh0cmFQYXJhbXMgfTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDb21iaW5lZFF1ZXJ5KHF1ZXJ5QSwgcXVlcnlCKSB7XG4gICAgbGV0IGNvbWJpbmVkUXVlcnk7XG4gICAgaWYgKHF1ZXJ5QSAmJiBxdWVyeUIpIHtcbiAgICAgIGNvbnN0IGZpbHRlclF1ZXJ5ID0gdGhpcy5xdWVyaWVzVXRpbC5idWlsZFF1ZXJ5KFtcbiAgICAgICAge1xuICAgICAgICAgIF9fdXNlRmlsdGVyUXVlcnlTdHJpbmc6IHF1ZXJ5QVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgX191c2VGaWx0ZXJRdWVyeVN0cmluZzogcXVlcnlCXG4gICAgICAgIH1cbiAgICAgIF0pO1xuICAgICAgY29uc3Qgb3JiZXJCeVF1ZXJ5ID0gdGhpcy5xdWVyaWVzVXRpbC5leHRyYWN0QW5kTWVyZ2VPcmRlckJ5cyhbcXVlcnlBLCBxdWVyeUJdKTtcbiAgICAgIGNvbWJpbmVkUXVlcnkgPSBgJHtmaWx0ZXJRdWVyeX0gJHtvcmJlckJ5UXVlcnl9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tYmluZWRRdWVyeSA9IHF1ZXJ5QSB8fCBxdWVyeUIgfHwgJyc7XG4gICAgfVxuICAgIHJldHVybiBjb21iaW5lZFF1ZXJ5O1xuICB9XG59XG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __awaiter } from 'tslib';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { Injectable, NgModule } from '@angular/core';
|
|
4
|
-
import { from, Subject } from 'rxjs';
|
|
4
|
+
import { from, Subject, pipe } from 'rxjs';
|
|
5
5
|
import { filter } from 'rxjs/operators';
|
|
6
6
|
import * as i1 from '@c8y/client';
|
|
7
7
|
import { FetchClient, BasicAuth, CookieAuth, Realtime, EventBinaryService, EventService, InventoryService, MeasurementService, AlarmService, OperationBulkService, OperationService, ApplicationService, UserService, TenantService, SystemOptionsService, TenantOptionsService, TenantSecurityOptionsService, TenantLoginOptionsService, AuditService, InventoryRoleService, InventoryBinaryService, DeviceRegistrationService, DeviceRegistrationBulkService, UserRoleService, UserGroupService, IdentityService, TrustedCertificateService, SmartGroupsService, SmartRulesService } from '@c8y/client';
|
|
@@ -89,6 +89,21 @@ class ApiService {
|
|
|
89
89
|
return response.clone().json().then(cb, cb);
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Can be added to a pipe to exclude any permission call. Permission calls are PUT
|
|
94
|
+
* request with only an id in it, to verify if the user has access to this managed object.
|
|
95
|
+
* @returns The operator to be added to a pipe.
|
|
96
|
+
*/
|
|
97
|
+
excludePermissionCall() {
|
|
98
|
+
return pipe(filter(({ method, options }) => {
|
|
99
|
+
if (method === 'PUT' && options.body && typeof options.body === 'string') {
|
|
100
|
+
const parsedBody = JSON.parse(options.body);
|
|
101
|
+
const bodyKeys = Object.keys(parsedBody);
|
|
102
|
+
return !(bodyKeys.length === 1 && bodyKeys[0] === 'id');
|
|
103
|
+
}
|
|
104
|
+
return true;
|
|
105
|
+
}));
|
|
106
|
+
}
|
|
92
107
|
/**
|
|
93
108
|
* Allows to intercept requests performed via the FetchClient requests.
|
|
94
109
|
* @param interceptor The interceptor to be added.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-api.mjs","sources":["../../api/interceptor.model.ts","../../api/http-handler.model.ts","../../api/api.service.ts","../../api/data.module.ts","../../api/index.ts","../../api/c8y-ngx-components-api.ts"],"sourcesContent":["import { ApiCall } from './api.model';\nimport { Observable } from 'rxjs';\nimport { IFetchResponse } from '@c8y/client';\n\nexport interface HttpInterceptor {\n intercept(req: ApiCall, next: HttpHandler): Observable<IFetchResponse>;\n}\n\nexport abstract class HttpHandler {\n abstract handle(req: ApiCall): Observable<IFetchResponse>;\n}\n","import { ApiCall } from './api.model';\nimport { Observable, from } from 'rxjs';\nimport { FetchClient, IFetchResponse } from '@c8y/client';\nimport { HttpHandler, HttpInterceptor } from './interceptor.model';\n\nexport class HttpInterceptHandler extends HttpHandler {\n constructor(protected interceptor: HttpInterceptor, protected nextHandler: HttpHandler) {\n super();\n }\n\n handle(req: ApiCall): Observable<IFetchResponse> {\n return this.interceptor.intercept(req, this.nextHandler);\n }\n}\n\nexport interface RequestStartAndFinish {\n onStart(req: ApiCall): void;\n onFinish(res: ApiCall): void;\n}\n\nexport class HttpRequestHandler extends HttpHandler {\n constructor(protected fetch: FetchClient['fetch'], protected apiService?: RequestStartAndFinish) {\n super();\n }\n\n handle(req: ApiCall): Observable<IFetchResponse> {\n const { options, url } = req;\n const { method } = options;\n this.apiService?.onStart({ method, options, url });\n let fetchPromise = this.fetch(url, options);\n if (typeof options.responseInterceptor === 'function') {\n fetchPromise = fetchPromise.then(options.responseInterceptor);\n }\n fetchPromise.then(\n (response: IFetchResponse) => this.apiService?.onFinish({ method, options, url, response }),\n (response: IFetchResponse) => this.apiService?.onFinish({ method, options, url, response })\n );\n return from(fetchPromise);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FetchClient, IFetchOptions, IFetchResponse } from '@c8y/client';\nimport { Subject, Observable } from 'rxjs';\nimport { ApiCall, ApiCallOptions } from './api.model';\nimport { filter } from 'rxjs/operators';\nimport { HttpInterceptor, HttpHandler } from './interceptor.model';\nimport {\n HttpInterceptHandler,\n HttpRequestHandler,\n RequestStartAndFinish\n} from './http-handler.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ApiService implements RequestStartAndFinish {\n calls: Observable<ApiCall>;\n private callsSubject = new Subject<ApiCall>();\n private interceptors = new Map<string, HttpInterceptor>();\n private interceptorCounter = 0;\n\n constructor(private client: FetchClient) {\n this.calls = this.callsSubject.asObservable();\n this.hookIntoClientFetch();\n }\n\n /**\n * Allows to hook into the responses received by the FetchClient.\n * This is meant to be used to react on the responses, not for manipulation of the responses.\n * @param hookFilter A filter function to filter for specific responses.\n * @returns An Observable of the filtered responses.\n */\n hookResponse(hookFilter: (call: ApiCall) => boolean) {\n return this.callsSubject.pipe(\n filter(({ phase }) => phase === 'finish'),\n filter(hookFilter)\n );\n }\n\n /**\n * Allows to hook into the requests performed by the FetchClient.\n * This is meant to be used to react on the requests, not for manipulation of the requests.\n * @param hookFilter A filter function to filter for specific requests.\n * @returns An Observable of the filtered requests.\n */\n hookRequest(hookFilter: (call: ApiCall) => boolean) {\n return this.callsSubject.pipe(\n filter(({ phase }) => phase === 'start'),\n filter(hookFilter)\n );\n }\n\n async onFinish(call: ApiCall) {\n this.callsSubject.next({ phase: 'finish', ...call });\n }\n\n onStart(call: ApiCall) {\n this.callsSubject.next({ phase: 'start', ...call });\n }\n\n resolveData<T = unknown>(call: ApiCall): Promise<{ data: T; method: string; url: string }> {\n const { response, method, url } = call;\n if ('data' in response) {\n return Promise.resolve({ data: response.data, method, url });\n } else {\n // No Content success status, for example DELETE request.\n if ((response as Response)?.status === 204) {\n return Promise.resolve({ data: null, method, url });\n }\n const cb = data => ({ data, method, url });\n return (response as Response).clone().json().then(cb, cb);\n }\n }\n\n /**\n * Allows to intercept requests performed via the FetchClient requests.\n * @param interceptor The interceptor to be added.\n * @param id An optional unique identifier for the interceptor. The chain of interceptors is ordered by this id. And it can be used to remove the interceptor later on.\n * @returns The id of the interceptor (same as provided id if one was provided, otherwise an id will be generated).\n */\n addInterceptor(interceptor: HttpInterceptor, id?: string): string {\n if (!id) {\n id = `${++this.interceptorCounter}`;\n }\n this.interceptors.set(id, interceptor);\n return id;\n }\n\n /**\n * Allows to remove a previously added interceptor by it's id.\n * @param id The id of the interceptor that should be removed.\n * @returns true if an interceptor existed and has been removed, or false if id does not exist.\n */\n removeInterceptor(id: string): boolean {\n return this.interceptors.delete(id);\n }\n\n private hookIntoClientFetch() {\n const fetch: FetchClient['fetch'] = this.client.fetch.bind(this.client);\n const requestHandler = new HttpRequestHandler(fetch, this);\n this.client.fetch = async (\n url,\n options: ApiCallOptions & IFetchOptions = { method: 'GET' }\n ) => {\n const { method } = options;\n return this.createInterceptorChain({ url, options, method }, requestHandler).toPromise();\n };\n }\n\n private createInterceptorChain(\n call: ApiCall,\n requestHandler: HttpRequestHandler\n ): Observable<IFetchResponse> {\n let handler: HttpHandler = requestHandler;\n // Do some sorting to always apply the interceptors in the specific order\n const sortedInterceptorIds = Array.from(this.interceptors.keys()).sort((a, b) =>\n b.localeCompare(a)\n );\n for (const interceptorId of sortedInterceptorIds) {\n handler = new HttpInterceptHandler(this.interceptors.get(interceptorId), handler);\n }\n return handler.handle(call);\n }\n}\n","import { ModuleWithProviders, NgModule, Provider, Type } from '@angular/core';\nimport { BasicAuth, FetchClient, Realtime, CookieAuth } from '@c8y/client';\nimport { ApiService } from './api.service';\nimport * as services from './services';\n\nfunction toProvider(provide: Type<unknown>): Provider {\n let deps: Array<Type<FetchClient | Realtime | CookieAuth>> = [FetchClient, Realtime];\n if (provide === FetchClient) {\n deps = [CookieAuth];\n }\n if (provide === BasicAuth || provide === CookieAuth) {\n deps = [];\n }\n if (provide === Realtime) {\n deps = [FetchClient];\n }\n return { provide, useClass: provide, deps };\n}\n\nconst providers: Provider[] = Object.keys(services)\n .map(k => toProvider(services[k]))\n .concat([{ provide: ApiService, useClass: ApiService, deps: [FetchClient] }]);\n// @dynamic\n@NgModule({\n providers\n})\nexport class DataModule {\n static providers(): Provider[] {\n return providers;\n }\n static forRoot(): ModuleWithProviders<DataModule> {\n return {\n ngModule: DataModule,\n providers\n };\n }\n}\n","export * from './api.service';\nexport * from './api.model';\nexport * from './data.module';\nexport * from './services';\nexport * from './interceptor.model';\n// do not expose as it might confuse people on what to implement\n// export * from './http-handler.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-api.mjs","sources":["../../api/interceptor.model.ts","../../api/http-handler.model.ts","../../api/api.service.ts","../../api/data.module.ts","../../api/index.ts","../../api/c8y-ngx-components-api.ts"],"sourcesContent":["import { ApiCall } from './api.model';\nimport { Observable } from 'rxjs';\nimport { IFetchResponse } from '@c8y/client';\n\nexport interface HttpInterceptor {\n intercept(req: ApiCall, next: HttpHandler): Observable<IFetchResponse>;\n}\n\nexport abstract class HttpHandler {\n abstract handle(req: ApiCall): Observable<IFetchResponse>;\n}\n","import { ApiCall } from './api.model';\nimport { Observable, from } from 'rxjs';\nimport { FetchClient, IFetchResponse } from '@c8y/client';\nimport { HttpHandler, HttpInterceptor } from './interceptor.model';\n\nexport class HttpInterceptHandler extends HttpHandler {\n constructor(protected interceptor: HttpInterceptor, protected nextHandler: HttpHandler) {\n super();\n }\n\n handle(req: ApiCall): Observable<IFetchResponse> {\n return this.interceptor.intercept(req, this.nextHandler);\n }\n}\n\nexport interface RequestStartAndFinish {\n onStart(req: ApiCall): void;\n onFinish(res: ApiCall): void;\n}\n\nexport class HttpRequestHandler extends HttpHandler {\n constructor(protected fetch: FetchClient['fetch'], protected apiService?: RequestStartAndFinish) {\n super();\n }\n\n handle(req: ApiCall): Observable<IFetchResponse> {\n const { options, url } = req;\n const { method } = options;\n this.apiService?.onStart({ method, options, url });\n let fetchPromise = this.fetch(url, options);\n if (typeof options.responseInterceptor === 'function') {\n fetchPromise = fetchPromise.then(options.responseInterceptor);\n }\n fetchPromise.then(\n (response: IFetchResponse) => this.apiService?.onFinish({ method, options, url, response }),\n (response: IFetchResponse) => this.apiService?.onFinish({ method, options, url, response })\n );\n return from(fetchPromise);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FetchClient, IFetchOptions, IFetchResponse } from '@c8y/client';\nimport { Subject, Observable, MonoTypeOperatorFunction, pipe } from 'rxjs';\nimport { ApiCall, ApiCallOptions } from './api.model';\nimport { filter } from 'rxjs/operators';\nimport { HttpInterceptor, HttpHandler } from './interceptor.model';\nimport {\n HttpInterceptHandler,\n HttpRequestHandler,\n RequestStartAndFinish\n} from './http-handler.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ApiService implements RequestStartAndFinish {\n calls: Observable<ApiCall>;\n private callsSubject = new Subject<ApiCall>();\n private interceptors = new Map<string, HttpInterceptor>();\n private interceptorCounter = 0;\n\n constructor(private client: FetchClient) {\n this.calls = this.callsSubject.asObservable();\n this.hookIntoClientFetch();\n }\n\n /**\n * Allows to hook into the responses received by the FetchClient.\n * This is meant to be used to react on the responses, not for manipulation of the responses.\n * @param hookFilter A filter function to filter for specific responses.\n * @returns An Observable of the filtered responses.\n */\n hookResponse(hookFilter: (call: ApiCall) => boolean) {\n return this.callsSubject.pipe(\n filter(({ phase }) => phase === 'finish'),\n filter(hookFilter)\n );\n }\n\n /**\n * Allows to hook into the requests performed by the FetchClient.\n * This is meant to be used to react on the requests, not for manipulation of the requests.\n * @param hookFilter A filter function to filter for specific requests.\n * @returns An Observable of the filtered requests.\n */\n hookRequest(hookFilter: (call: ApiCall) => boolean) {\n return this.callsSubject.pipe(\n filter(({ phase }) => phase === 'start'),\n filter(hookFilter)\n );\n }\n\n async onFinish(call: ApiCall) {\n this.callsSubject.next({ phase: 'finish', ...call });\n }\n\n onStart(call: ApiCall) {\n this.callsSubject.next({ phase: 'start', ...call });\n }\n\n resolveData<T = unknown>(call: ApiCall): Promise<{ data: T; method: string; url: string }> {\n const { response, method, url } = call;\n if ('data' in response) {\n return Promise.resolve({ data: response.data, method, url });\n } else {\n // No Content success status, for example DELETE request.\n if ((response as Response)?.status === 204) {\n return Promise.resolve({ data: null, method, url });\n }\n const cb = data => ({ data, method, url });\n return (response as Response).clone().json().then(cb, cb);\n }\n }\n /**\n * Can be added to a pipe to exclude any permission call. Permission calls are PUT\n * request with only an id in it, to verify if the user has access to this managed object.\n * @returns The operator to be added to a pipe.\n */\n excludePermissionCall(): MonoTypeOperatorFunction<ApiCall> {\n return pipe(\n filter(({ method, options }) => {\n if (method === 'PUT' && options.body && typeof options.body === 'string') {\n const parsedBody = JSON.parse(options.body as string);\n const bodyKeys = Object.keys(parsedBody);\n return !(bodyKeys.length === 1 && bodyKeys[0] === 'id');\n }\n return true;\n })\n );\n }\n\n /**\n * Allows to intercept requests performed via the FetchClient requests.\n * @param interceptor The interceptor to be added.\n * @param id An optional unique identifier for the interceptor. The chain of interceptors is ordered by this id. And it can be used to remove the interceptor later on.\n * @returns The id of the interceptor (same as provided id if one was provided, otherwise an id will be generated).\n */\n addInterceptor(interceptor: HttpInterceptor, id?: string): string {\n if (!id) {\n id = `${++this.interceptorCounter}`;\n }\n this.interceptors.set(id, interceptor);\n return id;\n }\n\n /**\n * Allows to remove a previously added interceptor by it's id.\n * @param id The id of the interceptor that should be removed.\n * @returns true if an interceptor existed and has been removed, or false if id does not exist.\n */\n removeInterceptor(id: string): boolean {\n return this.interceptors.delete(id);\n }\n\n private hookIntoClientFetch() {\n const fetch: FetchClient['fetch'] = this.client.fetch.bind(this.client);\n const requestHandler = new HttpRequestHandler(fetch, this);\n this.client.fetch = async (\n url,\n options: ApiCallOptions & IFetchOptions = { method: 'GET' }\n ) => {\n const { method } = options;\n return this.createInterceptorChain({ url, options, method }, requestHandler).toPromise();\n };\n }\n\n private createInterceptorChain(\n call: ApiCall,\n requestHandler: HttpRequestHandler\n ): Observable<IFetchResponse> {\n let handler: HttpHandler = requestHandler;\n // Do some sorting to always apply the interceptors in the specific order\n const sortedInterceptorIds = Array.from(this.interceptors.keys()).sort((a, b) =>\n b.localeCompare(a)\n );\n for (const interceptorId of sortedInterceptorIds) {\n handler = new HttpInterceptHandler(this.interceptors.get(interceptorId), handler);\n }\n return handler.handle(call);\n }\n}\n","import { ModuleWithProviders, NgModule, Provider, Type } from '@angular/core';\nimport { BasicAuth, FetchClient, Realtime, CookieAuth } from '@c8y/client';\nimport { ApiService } from './api.service';\nimport * as services from './services';\n\nfunction toProvider(provide: Type<unknown>): Provider {\n let deps: Array<Type<FetchClient | Realtime | CookieAuth>> = [FetchClient, Realtime];\n if (provide === FetchClient) {\n deps = [CookieAuth];\n }\n if (provide === BasicAuth || provide === CookieAuth) {\n deps = [];\n }\n if (provide === Realtime) {\n deps = [FetchClient];\n }\n return { provide, useClass: provide, deps };\n}\n\nconst providers: Provider[] = Object.keys(services)\n .map(k => toProvider(services[k]))\n .concat([{ provide: ApiService, useClass: ApiService, deps: [FetchClient] }]);\n// @dynamic\n@NgModule({\n providers\n})\nexport class DataModule {\n static providers(): Provider[] {\n return providers;\n }\n static forRoot(): ModuleWithProviders<DataModule> {\n return {\n ngModule: DataModule,\n providers\n };\n }\n}\n","export * from './api.service';\nexport * from './api.model';\nexport * from './data.module';\nexport * from './services';\nexport * from './interceptor.model';\n// do not expose as it might confuse people on what to implement\n// export * from './http-handler.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -632,7 +632,7 @@ class AssetNodeService {
|
|
|
632
632
|
return this.apiService
|
|
633
633
|
.hookResponse(({ url, method }) => ['PUT', 'DELETE', 'POST'].includes(method) &&
|
|
634
634
|
RegExp(`((inventory/managedObjects)|(service/smartgroup/smartgroups))/${mo.id}`).test(url))
|
|
635
|
-
.pipe(filter(() => !this.draggedData), mergeMap((this.apiService.resolveData)), filter(response => { var _a; return !((_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.c8y_Dashboard); }));
|
|
635
|
+
.pipe(filter(() => !this.draggedData), this.apiService.excludePermissionCall(), mergeMap((this.apiService.resolveData)), filter(response => { var _a; return !((_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.c8y_Dashboard); }));
|
|
636
636
|
}
|
|
637
637
|
else if (root) {
|
|
638
638
|
return this.apiService
|