ets-fe-ng-sdk 18.0.67 → 18.0.69

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.
@@ -76,7 +76,7 @@ export class ApiService {
76
76
  .toPromise()
77
77
  .then((r) => {
78
78
  res.next(r);
79
- this.cacheS.setItem(query, r);
79
+ // this.cacheS.setItem(query, r);
80
80
  res.complete();
81
81
  })
82
82
  .catch((err) => res.error(err));
@@ -140,6 +140,25 @@ export class ApiService {
140
140
  });
141
141
  });
142
142
  };
143
+ this.getFromMemory = (route, parameters, extras) => new Observable((res) => {
144
+ const query = route + this.getRequestParse(parameters);
145
+ if (this.cacheS.has(query)) {
146
+ res.next(this.cacheS.getItem(query));
147
+ res.complete();
148
+ }
149
+ else {
150
+ lastValueFrom(this.get(query, null, extras))
151
+ .then((r) => {
152
+ res.next(r);
153
+ this.cacheS.setItem(query, r);
154
+ res.complete();
155
+ })
156
+ .catch((e) => {
157
+ res.error(e);
158
+ res.complete();
159
+ });
160
+ }
161
+ });
143
162
  //#endregion
144
163
  //#region DELETE
145
164
  this.delete = (route, extras) => {
@@ -339,4 +358,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
339
358
  providedIn: 'root',
340
359
  }]
341
360
  }], ctorParameters: () => [] });
342
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2VydmljZXMvYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBcUIsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9GLE9BQU8sRUFBTyxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQVdoRSxNQUFNLE9BQU8sVUFBVTtJQUVyQixJQUFZLE9BQU87UUFDakIsT0FBTztZQUNMLGNBQWMsRUFBRSxrQkFBa0I7U0FDbkMsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFjLFdBQVc7UUFDdkIsT0FBTztZQUNMLE9BQU8sRUFBRSxxQkFBcUI7U0FDL0IsQ0FBQztJQUNKLENBQUM7SUFRRDtRQWxCUSxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBWXZCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDTCxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5QixZQUFPLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFTakMsdUJBQWtCLEdBQUcsQ0FBQyxHQUFzQixFQUFFLEVB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LElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQztTQUMxRixDQUFDO2FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBb0IsQ0FBQztJQUNsRSxDQUFDO0lBQ0QsT0FBTyxDQUFVLEtBQWEsRUFBRSxJQUFjLEVBQUUsTUFBWTtRQUMxRCxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRTtZQUMxQyx3QkFBd0I7WUFDeEIsR0FBRyxNQUFNLEVBQUUsT0FBTztZQUNsQixvQ0FBb0M7WUFDcEMsc0JBQXNCO1lBQ3RCLHNDQUFzQztZQUN0QyxRQUFRO1lBQ1IsNkJBQTZCO1lBQzdCLEtBQUs7U0FDTixDQUFDO2FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBa0IsQ0FBQztJQUNoRSxDQUFDO0lBQ0Qsc0JBQXNCLENBQVUsS0FBYSxFQUFFLElBQWM7UUFDM0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFJLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDOUIsT0FBTyxFQUFFO2dCQUNQLE9BQU8sRUFBRSxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUM7YUFDekQ7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQXpUVSxVQUFVO2tIQUFWLFVBQVUsY0FGVCxNQUFNOzsyRkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGlpZiwgbGFzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCByZXRyeSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSUNvZGVEZXNjcmlwdGlvbiwgSUNvZGVUaXRsZSwgSU9iamVjdExpdGVyYWwgfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IENhY2hlU2VydmljZSB9IGZyb20gJy4vY2FjaGUvY2FjaGUuc2VydmljZSc7XG5pbXBvcnQgeyBMb2NhbENhY2hlU2VydmljZSB9IGZyb20gJy4vY2FjaGUvbG9jYWwtY2FjaGUuc2VydmljZSc7XG5pbXBvcnQgeyBwYXJ0aWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmV4cG9ydCBpbnRlcmZhY2UgSVJlc3BvbnNlIHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICByZXN1bHQ6IGFueTtcbiAgc3RhdHVzOiAnc3VjY2VzcycgfCAnZXJyb3InIHwgJ2ZhaWx1cmUnO1xuICBzdGF0dXNDb2RlOiAnU00wMDAnIHwgJ1NNMDAxJyB8ICdTTTAwMicgfCAnU00wMDMnO1xufVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFwaVNlcnZpY2Uge1xuICBwcml2YXRlIHNob3dSb3V0ZXMgPSAwO1xuICBwcml2YXRlIGdldCBoZWFkZXJzKCkge1xuICAgIHJldHVybiB7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgIH07XG4gIH1cbiAgcHJvdGVjdGVkIGdldCBmaWxlSGVhZGVycygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW5jdHlwZTogJ211bHRpcGFydC9mb3JtLWRhdGEnLFxuICAgIH07XG4gIH1cblxuICBiYXNlVVJMID0gJyc7XG4gIHByaXZhdGUgcmV0cnlDb3VudCA9IDA7XG4gIHB1YmxpYyBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICBwdWJsaWMgY2FjaGVTID0gaW5qZWN0KENhY2hlU2VydmljZSk7XG4gIHB1YmxpYyBsQ2FjaGVTID0gaW5qZWN0KExvY2FsQ2FjaGVTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHJpdmF0ZSBsb2dSb3V0ZXMobWV0aG9kOiAnZ2V0JyB8ICdwb3N0JyB8ICdwdXQnIHwgJ2RlbGV0ZScsIHJvdXRlLCAuLi5leHRyYXMpIHtcbiAgICBpZiAodGhpcy5zaG93Um91dGVzKSB7XG4gICAgICBjb25zb2xlLmxvZyhtZXRob2QsIHJvdXRlLCAuLi5leHRyYXMpO1xuICAgIH1cbiAgfVxuICBwcm90ZWN0ZWQgaGFuZGxlUmVxdWVzdEVycm9yID0gKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICBsZXQgbWVzc2FnZTtcbiAgICBpZiAoZXJyPy5lcnJvciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKVxuICAgICAgbWVzc2FnZSA9IFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgbmV3IFVpbnQ4QXJyYXkoZXJyPy5lcnJvcikpO1xuICAgIHJldHVybiB0aHJvd0Vycm9yKG1lc3NhZ2UgfHwgZXJyPy5lcnJvcj8ubWVzc2FnZSk7XG4gIH07XG4gIHByb3RlY3RlZCBjb25jYXRlbmF0ZUhlYWRlcnMgPSAoaGVhZGVyczE6IEh0dHBIZWFkZXJzLCBoZWFkZXJzMjogSHR0cEhlYWRlcnMpOiBIdHRwSGVhZGVycyA9PiB7XG4gICAgaWYgKCFoZWFkZXJzMSkgcmV0dXJuIGhlYWRlcnMyO1xuICAgIGVsc2UgaWYgKCFoZWFkZXJzMikgcmV0dXJuIGhlYWRlcnMxO1xuXG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaGVhZGVyczEua2V5cygpKSBoZWFkZXJzID0gaGVhZGVycy5zZXQoaXRlbSwgaGVhZGVyczEuZ2V0KGl0ZW0pKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaGVhZGVyczIua2V5cygpKSB7XG4gICAgICBpZiAoaGVhZGVycy5oYXMoaXRlbSkpIGhlYWRlcnMuZGVsZXRlKGl0ZW0pO1xuICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KGl0ZW0sIGhlYWRlcnMyLmdldChpdGVtKSk7XG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJzO1xuICB9O1xuXG4gIC8vI3JlZ2lvbiBQQVRDSFxuICBwYXRjaDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBib2R5PywgZXh0cmFzPzogSUV4dHJhcyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHRoaXMubG9nUm91dGVzKCdwb3N0Jywgcm91dGUsIGJvZHkpO1xuICAgIGNvbnNvbGUubG9nKGJvZHkpO1xuICAgIGxldCBoZWFkZXJzID0gZXh0cmFzPy51c2VFbmRvcnNlbWVudFxuICAgICAgPyBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKS5zZXQoJ3VzZUVuZG9yc2VtZW50JywgJ3RydWUnKVxuICAgICAgOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucGF0Y2goZW5jb2RlVVJJKHRoaXMuYmFzZVVSTCArIHJvdXRlKSwgYm9keSwge1xuICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhoZWFkZXJzLCBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnMpLFxuICAgICAgfSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVSZXF1ZXN0RXJyb3IpKSBhcyBPYnNlcnZhYmxlPGFueT47XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG4gIC8vI3JlZ2lvbiBQT1NUXG4gIC8vIHBvc3Q8VEJvZHkgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk/OiBUQm9keSwgZXh0cmFzPzogSUV4dHJhcyk6IE9ic2VydmFibGU8VEJvZHk+O1xuICAvLyBwb3N0PFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk/OiBhbnksIGV4dHJhcz86IElFeHRyYXMpOiBPYnNlcnZhYmxlPFQ+O1xuICBwb3N0PFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk/OiBhbnksIGV4dHJhcz86IElFeHRyYXMpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICB0aGlzLmxvZ1JvdXRlcygncG9zdCcsIHJvdXRlLCBib2R5KTtcbiAgICBjb25zb2xlLmxvZyhib2R5KTtcbiAgICBsZXQgaGVhZGVycyA9IGV4dHJhcz8udXNlRW5kb3JzZW1lbnRcbiAgICAgID8gbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycykuc2V0KCd1c2VFbmRvcnNlbWVudCcsICd0cnVlJylcbiAgICAgIDogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdChlbmNvZGVVUkkodGhpcy5iYXNlVVJMICsgcm91dGUpLCBib2R5LCB7XG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgICAuLi5leHRyYXM/Lm9wdGlvbnMsXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKGhlYWRlcnMsIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgICB9KVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZVJlcXVlc3RFcnJvcikpIGFzIE9ic2VydmFibGU8YW55PjtcbiAgfVxuICBwb3N0RmlsZTxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBib2R5OiBGb3JtRGF0YSwgZXh0cmFzPzogYW55KSB7XG4gICAgLy8gcmV0dXJuIHRoaXMucG9zdDxUPihyb3V0ZSwgYm9keSwge1xuICAgIC8vICAgb3B0aW9uczoge1xuICAgIC8vICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAvLyAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgIC8vICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhcbiAgICAvLyAgICAgICBuZXcgSHR0cEhlYWRlcnMoe1xuICAgIC8vICAgICAgICAgZW5jdHlwZTogJ211bHRpcGFydC9mb3JtLWRhdGEnLFxuICAgIC8vICAgICAgIH0pLFxuICAgIC8vICAgICAgIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVyc1xuICAgIC8vICAgICApLFxuICAgIC8vICAgfSxcbiAgICAvLyB9KTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KGVuY29kZVVSSSh0aGlzLmJhc2VVUkwgKyByb3V0ZSksIGJvZHksIHtcbiAgICAgICAgLy8gcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgIC4uLmV4dHJhcz8ub3B0aW9ucyxcbiAgICAgICAgLy8gaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMoXG4gICAgICAgIC8vICAgbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgLy8gICAgIGVuY3R5cGU6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcbiAgICAgICAgLy8gICB9KSxcbiAgICAgICAgLy8gICBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnNcbiAgICAgICAgLy8gKSxcbiAgICAgIH0pXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlUmVxdWVzdEVycm9yKSkgYXMgT2JzZXJ2YWJsZTxUPjtcbiAgfVxuICBwb3N0RmlsZVdpdGhFbmRvcnNlbWVudDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBib2R5OiBGb3JtRGF0YSkge1xuICAgIHJldHVybiB0aGlzLnBvc3Q8VD4ocm91dGUsIGJvZHksIHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCd1c2VFbmRvcnNlbWVudCcsICd0cnVlJyksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIHBvc3RTdHJpbmcocm91dGU6IHN0cmluZywgYm9keT8sIGV4dHJhcz86IElFeHRyYXMpIHtcbiAgICAvLyBjb25zb2xlLmxvZygncmVxdWVzdENvdW50JywgKytFVFNlbnZpcm9ubWVudC5yZXF1ZXN0Q291bnQpO1xuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC9wbGFpbicsXG4gICAgfSk7XG4gICAgaGVhZGVycyA9IGV4dHJhcz8udXNlRW5kb3JzZW1lbnQgPyBoZWFkZXJzLnNldCgndXNlRW5kb3JzZW1lbnQnLCAndHJ1ZScpIDogaGVhZGVycztcbiAgICByZXR1cm4gdGhpcy5wb3N0PHN0cmluZz4ocm91dGUsIGJvZHksIHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMoaGVhZGVycywgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgcG9zdFN0cmluZ1dpdGhMb2NhbENhY2hlKHJvdXRlOiBzdHJpbmcsIGJvZHk6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxzdHJpbmc+KChyZXMpID0+IHtcbiAgICAgIGNvbnN0IGJkeSA9IGJvZHk/LnRyaW0oKTtcbiAgICAgIC8vIGRlYnVnZ2VyXG4gICAgICBpZiAodGhpcy5sQ2FjaGVTLmhhcyhyb3V0ZSArICdfJyArIGJkeSkpIHtcbiAgICAgICAgcmVzLm5leHQodGhpcy5sQ2FjaGVTLmdldEl0ZW08c3RyaW5nPihyb3V0ZSArICdfJyArIGJkeSkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnBvc3RTdHJpbmcocm91dGUsIGJkeSlcbiAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAgIC50aGVuKChyKSA9PiB7XG4gICAgICAgICAgcmVzLm5leHQocik7XG4gICAgICAgICAgdGhpcy5sQ2FjaGVTLnNldEl0ZW0ocm91dGUgKyAnXycgKyBiZHksIHIpO1xuICAgICAgICAgIHJlcy5jb21wbGV0ZSgpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICByZXMuZXJyb3IoZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBHRVRcbiAgLyoqXG4gICAqIFBlcmZvcm0gYSBHRVQgcmVxdWVzdFxuICAgKiBAcGFyYW0gcm91dGUgQVBJIGVuZHBvaW50XG4gICAqIEBwYXJhbSBwYXJhbWV0ZXJzIE9iamVjdCB0byBjb252ZXJ0IGludG8gcXVlcnlwYXJhbXNcbiAgICogQHBhcmFtIGV4dHJhcyBFeHRyYSBjb25maWd1cmF0aW9ucyBmb3IgdGhlIHJlcXVlc3RcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldCA9IDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBwYXJhbWV0ZXJzPzogSU9iamVjdExpdGVyYWwsIGV4dHJhcz86IElFeHRyYXMpOiBPYnNlcnZhYmxlPFQ+ID0+IHtcbiAgICB0aGlzLmxvZ1JvdXRlcygnZ2V0Jywgcm91dGUsIHBhcmFtZXRlcnMpO1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUPigocmVzKSA9PiB7XG4gICAgICBjb25zdCBxdWVyeSA9IHRoaXMuYmFzZVVSTCArIHJvdXRlICsgdGhpcy5nZXRSZXF1ZXN0UGFyc2UocGFyYW1ldGVycyk7XG4gICAgICB0aGlzLmh0dHBcbiAgICAgICAgLmdldChxdWVyeSwge1xuICAgICAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLCBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnMpLFxuICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgICAgIC4uLmV4dHJhcz8ub3B0aW9ucyxcbiAgICAgICAgfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgcmV0cnkodGhpcy5yZXRyeUNvdW50KSxcbiAgICAgICAgICB0YXAoKHgpID0+ICh0aGlzLnNob3dSb3V0ZXMgPyBjb25zb2xlLmxvZyh4KSA6IG51bGwpKSxcbiAgICAgICAgICBtYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXMpKVxuICAgICAgICAgICAgICBpZiAocmVzWzBdPy5jb2RlKSByZXR1cm4gcmVzLnNvcnQoKS5zb3J0MignY29kZScsIHRydWUpO1xuICAgICAgICAgICAgICBlbHNlIGlmIChyZXNbMF0/LmNvbHVtbk5hbWUpIHJldHVybiByZXMuc29ydCgpLnNvcnQyKCdjb2x1bW5OYW1lJywgdHJ1ZSk7XG4gICAgICAgICAgICAgIGVsc2UgcmV0dXJuIHJlcy5zb3J0KCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVSZXF1ZXN0RXJyb3IpLFxuICAgICAgICApXG4gICAgICAgIC50b1Byb21pc2UoKVxuICAgICAgICAudGhlbigocikgPT4ge1xuICAgICAgICAgIHJlcy5uZXh0KHIpO1xuICAgICAgICAgIHRoaXMuY2FjaGVTLnNldEl0ZW0ocXVlcnksIHIpO1xuICAgICAgICAgIHJlcy5jb21wbGV0ZSgpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycikgPT4gcmVzLmVycm9yKGVycikpO1xuICAgIH0pO1xuICB9O1xuXG4gIGdldENvZGVzID0gPFQgZXh0ZW5kcyBJQ29kZVRpdGxlIHwgSUNvZGVEZXNjcmlwdGlvbiA9IElDb2RlVGl0bGUgJiBJQ29kZURlc2NyaXB0aW9uPihcbiAgICByb3V0ZTogc3RyaW5nLFxuICApID0+IHRoaXMuZ2V0PFRbXT4ocm91dGUpLnBpcGUobWFwKChyZXMpID0+IHRoaXMuc29ydENvZGVzKHJlcykpKTtcblxuICBnZXRUZXh0ID0gPFQgPSBzdHJpbmc+KFxuICAgIHJvdXRlOiBzdHJpbmcsXG4gICAgcGFyYW1ldGVycz86IHsgW2ZpZWxkOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIH0sXG4gICAgZXh0cmFzPzogSUV4dHJhcyxcbiAgKSA9PlxuICAgIHRoaXMuZ2V0PFQ+KHJvdXRlLCBwYXJhbWV0ZXJzLCB7XG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLCBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnMpLFxuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgZ2V0RmlsZSA9IDxUID0gc3RyaW5nPihcbiAgICByb3V0ZTogc3RyaW5nLFxuICAgIHBhcmFtZXRlcnM/OiB7IFtmaWVsZDogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB9LFxuICAgIGV4dHJhcz86IElFeHRyYXMsXG4gICkgPT5cbiAgICB0aGlzLmdldDxUPihyb3V0ZSwgcGFyYW1ldGVycywge1xuICAgICAgb3B0aW9uczoge1xuICAgICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKSwgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzKSxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlCdWZmZXInLFxuICAgICAgfSxcbiAgICB9KTtcblxuICBnZXRXaXRoQm9keSA9IDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBib2R5PzogYW55LCBleHRyYXM/OiBJRXh0cmFzKSA9PiB7XG4gICAgdGhpcy5sb2dSb3V0ZXMoJ2dldCcsIHJvdXRlKTtcbiAgICAvLyBkZWJ1Z2dlclxuICAgIGNvbnN0IHJlcSA9IG5ldyBIdHRwUmVxdWVzdCgnR0VUJywgdGhpcy5iYXNlVVJMICsgcm91dGUsIGJvZHksIHtcbiAgICAgIC4uLmV4dHJhcz8ub3B0aW9ucyxcbiAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLCBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnMpLFxuICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5yZXF1ZXN0PFQ+KHJlcSkucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlUmVxdWVzdEVycm9yKSkgYXMgT2JzZXJ2YWJsZTxUPjtcbiAgfTtcblxuICBnZXRGcm9tbG9jYWwgPSA8VCA9IGFueT4ocm91dGU6IHN0cmluZywgcGFyYW1ldGVycz86IE9iamVjdCwgZXh0cmFzPzogSUV4dHJhcykgPT4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUPigocmVzKSA9PiB7XG4gICAgICBjb25zdCBxdWVyeSA9IHJvdXRlICsgdGhpcy5nZXRSZXF1ZXN0UGFyc2UocGFyYW1ldGVycyk7XG4gICAgICBpZiAodGhpcy5sQ2FjaGVTLmhhcyhxdWVyeSkpIHtcbiAgICAgICAgcmVzLm5leHQodGhpcy5sQ2FjaGVTLmdldEl0ZW08VD4ocXVlcnkpKTtcbiAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICB9IGVsc2VcbiAgICAgICAgbGFzdFZhbHVlRnJvbSh0aGlzLmdldChxdWVyeSwgbnVsbCwgZXh0cmFzKSkudGhlbigocikgPT4ge1xuICAgICAgICAgIC8vIGlmICghdGhpcy5jUy5oYXMocm91dGUpKVxuICAgICAgICAgIHJlcy5uZXh0KHIpO1xuICAgICAgICAgIHRoaXMubENhY2hlUy5zZXRJdGVtKHF1ZXJ5LCByKTtcbiAgICAgICAgICByZXMuY29tcGxldGUoKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG4gIGdldFdpdGhMb2NhbENhY2hlID0gPFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBPYmplY3QsIGV4dHJhcz86IElFeHRyYXMpID0+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8VD4oKHJlcykgPT4ge1xuICAgICAgY29uc3QgcXVlcnkgPSByb3V0ZSArIHRoaXMuZ2V0UmVxdWVzdFBhcnNlKHBhcmFtZXRlcnMpO1xuICAgICAgaWYgKHRoaXMubENhY2hlUy5oYXMocXVlcnkpKSB7XG4gICAgICAgIHJlcy5uZXh0KHRoaXMubENhY2hlUy5nZXRJdGVtPFQ+KHF1ZXJ5KSk7XG4gICAgICB9XG4gICAgICBsYXN0VmFsdWVGcm9tKHRoaXMuZ2V0KHF1ZXJ5LCBudWxsLCBleHRyYXMpKVxuICAgICAgICAudGhlbigocikgPT4ge1xuICAgICAgICAgIC8vIGlmICghdGhpcy5jUy5oYXMocm91dGUpKVxuICAgICAgICAgIHJlcy5uZXh0KHIpO1xuICAgICAgICAgIHRoaXMubENhY2hlUy5zZXRJdGVtKHF1ZXJ5LCByKTtcbiAgICAgICAgICByZXMuY29tcGxldGUoKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgcmVzLmVycm9yKGUpO1xuICAgICAgICAgIHJlcy5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbiAgZ2V0UmVxdWVzdFBhcnNlKHBhcmFtZXRlcnM/OiBPYmplY3QpIHtcbiAgICByZXR1cm4gIXBhcmFtZXRlcnNcbiAgICAgID8gJydcbiAgICAgIDogJz8nICtcbiAgICAgICAgICBPYmplY3Qua2V5cyhwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgLmZpbHRlcigoa2V5KSA9PiBwYXJhbWV0ZXJzW2tleV0/LnRvU3RyaW5nKCk/LnRyaW0oKSAhPSBudWxsKVxuICAgICAgICAgICAgLm1hcCgoa2V5KSA9PiBgJHtrZXl9PSR7cGFyYW1ldGVyc1trZXldPy50b1N0cmluZygpPy50cmltKCl9YClcbiAgICAgICAgICAgIC5qb2luKCcmJyk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIFBVVFxuICBwdXQ8VCA9IGFueT4ocm91dGU6IHN0cmluZywgYm9keT8sIGV4dHJhcz86IElFeHRyYXMpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICB0aGlzLmxvZ1JvdXRlcygncHV0Jywgcm91dGUsIGJvZHkpO1xuICAgIGxldCBxdWVyeSA9IHRoaXMuYmFzZVVSTCArIHJvdXRlICsgJycsXG4gICAgICBuYm9keSA9IGJvZHk7XG4gICAgaWYgKGV4dHJhcz8ucmVxdWVzdFR5cGUgPT0gJ3F1ZXJ5UGFyYW1zJykge1xuICAgICAgcXVlcnkgKz0gdGhpcy5nZXRSZXF1ZXN0UGFyc2UoYm9keSk7XG4gICAgICBuYm9keSA9IG51bGw7XG4gICAgfVxuICAgIGxldCBoZWFkZXJzID0gZXh0cmFzPy51c2VFbmRvcnNlbWVudFxuICAgICAgPyBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKS5zZXQoJ3VzZUVuZG9yc2VtZW50JywgJ3RydWUnKVxuICAgICAgOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucHV0KHF1ZXJ5LCBuYm9keSwge1xuICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKSwgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzKSxcbiAgICAgIH0pXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlUmVxdWVzdEVycm9yKSkgYXMgT2JzZXJ2YWJsZTxhbnk+O1xuICB9XG4gIHB1dEZpbGU8VCA9IGFueT4ocm91dGU6IHN0cmluZywgYm9keTogRm9ybURhdGEsIGV4dHJhcz86IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wdXQoZW5jb2RlVVJJKHRoaXMuYmFzZVVSTCArIHJvdXRlKSwgYm9keSwge1xuICAgICAgICAvLyByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICAvLyBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhcbiAgICAgICAgLy8gICBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAvLyAgICAgZW5jdHlwZTogJ211bHRpcGFydC9mb3JtLWRhdGEnLFxuICAgICAgICAvLyAgIH0pLFxuICAgICAgICAvLyAgIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVyc1xuICAgICAgICAvLyApLFxuICAgICAgfSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVSZXF1ZXN0RXJyb3IpKSBhcyBPYnNlcnZhYmxlPFQ+O1xuICB9XG4gIHB1dEZpbGVXaXRoRW5kb3JzZW1lbnQ8VCA9IGFueT4ocm91dGU6IHN0cmluZywgYm9keTogRm9ybURhdGEpIHtcbiAgICByZXR1cm4gdGhpcy5wdXQ8VD4ocm91dGUsIGJvZHksIHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCd1c2VFbmRvcnNlbWVudCcsICd0cnVlJyksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBERUxFVEVcbiAgZGVsZXRlID0gPFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGV4dHJhcz86IElFeHRyYXMpID0+IHtcbiAgICB0aGlzLmxvZ1JvdXRlcygnZGVsZXRlJywgcm91dGUpO1xuXG4gICAgbGV0IGhlYWRlcnMgPSBleHRyYXM/LnVzZUVuZG9yc2VtZW50XG4gICAgICA/IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLnNldCgndXNlRW5kb3JzZW1lbnQnLCAndHJ1ZScpXG4gICAgICA6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5kZWxldGU8VD4odGhpcy5iYXNlVVJMICsgcm91dGUsIHtcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgIC4uLmV4dHJhcz8ub3B0aW9ucyxcbiAgICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMobmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyksIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgICB9KVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZVJlcXVlc3RFcnJvcikpIGFzIE9ic2VydmFibGU8YW55PjtcbiAgfTtcbiAgZGVsZXRlV2l0aEJvZHkgPSA8VCA9IGFueT4ocm91dGU6IHN0cmluZywgYm9keT86IGFueSwgZXh0cmFzPzogSUV4dHJhcykgPT4ge1xuICAgIHRoaXMubG9nUm91dGVzKCdkZWxldGUnLCByb3V0ZSk7XG4gICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdERUxFVEUnLCB0aGlzLmJhc2VVUkwgKyByb3V0ZSwgYm9keSwge1xuICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAuLi5leHRyYXM/Lm9wdGlvbnMsXG4gICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKSwgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzKSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnJlcXVlc3Q8VD4ocmVxKS5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVSZXF1ZXN0RXJyb3IpKSBhcyBPYnNlcnZhYmxlPGFueT47XG4gIH07XG4gIGRlbGV0ZVRleHQgPSAocm91dGU6IHN0cmluZywgZXh0cmFzPzogSUV4dHJhcykgPT5cbiAgICB0aGlzLmRlbGV0ZTxzdHJpbmc+KHJvdXRlLCB7XG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgICAuLi5leHRyYXM/Lm9wdGlvbnMsXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLCBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnMpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgLy8jZW5kcmVnaW9uXG5cbiAgc29ydENvZGVzID0gPFQgZXh0ZW5kcyB7IGNvZGU6IHN0cmluZyB9PihkYXRhOiBUW10pID0+IHtcbiAgICByZXR1cm4gZGF0YT8uc29ydDIoJ2NvZGUnLCB0cnVlKT8uc29ydDIoJ2NvZGUnKSBhcyBhbnkgYXMgVFtdO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgSUV4dHJhcyB7XG4gIC8qKlxuICAgKiBTcGVjaWZ5IHdoZXRoZXIgdG8gdXNlIHRoZSBlbmRvcnNlbWVudCBoZWFkZXJcbiAgICovXG4gIHVzZUVuZG9yc2VtZW50PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFJlcG9ydCBwcm9ncmVzcyBvZiB0aGUgcmVxdWVzdFxuICAgKi9cbiAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAvKipcbiAgICogU3BlY2lmeSB0aGUgcmVxdWVzdCBvcHRpb25zLiBUaGUgYWRkZWQgb3B0aW9ucyB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBkZWZhdWx0IG9wdGlvbnNcbiAgICovXG4gIG9wdGlvbnM/OiB7XG4gICAgaGVhZGVycz86IEh0dHBIZWFkZXJzO1xuICAgIFt4OiBzdHJpbmddOiBhbnk7XG4gIH07XG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSByZXF1ZXN0IHR5cGUuIElmIHRoZSByZXF1ZXN0IHR5cGUgaXMgcXVlcnlQYXJhbXMsIHRoZSBib2R5IHdpbGwgYmUgc2VudCBhcyBxdWVyeSBwYXJhbWV0ZXJzXG4gICAqL1xuICByZXF1ZXN0VHlwZT86ICdxdWVyeVBhcmFtcyc7XG59XG4iXX0=
361
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2VydmljZXMvYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBcUIsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9GLE9BQU8sRUFBTyxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQVdoRSxNQUFNLE9BQU8sVUFBVTtJQUVyQixJQUFZLE9BQU87UUFDakIsT0FBTztZQUNMLGNBQWMsRUFBRSxrQkFBa0I7U0FDbkMsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFjLFdBQVc7UUFDdkIsT0FBTztZQUNMLE9BQU8sRUFBRSxxQkFBcUI7U0FDL0IsQ0FBQztJQUNKLENBQUM7SUFRRDtRQWxCUSxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBWXZCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDTCxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5QixZQUFPLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFTakMsdUJBQWtCLEdBQUcsQ0FBQyxHQUFzQixFQUFFLEVB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QUFFLElBQWMsRUFBRSxNQUFZO1FBQzFELE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFO1lBQzFDLHdCQUF3QjtZQUN4QixHQUFHLE1BQU0sRUFBRSxPQUFPO1lBQ2xCLG9DQUFvQztZQUNwQyxzQkFBc0I7WUFDdEIsc0NBQXNDO1lBQ3RDLFFBQVE7WUFDUiw2QkFBNkI7WUFDN0IsS0FBSztTQUNOLENBQUM7YUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFrQixDQUFDO0lBQ2hFLENBQUM7SUFDRCxzQkFBc0IsQ0FBVSxLQUFhLEVBQUUsSUFBYztRQUMzRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUksS0FBSyxFQUFFLElBQUksRUFBRTtZQUM5QixPQUFPLEVBQUU7Z0JBQ1AsT0FBTyxFQUFFLElBQUksV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQzthQUN6RDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBNVVVLFVBQVU7a0hBQVYsVUFBVSxjQUZULE1BQU07OzJGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnMsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaWlmLCBsYXN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHJldHJ5LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJQ29kZURlc2NyaXB0aW9uLCBJQ29kZVRpdGxlLCBJT2JqZWN0TGl0ZXJhbCB9IGZyb20gJy4uL1NoYXJlZC9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgQ2FjaGVTZXJ2aWNlIH0gZnJvbSAnLi9jYWNoZS9jYWNoZS5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsQ2FjaGVTZXJ2aWNlIH0gZnJvbSAnLi9jYWNoZS9sb2NhbC1jYWNoZS5zZXJ2aWNlJztcbmltcG9ydCB7IHBhcnRpYWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuZXhwb3J0IGludGVyZmFjZSBJUmVzcG9uc2Uge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHJlc3VsdDogYW55O1xuICBzdGF0dXM6ICdzdWNjZXNzJyB8ICdlcnJvcicgfCAnZmFpbHVyZSc7XG4gIHN0YXR1c0NvZGU6ICdTTTAwMCcgfCAnU00wMDEnIHwgJ1NNMDAyJyB8ICdTTTAwMyc7XG59XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQXBpU2VydmljZSB7XG4gIHByaXZhdGUgc2hvd1JvdXRlcyA9IDA7XG4gIHByaXZhdGUgZ2V0IGhlYWRlcnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgfTtcbiAgfVxuICBwcm90ZWN0ZWQgZ2V0IGZpbGVIZWFkZXJzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBlbmN0eXBlOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsXG4gICAgfTtcbiAgfVxuXG4gIGJhc2VVUkwgPSAnJztcbiAgcHJpdmF0ZSByZXRyeUNvdW50ID0gMDtcbiAgcHVibGljIGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gIHB1YmxpYyBjYWNoZVMgPSBpbmplY3QoQ2FjaGVTZXJ2aWNlKTtcbiAgcHVibGljIGxDYWNoZVMgPSBpbmplY3QoTG9jYWxDYWNoZVNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBwcml2YXRlIGxvZ1JvdXRlcyhtZXRob2Q6ICdnZXQnIHwgJ3Bvc3QnIHwgJ3B1dCcgfCAnZGVsZXRlJywgcm91dGUsIC4uLmV4dHJhcykge1xuICAgIGlmICh0aGlzLnNob3dSb3V0ZXMpIHtcbiAgICAgIGNvbnNvbGUubG9nKG1ldGhvZCwgcm91dGUsIC4uLmV4dHJhcyk7XG4gICAgfVxuICB9XG4gIHByb3RlY3RlZCBoYW5kbGVSZXF1ZXN0RXJyb3IgPSAoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgIGxldCBtZXNzYWdlO1xuICAgIGlmIChlcnI/LmVycm9yIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpXG4gICAgICBtZXNzYWdlID0gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCBuZXcgVWludDhBcnJheShlcnI/LmVycm9yKSk7XG4gICAgcmV0dXJuIHRocm93RXJyb3IobWVzc2FnZSB8fCBlcnI/LmVycm9yPy5tZXNzYWdlKTtcbiAgfTtcbiAgcHJvdGVjdGVkIGNvbmNhdGVuYXRlSGVhZGVycyA9IChoZWFkZXJzMTogSHR0cEhlYWRlcnMsIGhlYWRlcnMyOiBIdHRwSGVhZGVycyk6IEh0dHBIZWFkZXJzID0+IHtcbiAgICBpZiAoIWhlYWRlcnMxKSByZXR1cm4gaGVhZGVyczI7XG4gICAgZWxzZSBpZiAoIWhlYWRlcnMyKSByZXR1cm4gaGVhZGVyczE7XG5cbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBoZWFkZXJzMS5rZXlzKCkpIGhlYWRlcnMgPSBoZWFkZXJzLnNldChpdGVtLCBoZWFkZXJzMS5nZXQoaXRlbSkpO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBoZWFkZXJzMi5rZXlzKCkpIHtcbiAgICAgIGlmIChoZWFkZXJzLmhhcyhpdGVtKSkgaGVhZGVycy5kZWxldGUoaXRlbSk7XG4gICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoaXRlbSwgaGVhZGVyczIuZ2V0KGl0ZW0pKTtcbiAgICB9XG4gICAgcmV0dXJuIGhlYWRlcnM7XG4gIH07XG5cbiAgLy8jcmVnaW9uIFBBVENIXG4gIHBhdGNoPFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk/LCBleHRyYXM/OiBJRXh0cmFzKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgdGhpcy5sb2dSb3V0ZXMoJ3Bvc3QnLCByb3V0ZSwgYm9keSk7XG4gICAgY29uc29sZS5sb2coYm9keSk7XG4gICAgbGV0IGhlYWRlcnMgPSBleHRyYXM/LnVzZUVuZG9yc2VtZW50XG4gICAgICA/IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLnNldCgndXNlRW5kb3JzZW1lbnQnLCAndHJ1ZScpXG4gICAgICA6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wYXRjaChlbmNvZGVVUkkodGhpcy5iYXNlVVJMICsgcm91dGUpLCBib2R5LCB7XG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgICAuLi5leHRyYXM/Lm9wdGlvbnMsXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKGhlYWRlcnMsIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgICB9KVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZVJlcXVlc3RFcnJvcikpIGFzIE9ic2VydmFibGU8YW55PjtcbiAgfVxuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIFBPU1RcbiAgLy8gcG9zdDxUQm9keSA9IGFueT4ocm91dGU6IHN0cmluZywgYm9keT86IFRCb2R5LCBleHRyYXM/OiBJRXh0cmFzKTogT2JzZXJ2YWJsZTxUQm9keT47XG4gIC8vIHBvc3Q8VCA9IGFueT4ocm91dGU6IHN0cmluZywgYm9keT86IGFueSwgZXh0cmFzPzogSUV4dHJhcyk6IE9ic2VydmFibGU8VD47XG4gIHBvc3Q8VCA9IGFueT4ocm91dGU6IHN0cmluZywgYm9keT86IGFueSwgZXh0cmFzPzogSUV4dHJhcyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHRoaXMubG9nUm91dGVzKCdwb3N0Jywgcm91dGUsIGJvZHkpO1xuICAgIGNvbnNvbGUubG9nKGJvZHkpO1xuICAgIGxldCBoZWFkZXJzID0gZXh0cmFzPy51c2VFbmRvcnNlbWVudFxuICAgICAgPyBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKS5zZXQoJ3VzZUVuZG9yc2VtZW50JywgJ3RydWUnKVxuICAgICAgOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KGVuY29kZVVSSSh0aGlzLmJhc2VVUkwgKyByb3V0ZSksIGJvZHksIHtcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgIC4uLmV4dHJhcz8ub3B0aW9ucyxcbiAgICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMoaGVhZGVycywgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzKSxcbiAgICAgIH0pXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlUmVxdWVzdEVycm9yKSkgYXMgT2JzZXJ2YWJsZTxhbnk+O1xuICB9XG4gIHBvc3RGaWxlPFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk6IEZvcm1EYXRhLCBleHRyYXM/OiBhbnkpIHtcbiAgICAvLyByZXR1cm4gdGhpcy5wb3N0PFQ+KHJvdXRlLCBib2R5LCB7XG4gICAgLy8gICBvcHRpb25zOiB7XG4gICAgLy8gICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgIC8vICAgICAuLi5leHRyYXM/Lm9wdGlvbnMsXG4gICAgLy8gICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKFxuICAgIC8vICAgICAgIG5ldyBIdHRwSGVhZGVycyh7XG4gICAgLy8gICAgICAgICBlbmN0eXBlOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsXG4gICAgLy8gICAgICAgfSksXG4gICAgLy8gICAgICAgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzXG4gICAgLy8gICAgICksXG4gICAgLy8gICB9LFxuICAgIC8vIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QoZW5jb2RlVVJJKHRoaXMuYmFzZVVSTCArIHJvdXRlKSwgYm9keSwge1xuICAgICAgICAvLyByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICAvLyBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhcbiAgICAgICAgLy8gICBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAvLyAgICAgZW5jdHlwZTogJ211bHRpcGFydC9mb3JtLWRhdGEnLFxuICAgICAgICAvLyAgIH0pLFxuICAgICAgICAvLyAgIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVyc1xuICAgICAgICAvLyApLFxuICAgICAgfSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVSZXF1ZXN0RXJyb3IpKSBhcyBPYnNlcnZhYmxlPFQ+O1xuICB9XG4gIHBvc3RGaWxlV2l0aEVuZG9yc2VtZW50PFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk6IEZvcm1EYXRhKSB7XG4gICAgcmV0dXJuIHRoaXMucG9zdDxUPihyb3V0ZSwgYm9keSwge1xuICAgICAgb3B0aW9uczoge1xuICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ3VzZUVuZG9yc2VtZW50JywgJ3RydWUnKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgcG9zdFN0cmluZyhyb3V0ZTogc3RyaW5nLCBib2R5PywgZXh0cmFzPzogSUV4dHJhcykge1xuICAgIC8vIGNvbnNvbGUubG9nKCdyZXF1ZXN0Q291bnQnLCArK0VUU2Vudmlyb25tZW50LnJlcXVlc3RDb3VudCk7XG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L3BsYWluJyxcbiAgICB9KTtcbiAgICBoZWFkZXJzID0gZXh0cmFzPy51c2VFbmRvcnNlbWVudCA/IGhlYWRlcnMuc2V0KCd1c2VFbmRvcnNlbWVudCcsICd0cnVlJykgOiBoZWFkZXJzO1xuICAgIHJldHVybiB0aGlzLnBvc3Q8c3RyaW5nPihyb3V0ZSwgYm9keSwge1xuICAgICAgb3B0aW9uczoge1xuICAgICAgICAuLi5leHRyYXM/Lm9wdGlvbnMsXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhoZWFkZXJzLCBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnMpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBwb3N0U3RyaW5nV2l0aExvY2FsQ2FjaGUocm91dGU6IHN0cmluZywgYm9keTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPHN0cmluZz4oKHJlcykgPT4ge1xuICAgICAgY29uc3QgYmR5ID0gYm9keT8udHJpbSgpO1xuICAgICAgLy8gZGVidWdnZXJcbiAgICAgIGlmICh0aGlzLmxDYWNoZVMuaGFzKHJvdXRlICsgJ18nICsgYmR5KSkge1xuICAgICAgICByZXMubmV4dCh0aGlzLmxDYWNoZVMuZ2V0SXRlbTxzdHJpbmc+KHJvdXRlICsgJ18nICsgYmR5KSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucG9zdFN0cmluZyhyb3V0ZSwgYmR5KVxuICAgICAgICAudG9Qcm9taXNlKClcbiAgICAgICAgLnRoZW4oKHIpID0+IHtcbiAgICAgICAgICByZXMubmV4dChyKTtcbiAgICAgICAgICB0aGlzLmxDYWNoZVMuc2V0SXRlbShyb3V0ZSArICdfJyArIGJkeSwgcik7XG4gICAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgIHJlcy5lcnJvcihlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIEdFVFxuICAvKipcbiAgICogUGVyZm9ybSBhIEdFVCByZXF1ZXN0XG4gICAqIEBwYXJhbSByb3V0ZSBBUEkgZW5kcG9pbnRcbiAgICogQHBhcmFtIHBhcmFtZXRlcnMgT2JqZWN0IHRvIGNvbnZlcnQgaW50byBxdWVyeXBhcmFtc1xuICAgKiBAcGFyYW0gZXh0cmFzIEV4dHJhIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgcmVxdWVzdFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZ2V0ID0gPFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBJT2JqZWN0TGl0ZXJhbCwgZXh0cmFzPzogSUV4dHJhcyk6IE9ic2VydmFibGU8VD4gPT4ge1xuICAgIHRoaXMubG9nUm91dGVzKCdnZXQnLCByb3V0ZSwgcGFyYW1ldGVycyk7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFQ+KChyZXMpID0+IHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5iYXNlVVJMICsgcm91dGUgKyB0aGlzLmdldFJlcXVlc3RQYXJzZShwYXJhbWV0ZXJzKTtcbiAgICAgIHRoaXMuaHR0cFxuICAgICAgICAuZ2V0KHF1ZXJ5LCB7XG4gICAgICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMobmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyksIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICB9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICByZXRyeSh0aGlzLnJldHJ5Q291bnQpLFxuICAgICAgICAgIHRhcCgoeCkgPT4gKHRoaXMuc2hvd1JvdXRlcyA/IGNvbnNvbGUubG9nKHgpIDogbnVsbCkpLFxuICAgICAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlcykpXG4gICAgICAgICAgICAgIGlmIChyZXNbMF0/LmNvZGUpIHJldHVybiByZXMuc29ydCgpLnNvcnQyKCdjb2RlJywgdHJ1ZSk7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKHJlc1swXT8uY29sdW1uTmFtZSkgcmV0dXJuIHJlcy5zb3J0KCkuc29ydDIoJ2NvbHVtbk5hbWUnLCB0cnVlKTtcbiAgICAgICAgICAgICAgZWxzZSByZXR1cm4gcmVzLnNvcnQoKTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZVJlcXVlc3RFcnJvciksXG4gICAgICAgIClcbiAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAgIC50aGVuKChyKSA9PiB7XG4gICAgICAgICAgcmVzLm5leHQocik7XG4gICAgICAgICAgLy8gdGhpcy5jYWNoZVMuc2V0SXRlbShxdWVyeSwgcik7XG4gICAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiByZXMuZXJyb3IoZXJyKSk7XG4gICAgfSk7XG4gIH07XG5cbiAgZ2V0Q29kZXMgPSA8VCBleHRlbmRzIElDb2RlVGl0bGUgfCBJQ29kZURlc2NyaXB0aW9uID0gSUNvZGVUaXRsZSAmIElDb2RlRGVzY3JpcHRpb24+KFxuICAgIHJvdXRlOiBzdHJpbmcsXG4gICkgPT4gdGhpcy5nZXQ8VFtdPihyb3V0ZSkucGlwZShtYXAoKHJlcykgPT4gdGhpcy5zb3J0Q29kZXMocmVzKSkpO1xuXG4gIGdldFRleHQgPSA8VCA9IHN0cmluZz4oXG4gICAgcm91dGU6IHN0cmluZyxcbiAgICBwYXJhbWV0ZXJzPzogeyBbZmllbGQ6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfSxcbiAgICBleHRyYXM/OiBJRXh0cmFzLFxuICApID0+XG4gICAgdGhpcy5nZXQ8VD4ocm91dGUsIHBhcmFtZXRlcnMsIHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMobmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyksIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgfSxcbiAgICB9KTtcblxuICBnZXRGaWxlID0gPFQgPSBzdHJpbmc+KFxuICAgIHJvdXRlOiBzdHJpbmcsXG4gICAgcGFyYW1ldGVycz86IHsgW2ZpZWxkOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIH0sXG4gICAgZXh0cmFzPzogSUV4dHJhcyxcbiAgKSA9PlxuICAgIHRoaXMuZ2V0PFQ+KHJvdXRlLCBwYXJhbWV0ZXJzLCB7XG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLCBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnMpLFxuICAgICAgICByZXNwb25zZVR5cGU6ICdhcnJheUJ1ZmZlcicsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gIGdldFdpdGhCb2R5ID0gPFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk/OiBhbnksIGV4dHJhcz86IElFeHRyYXMpID0+IHtcbiAgICB0aGlzLmxvZ1JvdXRlcygnZ2V0Jywgcm91dGUpO1xuICAgIC8vIGRlYnVnZ2VyXG4gICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdHRVQnLCB0aGlzLmJhc2VVUkwgKyByb3V0ZSwgYm9keSwge1xuICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMobmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyksIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnJlcXVlc3Q8VD4ocmVxKS5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVSZXF1ZXN0RXJyb3IpKSBhcyBPYnNlcnZhYmxlPFQ+O1xuICB9O1xuXG4gIGdldEZyb21sb2NhbCA9IDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBwYXJhbWV0ZXJzPzogT2JqZWN0LCBleHRyYXM/OiBJRXh0cmFzKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFQ+KChyZXMpID0+IHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gcm91dGUgKyB0aGlzLmdldFJlcXVlc3RQYXJzZShwYXJhbWV0ZXJzKTtcbiAgICAgIGlmICh0aGlzLmxDYWNoZVMuaGFzKHF1ZXJ5KSkge1xuICAgICAgICByZXMubmV4dCh0aGlzLmxDYWNoZVMuZ2V0SXRlbTxUPihxdWVyeSkpO1xuICAgICAgICByZXMuY29tcGxldGUoKTtcbiAgICAgIH0gZWxzZVxuICAgICAgICBsYXN0VmFsdWVGcm9tKHRoaXMuZ2V0KHF1ZXJ5LCBudWxsLCBleHRyYXMpKS50aGVuKChyKSA9PiB7XG4gICAgICAgICAgLy8gaWYgKCF0aGlzLmNTLmhhcyhyb3V0ZSkpXG4gICAgICAgICAgcmVzLm5leHQocik7XG4gICAgICAgICAgdGhpcy5sQ2FjaGVTLnNldEl0ZW0ocXVlcnksIHIpO1xuICAgICAgICAgIHJlcy5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbiAgZ2V0V2l0aExvY2FsQ2FjaGUgPSA8VCA9IGFueT4ocm91dGU6IHN0cmluZywgcGFyYW1ldGVycz86IE9iamVjdCwgZXh0cmFzPzogSUV4dHJhcykgPT4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUPigocmVzKSA9PiB7XG4gICAgICBjb25zdCBxdWVyeSA9IHJvdXRlICsgdGhpcy5nZXRSZXF1ZXN0UGFyc2UocGFyYW1ldGVycyk7XG4gICAgICBpZiAodGhpcy5sQ2FjaGVTLmhhcyhxdWVyeSkpIHtcbiAgICAgICAgcmVzLm5leHQodGhpcy5sQ2FjaGVTLmdldEl0ZW08VD4ocXVlcnkpKTtcbiAgICAgIH1cbiAgICAgIGxhc3RWYWx1ZUZyb20odGhpcy5nZXQocXVlcnksIG51bGwsIGV4dHJhcykpXG4gICAgICAgIC50aGVuKChyKSA9PiB7XG4gICAgICAgICAgLy8gaWYgKCF0aGlzLmNTLmhhcyhyb3V0ZSkpXG4gICAgICAgICAgcmVzLm5leHQocik7XG4gICAgICAgICAgdGhpcy5sQ2FjaGVTLnNldEl0ZW0ocXVlcnksIHIpO1xuICAgICAgICAgIHJlcy5jb21wbGV0ZSgpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICByZXMuZXJyb3IoZSk7XG4gICAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuICBnZXRGcm9tTWVtb3J5ID0gPFQ+KHJvdXRlOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBPYmplY3QsIGV4dHJhcz86IElFeHRyYXMpID0+XG4gICAgbmV3IE9ic2VydmFibGU8VD4oKHJlcykgPT4ge1xuICAgICAgY29uc3QgcXVlcnkgPSByb3V0ZSArIHRoaXMuZ2V0UmVxdWVzdFBhcnNlKHBhcmFtZXRlcnMpO1xuICAgICAgaWYgKHRoaXMuY2FjaGVTLmhhcyhxdWVyeSkpIHtcbiAgICAgICAgcmVzLm5leHQodGhpcy5jYWNoZVMuZ2V0SXRlbTxUPihxdWVyeSkpO1xuICAgICAgICByZXMuY29tcGxldGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxhc3RWYWx1ZUZyb20odGhpcy5nZXQocXVlcnksIG51bGwsIGV4dHJhcykpXG4gICAgICAgICAgLnRoZW4oKHIpID0+IHtcbiAgICAgICAgICAgIHJlcy5uZXh0KHIpO1xuICAgICAgICAgICAgdGhpcy5jYWNoZVMuc2V0SXRlbShxdWVyeSwgcik7XG4gICAgICAgICAgICByZXMuY29tcGxldGUoKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgcmVzLmVycm9yKGUpO1xuICAgICAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIGdldFJlcXVlc3RQYXJzZShwYXJhbWV0ZXJzPzogT2JqZWN0KSB7XG4gICAgcmV0dXJuICFwYXJhbWV0ZXJzXG4gICAgICA/ICcnXG4gICAgICA6ICc/JyArXG4gICAgICAgICAgT2JqZWN0LmtleXMocGFyYW1ldGVycylcbiAgICAgICAgICAgIC5maWx0ZXIoKGtleSkgPT4gcGFyYW1ldGVyc1trZXldPy50b1N0cmluZygpPy50cmltKCkgIT0gbnVsbClcbiAgICAgICAgICAgIC5tYXAoKGtleSkgPT4gYCR7a2V5fT0ke3BhcmFtZXRlcnNba2V5XT8udG9TdHJpbmcoKT8udHJpbSgpfWApXG4gICAgICAgICAgICAuam9pbignJicpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBQVVRcbiAgcHV0PFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk/LCBleHRyYXM/OiBJRXh0cmFzKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgdGhpcy5sb2dSb3V0ZXMoJ3B1dCcsIHJvdXRlLCBib2R5KTtcbiAgICBsZXQgcXVlcnkgPSB0aGlzLmJhc2VVUkwgKyByb3V0ZSArICcnLFxuICAgICAgbmJvZHkgPSBib2R5O1xuICAgIGlmIChleHRyYXM/LnJlcXVlc3RUeXBlID09ICdxdWVyeVBhcmFtcycpIHtcbiAgICAgIHF1ZXJ5ICs9IHRoaXMuZ2V0UmVxdWVzdFBhcnNlKGJvZHkpO1xuICAgICAgbmJvZHkgPSBudWxsO1xuICAgIH1cbiAgICBsZXQgaGVhZGVycyA9IGV4dHJhcz8udXNlRW5kb3JzZW1lbnRcbiAgICAgID8gbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycykuc2V0KCd1c2VFbmRvcnNlbWVudCcsICd0cnVlJylcbiAgICAgIDogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnB1dChxdWVyeSwgbmJvZHksIHtcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgIC4uLmV4dHJhcz8ub3B0aW9ucyxcbiAgICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMobmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyksIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgICB9KVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZVJlcXVlc3RFcnJvcikpIGFzIE9ic2VydmFibGU8YW55PjtcbiAgfVxuICBwdXRGaWxlPFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk6IEZvcm1EYXRhLCBleHRyYXM/OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucHV0KGVuY29kZVVSSSh0aGlzLmJhc2VVUkwgKyByb3V0ZSksIGJvZHksIHtcbiAgICAgICAgLy8gcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgIC4uLmV4dHJhcz8ub3B0aW9ucyxcbiAgICAgICAgLy8gaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMoXG4gICAgICAgIC8vICAgbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgLy8gICAgIGVuY3R5cGU6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcbiAgICAgICAgLy8gICB9KSxcbiAgICAgICAgLy8gICBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnNcbiAgICAgICAgLy8gKSxcbiAgICAgIH0pXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlUmVxdWVzdEVycm9yKSkgYXMgT2JzZXJ2YWJsZTxUPjtcbiAgfVxuICBwdXRGaWxlV2l0aEVuZG9yc2VtZW50PFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk6IEZvcm1EYXRhKSB7XG4gICAgcmV0dXJuIHRoaXMucHV0PFQ+KHJvdXRlLCBib2R5LCB7XG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgndXNlRW5kb3JzZW1lbnQnLCAndHJ1ZScpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gREVMRVRFXG4gIGRlbGV0ZSA9IDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBleHRyYXM/OiBJRXh0cmFzKSA9PiB7XG4gICAgdGhpcy5sb2dSb3V0ZXMoJ2RlbGV0ZScsIHJvdXRlKTtcblxuICAgIGxldCBoZWFkZXJzID0gZXh0cmFzPy51c2VFbmRvcnNlbWVudFxuICAgICAgPyBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKS5zZXQoJ3VzZUVuZG9yc2VtZW50JywgJ3RydWUnKVxuICAgICAgOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZGVsZXRlPFQ+KHRoaXMuYmFzZVVSTCArIHJvdXRlLCB7XG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgICAuLi5leHRyYXM/Lm9wdGlvbnMsXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLCBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnMpLFxuICAgICAgfSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVSZXF1ZXN0RXJyb3IpKSBhcyBPYnNlcnZhYmxlPGFueT47XG4gIH07XG4gIGRlbGV0ZVdpdGhCb2R5ID0gPFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk/OiBhbnksIGV4dHJhcz86IElFeHRyYXMpID0+IHtcbiAgICB0aGlzLmxvZ1JvdXRlcygnZGVsZXRlJywgcm91dGUpO1xuICAgIGNvbnN0IHJlcSA9IG5ldyBIdHRwUmVxdWVzdCgnREVMRVRFJywgdGhpcy5iYXNlVVJMICsgcm91dGUsIGJvZHksIHtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMobmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyksIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5yZXF1ZXN0PFQ+KHJlcSkucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlUmVxdWVzdEVycm9yKSkgYXMgT2JzZXJ2YWJsZTxhbnk+O1xuICB9O1xuICBkZWxldGVUZXh0ID0gKHJvdXRlOiBzdHJpbmcsIGV4dHJhcz86IElFeHRyYXMpID0+XG4gICAgdGhpcy5kZWxldGU8c3RyaW5nPihyb3V0ZSwge1xuICAgICAgb3B0aW9uczoge1xuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKSwgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIC8vI2VuZHJlZ2lvblxuXG4gIHNvcnRDb2RlcyA9IDxUIGV4dGVuZHMgeyBjb2RlOiBzdHJpbmcgfT4oZGF0YTogVFtdKSA9PiB7XG4gICAgcmV0dXJuIGRhdGE/LnNvcnQyKCdjb2RlJywgdHJ1ZSk/LnNvcnQyKCdjb2RlJykgYXMgYW55IGFzIFRbXTtcbiAgfTtcbn1cblxuaW50ZXJmYWNlIElFeHRyYXMge1xuICAvKipcbiAgICogU3BlY2lmeSB3aGV0aGVyIHRvIHVzZSB0aGUgZW5kb3JzZW1lbnQgaGVhZGVyXG4gICAqL1xuICB1c2VFbmRvcnNlbWVudD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBSZXBvcnQgcHJvZ3Jlc3Mgb2YgdGhlIHJlcXVlc3RcbiAgICovXG4gIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIHJlcXVlc3Qgb3B0aW9ucy4gVGhlIGFkZGVkIG9wdGlvbnMgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgZGVmYXVsdCBvcHRpb25zXG4gICAqL1xuICBvcHRpb25zPzoge1xuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycztcbiAgICBbeDogc3RyaW5nXTogYW55O1xuICB9O1xuICAvKipcbiAgICogU3BlY2lmeSB0aGUgcmVxdWVzdCB0eXBlLiBJZiB0aGUgcmVxdWVzdCB0eXBlIGlzIHF1ZXJ5UGFyYW1zLCB0aGUgYm9keSB3aWxsIGJlIHNlbnQgYXMgcXVlcnkgcGFyYW1ldGVyc1xuICAgKi9cbiAgcmVxdWVzdFR5cGU/OiAncXVlcnlQYXJhbXMnO1xufVxuIl19
@@ -6,7 +6,7 @@ export class CacheService {
6
6
  constructor() {
7
7
  this._cache = {};
8
8
  this.uS = inject(UtilityService);
9
- this.has = (key) => !!this._cache[key];
9
+ this.has = (key) => this._cache[key] != null;
10
10
  this.getItem = (key) => this._cache[key];
11
11
  }
12
12
  get cache() {
@@ -39,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
39
39
  providedIn: 'root',
40
40
  }]
41
41
  }], ctorParameters: () => [] });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TZXJ2aWNlcy9jYWNoZS9jYWNoZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUtwRCxNQUFNLE9BQU8sWUFBWTtJQUl2QjtRQUhRLFdBQU0sR0FBeUIsRUFBRSxDQUFDO1FBQzFCLE9BQUUsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFRNUMsUUFBRyxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUxQyxZQUFPLEdBQUcsQ0FBSSxHQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFNLENBQUM7SUFSckMsQ0FBQztJQUVoQixJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQU1ELE9BQU8sQ0FBSSxHQUFXLEVBQUUsSUFBTztRQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN4QixzQkFBc0I7SUFDeEIsQ0FBQztJQUVELFNBQVMsQ0FBSSxHQUFXLEVBQUUsUUFBeUM7UUFDakUsT0FBTyxJQUFJLFVBQVUsQ0FBSSxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzdCLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtvQkFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7O2dCQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBOUJVLFlBQVk7a0hBQVosWUFBWSxjQUZYLE1BQU07OzJGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uL3V0aWxpdHkuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDYWNoZVNlcnZpY2Uge1xuICBwcml2YXRlIF9jYWNoZTogeyBbeDogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgcHVibGljIHJlYWRvbmx5IHVTID0gaW5qZWN0KFV0aWxpdHlTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgZ2V0IGNhY2hlKCkge1xuICAgIHJldHVybiB0aGlzLl9jYWNoZTtcbiAgfVxuXG4gIGhhcyA9IChrZXk6IHN0cmluZykgPT4gISF0aGlzLl9jYWNoZVtrZXldO1xuXG4gIGdldEl0ZW0gPSA8VD4oa2V5OiBzdHJpbmcpID0+IHRoaXMuX2NhY2hlW2tleV0gYXMgVDtcblxuICBzZXRJdGVtPFQ+KGtleTogc3RyaW5nLCBkYXRhOiBUKSB7XG4gICAgdGhpcy5fY2FjaGVba2V5XSA9IGRhdGE7XG4gICAgLy8gcmV0dXJuIHRoaXMuX2NhY2hlO1xuICB9XG5cbiAgZ2V0QW5kU2V0PFQ+KGtleTogc3RyaW5nLCBuZXdWYWx1ZT86IFQgfCBQcm9taXNlPFQ+IHwgT2JzZXJ2YWJsZTxUPikge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUPigobmV4dCkgPT4ge1xuICAgICAgbmV4dC5uZXh0KHRoaXMuZ2V0SXRlbShrZXkpKTtcbiAgICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgICB0aGlzLnVTLnByb21pc2lmeVZhbChuZXdWYWx1ZSkudGhlbihhc3luYyAocmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRJdGVtKGtleSwgcmVzKTtcbiAgICAgICAgICBuZXh0Lm5leHQocmVzKTtcbiAgICAgICAgICBuZXh0LmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIG5leHQuY29tcGxldGUoKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TZXJ2aWNlcy9jYWNoZS9jYWNoZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUtwRCxNQUFNLE9BQU8sWUFBWTtJQUl2QjtRQUhRLFdBQU0sR0FBeUIsRUFBRSxDQUFDO1FBQzFCLE9BQUUsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFRNUMsUUFBRyxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUVoRCxZQUFPLEdBQUcsQ0FBSSxHQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFNLENBQUM7SUFSckMsQ0FBQztJQUVoQixJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQU1ELE9BQU8sQ0FBSSxHQUFXLEVBQUUsSUFBTztRQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN4QixzQkFBc0I7SUFDeEIsQ0FBQztJQUVELFNBQVMsQ0FBSSxHQUFXLEVBQUUsUUFBeUM7UUFDakUsT0FBTyxJQUFJLFVBQVUsQ0FBSSxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzdCLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtvQkFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7O2dCQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBOUJVLFlBQVk7a0hBQVosWUFBWSxjQUZYLE1BQU07OzJGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uL3V0aWxpdHkuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDYWNoZVNlcnZpY2Uge1xuICBwcml2YXRlIF9jYWNoZTogeyBbeDogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgcHVibGljIHJlYWRvbmx5IHVTID0gaW5qZWN0KFV0aWxpdHlTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgZ2V0IGNhY2hlKCkge1xuICAgIHJldHVybiB0aGlzLl9jYWNoZTtcbiAgfVxuXG4gIGhhcyA9IChrZXk6IHN0cmluZykgPT4gdGhpcy5fY2FjaGVba2V5XSAhPSBudWxsO1xuXG4gIGdldEl0ZW0gPSA8VD4oa2V5OiBzdHJpbmcpID0+IHRoaXMuX2NhY2hlW2tleV0gYXMgVDtcblxuICBzZXRJdGVtPFQ+KGtleTogc3RyaW5nLCBkYXRhOiBUKSB7XG4gICAgdGhpcy5fY2FjaGVba2V5XSA9IGRhdGE7XG4gICAgLy8gcmV0dXJuIHRoaXMuX2NhY2hlO1xuICB9XG5cbiAgZ2V0QW5kU2V0PFQ+KGtleTogc3RyaW5nLCBuZXdWYWx1ZT86IFQgfCBQcm9taXNlPFQ+IHwgT2JzZXJ2YWJsZTxUPikge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUPigobmV4dCkgPT4ge1xuICAgICAgbmV4dC5uZXh0KHRoaXMuZ2V0SXRlbShrZXkpKTtcbiAgICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgICB0aGlzLnVTLnByb21pc2lmeVZhbChuZXdWYWx1ZSkudGhlbihhc3luYyAocmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRJdGVtKGtleSwgcmVzKTtcbiAgICAgICAgICBuZXh0Lm5leHQocmVzKTtcbiAgICAgICAgICBuZXh0LmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIG5leHQuY29tcGxldGUoKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -58,4 +58,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
58
58
  providedIn: 'root',
59
59
  }]
60
60
  }], ctorParameters: () => [] });
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtY2FjaGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TZXJ2aWNlcy9jYWNoZS9sb2NhbC1jYWNoZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBZ0IsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8saUJBQWtCLFNBQVEsWUFBWTtJQU9qRDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBUE8sYUFBUSxHQUFHLFVBQVUsQ0FBQztRQUN0Qix3QkFBbUIsR0FBRyxxQkFBcUIsQ0FBQztRQUM1QyxpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixvQkFBZSxHQUFHLFFBQVEsQ0FBQztRQUM1QixPQUFFLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFJN0MsSUFBSSxDQUFDO1lBQ0gsTUFBTSxXQUFXLEdBQVcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDdEUsSUFBSSxDQUFDLFdBQVc7Z0JBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2lCQUNwRSxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQzlFLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQztvQkFDSCxLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO3dCQUNwQixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQzs0QkFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0JBQzVCLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO2dCQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7b0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdkIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQztJQUNELFdBQVc7UUFDVCwrREFBK0Q7UUFDL0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUNRLE9BQU8sQ0FBSSxHQUFXLEVBQUUsSUFBTztRQUN0QyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVRLFNBQVMsQ0FBSSxHQUFXLEVBQUUsT0FBd0M7UUFDekUsWUFBWTtRQUNaLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBSSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDOzhHQTVDVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzsyRkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVUU1N0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IENhY2hlU2VydmljZSB9IGZyb20gJy4vY2FjaGUuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBMb2NhbENhY2hlU2VydmljZSBleHRlbmRzIENhY2hlU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2FjaGVLZXkgPSAnY2FjaGVLZXknO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlQ3JlYXRlZERhdGVLZXkgPSAnY2FjaGVDcmVhdGVkRGF0ZUtleSc7XG4gIHByaXZhdGUgcmVhZG9ubHkgdmFsaWRpdHlEYXlzID0gNztcbiAgcHJpdmF0ZSByZWFkb25seSBvbmVEYXlUaW1lc3RhbXAgPSA4NjQwMDAwMDtcbiAgcHVibGljIHJlYWRvbmx5IHNTID0gaW5qZWN0KEVUU1N0b3JhZ2VTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjcmVhdGVkRGF0ZTogbnVtYmVyID0gdGhpcy5zUy5nZXRJdGVtKHRoaXMuY2FjaGVDcmVhdGVkRGF0ZUtleSk7XG4gICAgICBpZiAoIWNyZWF0ZWREYXRlKSB0aGlzLnNTLnNhdmVJdGVtKHRoaXMuY2FjaGVDcmVhdGVkRGF0ZUtleSwgRGF0ZS5ub3coKSk7XG4gICAgICBlbHNlIGlmIChjcmVhdGVkRGF0ZSArIHRoaXMudmFsaWRpdHlEYXlzICogdGhpcy5vbmVEYXlUaW1lc3RhbXAgPD0gRGF0ZS5ub3coKSkge1xuICAgICAgICB0aGlzLnNTLnNhdmVJdGVtKHRoaXMuY2FjaGVDcmVhdGVkRGF0ZUtleSwgRGF0ZS5ub3coKSk7XG4gICAgICAgIHRoaXMuc1MucmVtb3ZlSXRlbSh0aGlzLmNhY2hlS2V5KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc1MuZ2V0SXRlbUEodGhpcy5jYWNoZUtleSkudGhlbigocikgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHIpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwociwga2V5KSkge1xuICAgICAgICAgICAgICB0aGlzLnNldEl0ZW0oa2V5LCByW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgIHRoaXMuc1MucmVtb3ZlSXRlbSh0aGlzLmNhY2hlS2V5KTtcbiAgICB9XG4gIH1cbiAgc2F2ZVRvTG9jYWwoKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ3NhdmluZyB0byBjYWNoZScsIEpTT04uc3RyaW5naWZ5KHN1cGVyLmNhY2hlKSk7XG4gICAgdGhpcy5zUy5zYXZlSXRlbUEodGhpcy5jYWNoZUtleSwgc3VwZXIuY2FjaGUpO1xuICB9XG4gIG92ZXJyaWRlIHNldEl0ZW08VD4oa2V5OiBzdHJpbmcsIGRhdGE6IFQpIHtcbiAgICBzdXBlci5zZXRJdGVtKGtleSwgZGF0YSk7XG4gICAgdGhpcy5zYXZlVG9Mb2NhbCgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0QW5kU2V0PFQ+KGtleTogc3RyaW5nLCBhZGRGdW5jPzogVCB8IFByb21pc2U8VD4gfCBPYnNlcnZhYmxlPFQ+KSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgcmV0dXJuIHN1cGVyLmdldEFuZFNldDxUPihrZXksIGFkZEZ1bmMpLnBpcGUodGFwKChyKSA9PiB0aGlzLnNhdmVUb0xvY2FsKCkpKTtcbiAgfVxufVxuIl19
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtY2FjaGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TZXJ2aWNlcy9jYWNoZS9sb2NhbC1jYWNoZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBSy9DLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxZQUFZO0lBT2pEO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFQTyxhQUFRLEdBQUcsVUFBVSxDQUFDO1FBQ3RCLHdCQUFtQixHQUFHLHFCQUFxQixDQUFDO1FBQzVDLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLG9CQUFlLEdBQUcsUUFBUSxDQUFDO1FBQzVCLE9BQUUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUk3QyxJQUFJLENBQUM7WUFDSCxNQUFNLFdBQVcsR0FBVyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUN0RSxJQUFJLENBQUMsV0FBVztnQkFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7aUJBQ3BFLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDOUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RCxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUNELElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDekMsSUFBSSxDQUFDO29CQUNILEtBQUssTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQ3BCLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDNUIsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7Z0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztvQkFDZixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN2QixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBQ0QsV0FBVztRQUNULCtEQUErRDtRQUMvRCxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ1EsT0FBTyxDQUFJLEdBQVcsRUFBRSxJQUFPO1FBQ3RDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRVEsU0FBUyxDQUFJLEdBQVcsRUFBRSxPQUF3QztRQUN6RSxZQUFZO1FBQ1osT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFJLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7OEdBNUNVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07OzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVUU1N0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IENhY2hlU2VydmljZSB9IGZyb20gJy4vY2FjaGUuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBMb2NhbENhY2hlU2VydmljZSBleHRlbmRzIENhY2hlU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2FjaGVLZXkgPSAnY2FjaGVLZXknO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlQ3JlYXRlZERhdGVLZXkgPSAnY2FjaGVDcmVhdGVkRGF0ZUtleSc7XG4gIHByaXZhdGUgcmVhZG9ubHkgdmFsaWRpdHlEYXlzID0gNztcbiAgcHJpdmF0ZSByZWFkb25seSBvbmVEYXlUaW1lc3RhbXAgPSA4NjQwMDAwMDtcbiAgcHVibGljIHJlYWRvbmx5IHNTID0gaW5qZWN0KEVUU1N0b3JhZ2VTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjcmVhdGVkRGF0ZTogbnVtYmVyID0gdGhpcy5zUy5nZXRJdGVtKHRoaXMuY2FjaGVDcmVhdGVkRGF0ZUtleSk7XG4gICAgICBpZiAoIWNyZWF0ZWREYXRlKSB0aGlzLnNTLnNhdmVJdGVtKHRoaXMuY2FjaGVDcmVhdGVkRGF0ZUtleSwgRGF0ZS5ub3coKSk7XG4gICAgICBlbHNlIGlmIChjcmVhdGVkRGF0ZSArIHRoaXMudmFsaWRpdHlEYXlzICogdGhpcy5vbmVEYXlUaW1lc3RhbXAgPD0gRGF0ZS5ub3coKSkge1xuICAgICAgICB0aGlzLnNTLnNhdmVJdGVtKHRoaXMuY2FjaGVDcmVhdGVkRGF0ZUtleSwgRGF0ZS5ub3coKSk7XG4gICAgICAgIHRoaXMuc1MucmVtb3ZlSXRlbSh0aGlzLmNhY2hlS2V5KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc1MuZ2V0SXRlbUEodGhpcy5jYWNoZUtleSkudGhlbigocikgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHIpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwociwga2V5KSkge1xuICAgICAgICAgICAgICB0aGlzLnNldEl0ZW0oa2V5LCByW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgIHRoaXMuc1MucmVtb3ZlSXRlbSh0aGlzLmNhY2hlS2V5KTtcbiAgICB9XG4gIH1cbiAgc2F2ZVRvTG9jYWwoKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ3NhdmluZyB0byBjYWNoZScsIEpTT04uc3RyaW5naWZ5KHN1cGVyLmNhY2hlKSk7XG4gICAgdGhpcy5zUy5zYXZlSXRlbUEodGhpcy5jYWNoZUtleSwgc3VwZXIuY2FjaGUpO1xuICB9XG4gIG92ZXJyaWRlIHNldEl0ZW08VD4oa2V5OiBzdHJpbmcsIGRhdGE6IFQpIHtcbiAgICBzdXBlci5zZXRJdGVtKGtleSwgZGF0YSk7XG4gICAgdGhpcy5zYXZlVG9Mb2NhbCgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0QW5kU2V0PFQ+KGtleTogc3RyaW5nLCBhZGRGdW5jPzogVCB8IFByb21pc2U8VD4gfCBPYnNlcnZhYmxlPFQ+KSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgcmV0dXJuIHN1cGVyLmdldEFuZFNldDxUPihrZXksIGFkZEZ1bmMpLnBpcGUodGFwKChyKSA9PiB0aGlzLnNhdmVUb0xvY2FsKCkpKTtcbiAgfVxufVxuIl19
@@ -20,6 +20,8 @@ export class ToggleInputFormComponent {
20
20
  this.uS = inject(UtilityService);
21
21
  this.addToFormFunc = input();
22
22
  this.defaultToggleAll = input();
23
+ this.hideSearchMenu = input();
24
+ this.hideGridMenu = input();
23
25
  this.deleteFromFormFunc = input();
24
26
  this.gridNo = model(6);
25
27
  this.labelField = input();
@@ -137,7 +139,7 @@ export class ToggleInputFormComponent {
137
139
  this.selectedMap.set({});
138
140
  }
139
141
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: ToggleInputFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
140
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: ToggleInputFormComponent, isStandalone: true, selector: "toggle-input-form", inputs: { addToFormFunc: { classPropertyName: "addToFormFunc", publicName: "addToFormFunc", isSignal: true, isRequired: false, transformFunction: null }, defaultToggleAll: { classPropertyName: "defaultToggleAll", publicName: "defaultToggleAll", isSignal: true, isRequired: false, transformFunction: null }, deleteFromFormFunc: { classPropertyName: "deleteFromFormFunc", publicName: "deleteFromFormFunc", isSignal: true, isRequired: false, transformFunction: null }, gridNo: { classPropertyName: "gridNo", publicName: "gridNo", isSignal: true, isRequired: false, transformFunction: null }, labelField: { classPropertyName: "labelField", publicName: "labelField", isSignal: true, isRequired: false, transformFunction: null }, labelSeparator: { classPropertyName: "labelSeparator", publicName: "labelSeparator", isSignal: true, isRequired: false, transformFunction: null }, searchQuery: { classPropertyName: "searchQuery", publicName: "searchQuery", isSignal: true, isRequired: false, transformFunction: null }, showToggleAll: { classPropertyName: "showToggleAll", publicName: "showToggleAll", isSignal: true, isRequired: false, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: true, transformFunction: null }, checkedChecker: { classPropertyName: "checkedChecker", publicName: "checkedChecker", isSignal: true, isRequired: true, transformFunction: null }, _list: { classPropertyName: "_list", publicName: "list", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { gridNo: "gridNoChange", searchQuery: "searchQueryChange", selected: "selected" }, ngImport: i0, template: "<div class=\"pb-3\">\n <div class=\"row align-items-center justify-content-between g-3\">\n <div class=\"col-lg-auto\">\n <mat-slide-toggle (change)=\"toggleAll($event)\" [checked]=\"defaultToggleAll()\">\n {{ 'Toggle All' | appTranslate | async }}\n </mat-slide-toggle>\n </div>\n <div class=\"col-lg d-flex justify-content-end\">\n <div class=\"row align-items-center g-3\">\n <div class=\"col-auto\">\n <app-btn\n iconBtn\n [showHelpIcon]=\"false\"\n help=\"{{ searchBox.hidden ? 'Open search' : 'Close search' }}\"\n [icon]=\"searchBox.hidden ? 'search' : 'close'\"\n (mclick)=\"searchBox.hidden = !searchBox.hidden\" />\n </div>\n <div class=\"col-auto\" [hidden]=\"true\" #searchBox>\n <app-input-td-rf\n type=\"text\"\n [noFormat]=\"true\"\n [showLabel]=\"false\"\n placeholder=\"Type to search\"\n [(model)]=\"searchQuery\" />\n </div>\n <div class=\"col-auto\">\n <app-btn\n customIcon=\"fa fa-list\"\n [showHelpIcon]=\"false\"\n help=\"Grid Style\"\n [matMenuTriggerFor]=\"gridMenu\" />\n <mat-menu #gridMenu=\"matMenu\" class=\"\">\n @for (item of columnLengths(); track item.value) {\n <button\n mat-menu-item\n (click)=\"gridNo.set(item.value)\"\n [ngClass]=\"{ 'text-primary': item.value == _currentGrid() }\">\n {{ item.label | appTranslate | async }}\n </button>\n }\n </mat-menu>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div\n class=\"row row-cols-md-{{ mdGrid() }} row-cols-lg-{{ lgGrid() }} row-cols-xxl-{{\n xxlGrid()\n }} g-3\">\n @for (item of list() | filterArrayByString: searchQuery() : ['label']; track item.value) {\n <div class=\"\">\n <div class=\"border rounded-10 p-10\">\n <div class=\"row align-items-center\">\n <div\n class=\"col text-ellipsis\"\n [matTooltip]=\"ele.innerText\"\n [matTooltipDisabled]=\"ele.scrollWidth <= ele.offsetWidth\"\n #ele>\n {{ item.label }}\n </div>\n <div class=\"col-auto\">\n <mat-slide-toggle\n [checked]=\"item.checked\"\n (change)=\"toggleItem($event, item)\" />\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i2.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "translatorOptions", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "pipe", type: FilterArrayByStringPipe, name: "filterArrayByString" }, { kind: "component", type: InputTD_RFComponent, selector: "app-input-td-rf", inputs: ["validators", "asyncValidators", "model"], outputs: ["modelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
142
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: ToggleInputFormComponent, isStandalone: true, selector: "toggle-input-form", inputs: { addToFormFunc: { classPropertyName: "addToFormFunc", publicName: "addToFormFunc", isSignal: true, isRequired: false, transformFunction: null }, defaultToggleAll: { classPropertyName: "defaultToggleAll", publicName: "defaultToggleAll", isSignal: true, isRequired: false, transformFunction: null }, hideSearchMenu: { classPropertyName: "hideSearchMenu", publicName: "hideSearchMenu", isSignal: true, isRequired: false, transformFunction: null }, hideGridMenu: { classPropertyName: "hideGridMenu", publicName: "hideGridMenu", isSignal: true, isRequired: false, transformFunction: null }, deleteFromFormFunc: { classPropertyName: "deleteFromFormFunc", publicName: "deleteFromFormFunc", isSignal: true, isRequired: false, transformFunction: null }, gridNo: { classPropertyName: "gridNo", publicName: "gridNo", isSignal: true, isRequired: false, transformFunction: null }, labelField: { classPropertyName: "labelField", publicName: "labelField", isSignal: true, isRequired: false, transformFunction: null }, labelSeparator: { classPropertyName: "labelSeparator", publicName: "labelSeparator", isSignal: true, isRequired: false, transformFunction: null }, searchQuery: { classPropertyName: "searchQuery", publicName: "searchQuery", isSignal: true, isRequired: false, transformFunction: null }, showToggleAll: { classPropertyName: "showToggleAll", publicName: "showToggleAll", isSignal: true, isRequired: false, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: true, transformFunction: null }, checkedChecker: { classPropertyName: "checkedChecker", publicName: "checkedChecker", isSignal: true, isRequired: true, transformFunction: null }, _list: { classPropertyName: "_list", publicName: "list", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { gridNo: "gridNoChange", searchQuery: "searchQueryChange", selected: "selected" }, ngImport: i0, template: "<div class=\"pb-3\">\n <div class=\"row align-items-center justify-content-between g-3\">\n <div class=\"col-lg-auto\">\n <mat-slide-toggle (change)=\"toggleAll($event)\" [checked]=\"defaultToggleAll()\">\n {{ 'Toggle All' | appTranslate | async }}\n </mat-slide-toggle>\n </div>\n <div class=\"col-lg d-flex justify-content-end\">\n <div class=\"row align-items-center g-3\" [hidden]=\"hideSearchMenu() && hideGridMenu()\">\n @if (!hideSearchMenu()) {\n <div class=\"col-auto d-flex align-items-center\">\n <app-btn\n iconBtn\n [showHelpIcon]=\"false\"\n help=\"{{ searchBox.hidden ? 'Open search' : 'Close search' }}\"\n [icon]=\"searchBox.hidden ? 'search' : 'close'\"\n (mclick)=\"searchBox.hidden = !searchBox.hidden\" />\n <div class=\"ms-1\" [hidden]=\"true\" #searchBox>\n <app-input-td-rf\n type=\"text\"\n [noFormat]=\"true\"\n [showLabel]=\"false\"\n placeholder=\"Type to search\"\n [(model)]=\"searchQuery\" />\n </div>\n </div>\n }\n @if (!hideGridMenu()) {\n <div class=\"col-auto\">\n <app-btn\n customIcon=\"fa fa-list\"\n [showHelpIcon]=\"false\"\n help=\"Grid Style\"\n [matMenuTriggerFor]=\"gridMenu\" />\n <mat-menu #gridMenu=\"matMenu\" class=\"\">\n @for (item of columnLengths(); track item.value) {\n <button\n mat-menu-item\n (click)=\"gridNo.set(item.value)\"\n [ngClass]=\"{ 'text-primary': item.value == _currentGrid() }\">\n {{ item.label | appTranslate | async }}\n </button>\n }\n </mat-menu>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n<div\n class=\"row row-cols-md-{{ mdGrid() }} row-cols-lg-{{ lgGrid() }} row-cols-xxl-{{\n xxlGrid()\n }} g-3\">\n @for (item of list() | filterArrayByString: searchQuery() : ['label']; track item.value) {\n <div class=\"\">\n <div class=\"border rounded-10 p-10\">\n <div class=\"row align-items-center\">\n <div\n class=\"col text-ellipsis\"\n [matTooltip]=\"ele.innerText\"\n [matTooltipDisabled]=\"ele.scrollWidth <= ele.offsetWidth\"\n #ele>\n {{ item.label }}\n </div>\n <div class=\"col-auto\">\n <mat-slide-toggle [checked]=\"item.checked\" (change)=\"toggleItem($event, item)\" />\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i2.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "translatorOptions", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "pipe", type: FilterArrayByStringPipe, name: "filterArrayByString" }, { kind: "component", type: InputTD_RFComponent, selector: "app-input-td-rf", inputs: ["validators", "asyncValidators", "model"], outputs: ["modelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
141
143
  }
142
144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: ToggleInputFormComponent, decorators: [{
143
145
  type: Component,
@@ -151,6 +153,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
151
153
  MatTooltipModule,
152
154
  MatMenuModule,
153
155
  SDKTranslatePipe,
154
- ], template: "<div class=\"pb-3\">\n <div class=\"row align-items-center justify-content-between g-3\">\n <div class=\"col-lg-auto\">\n <mat-slide-toggle (change)=\"toggleAll($event)\" [checked]=\"defaultToggleAll()\">\n {{ 'Toggle All' | appTranslate | async }}\n </mat-slide-toggle>\n </div>\n <div class=\"col-lg d-flex justify-content-end\">\n <div class=\"row align-items-center g-3\">\n <div class=\"col-auto\">\n <app-btn\n iconBtn\n [showHelpIcon]=\"false\"\n help=\"{{ searchBox.hidden ? 'Open search' : 'Close search' }}\"\n [icon]=\"searchBox.hidden ? 'search' : 'close'\"\n (mclick)=\"searchBox.hidden = !searchBox.hidden\" />\n </div>\n <div class=\"col-auto\" [hidden]=\"true\" #searchBox>\n <app-input-td-rf\n type=\"text\"\n [noFormat]=\"true\"\n [showLabel]=\"false\"\n placeholder=\"Type to search\"\n [(model)]=\"searchQuery\" />\n </div>\n <div class=\"col-auto\">\n <app-btn\n customIcon=\"fa fa-list\"\n [showHelpIcon]=\"false\"\n help=\"Grid Style\"\n [matMenuTriggerFor]=\"gridMenu\" />\n <mat-menu #gridMenu=\"matMenu\" class=\"\">\n @for (item of columnLengths(); track item.value) {\n <button\n mat-menu-item\n (click)=\"gridNo.set(item.value)\"\n [ngClass]=\"{ 'text-primary': item.value == _currentGrid() }\">\n {{ item.label | appTranslate | async }}\n </button>\n }\n </mat-menu>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div\n class=\"row row-cols-md-{{ mdGrid() }} row-cols-lg-{{ lgGrid() }} row-cols-xxl-{{\n xxlGrid()\n }} g-3\">\n @for (item of list() | filterArrayByString: searchQuery() : ['label']; track item.value) {\n <div class=\"\">\n <div class=\"border rounded-10 p-10\">\n <div class=\"row align-items-center\">\n <div\n class=\"col text-ellipsis\"\n [matTooltip]=\"ele.innerText\"\n [matTooltipDisabled]=\"ele.scrollWidth <= ele.offsetWidth\"\n #ele>\n {{ item.label }}\n </div>\n <div class=\"col-auto\">\n <mat-slide-toggle\n [checked]=\"item.checked\"\n (change)=\"toggleItem($event, item)\" />\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [":host{display:block}\n"] }]
156
+ ], template: "<div class=\"pb-3\">\n <div class=\"row align-items-center justify-content-between g-3\">\n <div class=\"col-lg-auto\">\n <mat-slide-toggle (change)=\"toggleAll($event)\" [checked]=\"defaultToggleAll()\">\n {{ 'Toggle All' | appTranslate | async }}\n </mat-slide-toggle>\n </div>\n <div class=\"col-lg d-flex justify-content-end\">\n <div class=\"row align-items-center g-3\" [hidden]=\"hideSearchMenu() && hideGridMenu()\">\n @if (!hideSearchMenu()) {\n <div class=\"col-auto d-flex align-items-center\">\n <app-btn\n iconBtn\n [showHelpIcon]=\"false\"\n help=\"{{ searchBox.hidden ? 'Open search' : 'Close search' }}\"\n [icon]=\"searchBox.hidden ? 'search' : 'close'\"\n (mclick)=\"searchBox.hidden = !searchBox.hidden\" />\n <div class=\"ms-1\" [hidden]=\"true\" #searchBox>\n <app-input-td-rf\n type=\"text\"\n [noFormat]=\"true\"\n [showLabel]=\"false\"\n placeholder=\"Type to search\"\n [(model)]=\"searchQuery\" />\n </div>\n </div>\n }\n @if (!hideGridMenu()) {\n <div class=\"col-auto\">\n <app-btn\n customIcon=\"fa fa-list\"\n [showHelpIcon]=\"false\"\n help=\"Grid Style\"\n [matMenuTriggerFor]=\"gridMenu\" />\n <mat-menu #gridMenu=\"matMenu\" class=\"\">\n @for (item of columnLengths(); track item.value) {\n <button\n mat-menu-item\n (click)=\"gridNo.set(item.value)\"\n [ngClass]=\"{ 'text-primary': item.value == _currentGrid() }\">\n {{ item.label | appTranslate | async }}\n </button>\n }\n </mat-menu>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n<div\n class=\"row row-cols-md-{{ mdGrid() }} row-cols-lg-{{ lgGrid() }} row-cols-xxl-{{\n xxlGrid()\n }} g-3\">\n @for (item of list() | filterArrayByString: searchQuery() : ['label']; track item.value) {\n <div class=\"\">\n <div class=\"border rounded-10 p-10\">\n <div class=\"row align-items-center\">\n <div\n class=\"col text-ellipsis\"\n [matTooltip]=\"ele.innerText\"\n [matTooltipDisabled]=\"ele.scrollWidth <= ele.offsetWidth\"\n #ele>\n {{ item.label }}\n </div>\n <div class=\"col-auto\">\n <mat-slide-toggle [checked]=\"item.checked\" (change)=\"toggleItem($event, item)\" />\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [":host{display:block}\n"] }]
155
157
  }] });
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWlucHV0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL3RvZ2dsZS1pbnB1dC1mb3JtL3RvZ2dsZS1pbnB1dC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90b2dnbGUtaW5wdXQtZm9ybS90b2dnbGUtaW5wdXQtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFBRSxRQUFRLEVBQ25CLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLHVCQUF1QixFQUN4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0s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QUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsQ0FBQzs4R0F0SlUsd0JBQXdCO2tHQUF4Qix3QkFBd0IsMnJEQzFDckMsOCtFQXVFQSwrRUR4Q0ksWUFBWSxpTEFDWixvQkFBb0IsbVdBQ3BCLFlBQVksbWhCQUNaLHVCQUF1Qiw0REFDdkIsbUJBQW1CLHlJQUNuQixXQUFXLDhCQUNYLGdCQUFnQiw0VEFDaEIsYUFBYSx5dkJBQ2IsZ0JBQWdCOzsyRkFHUCx3QkFBd0I7a0JBbEJwQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLG1CQUdDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1AsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLFlBQVk7d0JBQ1osdUJBQXVCO3dCQUN2QixtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LCBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuaW1wb3J0IHsgQnRuQ29tcG9uZW50IH0gZnJvbSAnLi4vYnRuL2J0bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRURF9SRkNvbXBvbmVudCB9IGZyb20gJy4uL2lucHV0L2lucHV0LXRkLXJmLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNES1RyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy90cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBGaWx0ZXJBcnJheUJ5U3RyaW5nUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3V0aWxpdHkucGlwZSc7XG5pbXBvcnQgeyBJVG9nZ2xlT3B0aW9uIH0gZnJvbSAnLi90b2dnbGUtaW5wdXQtZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBFVkZ1bmN0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2NvbmZpZ3MvYmFzZS1mdW5jdGlvbnMnO1xuaW1wb3J0IHsgS2V5T2ZUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2luZGV4Lm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9nZ2xlLWlucHV0LWZvcm0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZVVybDogJy4vdG9nZ2xlLWlucHV0LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vdG9nZ2xlLWlucHV0LWZvcm0uY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBCdG5Db21wb25lbnQsXG4gICAgRmlsdGVyQXJyYXlCeVN0cmluZ1BpcGUsXG4gICAgSW5wdXRURF9SRkNvbXBvbmVudCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgU0RLVHJhbnNsYXRlUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVG9nZ2xlSW5wdXRGb3JtQ29tcG9uZW50PFRPcHRpb24+IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHVTID0gaW5qZWN0KFV0aWxpdHlTZXJ2aWNlKTtcblxuICByZWFkb25seSBhZGRUb0Zvcm1GdW5jID0gaW5wdXQ8KGRhdGE/OiBUT3B0aW9uKSA9PiBhbnk+KCk7XG4gIHJlYWRvbmx5IGRlZmF1bHRUb2dnbGVBbGwgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBkZWxldGVGcm9tRm9ybUZ1bmMgPSBpbnB1dDwoZGF0YT86IFRPcHRpb24pID0+IGFueT4oKTtcbiAgcmVhZG9ubHkgZ3JpZE5vID0gbW9kZWw8R3JpZFNpemU+KDYpO1xuICByZWFkb25seSBsYWJlbEZpZWxkID0gaW5wdXQ8a2V5b2YgVE9wdGlvbiB8IChrZXlvZiBUT3B0aW9uKVtdPigpO1xuICByZWFkb25seSBsYWJlbFNlcGFyYXRvciA9IGlucHV0PHN0cmluZz4oJyAtICcpO1xuICByZWFkb25seSBzZWFyY2hRdWVyeSA9IG1vZGVsPHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgc2hvd1RvZ2dsZUFsbCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSB2YWx1ZUZpZWxkID0gaW5wdXQucmVxdWlyZWQ8S2V5T2ZUeXBlPFRPcHRpb24sIHN0cmluZyB8IG51bWJlcj4+KCk7XG4gIC8qKlxuICAgKiBJZiB5b3UgcGFzcyBhIGZpZWxkIG5hbWU6IENoZWNrcyBpZiB2YWx1ZSBleGlzdHMgaW4gdGhlIHNwZWNpZmllZCBmaWVsZC4gSWYgaXQgaXMgYSBib29sZWFuIGZpZWxkLCBpdCBjaGVja3MgaWYgaXQgaXMgdHJ1ZS5cbiAgICpcbiAgICogSWYgeW91IHBhc3MgYSBwcmVkaWNhdGUgZnVuY3Rpb246IENoZWNrcyBlYWNoIG9iamVjdCB1c2luZyB0aGUgcHJlZGljYXRlIGZ1bmN0aW9uIHRvIGV2YWx1YXRlIGl0IGlzIGNoZWNrZWQgb3Igbm90LlxuICAgKiAqL1xuICByZWFkb25seSBjaGVja2VkQ2hlY2tlciA9IGlucHV0LnJlcXVpcmVkPGtleW9mIFRPcHRpb24gfCAoKG9wdGlvbjogVE9wdGlvbikgPT4gYm9vbGVhbik+KCk7XG4gIHJlYWRvbmx5IF9saXN0ID0gaW5wdXQucmVxdWlyZWQ8VE9wdGlvbltdPih7IGFsaWFzOiAnbGlzdCcgfSk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWQgPSBvdXRwdXQ8VE9wdGlvbltdPigpO1xuXG4gIC8vIHByb3RlY3RlZCByZWFkb25seSBsaXN0ID0gc2lnbmFsPElUb2dnbGVPcHRpb248VE9wdGlvbj5bXT4oW10pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hlY2tlZEZpZWxkID0gY29tcHV0ZWQ8a2V5b2YgVE9wdGlvbj4oKCkgPT4ge1xuICAgIGNvbnN0IF9jaGVja2VkUHJlZGljYXRlID0gdGhpcy5jaGVja2VkQ2hlY2tlcigpO1xuICAgIHJldHVybiB0eXBlb2YgX2NoZWNrZWRQcmVkaWNhdGUgPT0gJ2Z1bmN0aW9uJyA/IG51bGwgOiBfY2hlY2tlZFByZWRpY2F0ZTtcbiAgfSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjaGVja2VkUHJlZGljYXRlID0gY29tcHV0ZWQ8KG9wdGlvbjogVE9wdGlvbikgPT4gYm9vbGVhbj4oKCkgPT4ge1xuICAgIGNvbnN0IF9jaGVja2VkUHJlZGljYXRlID0gdGhpcy5jaGVja2VkQ2hlY2tlcigpO1xuICAgIHJldHVybiB0eXBlb2YgX2NoZWNrZWRQcmVkaWNhdGUgPT0gJ2Z1bmN0aW9uJyA/IF9jaGVja2VkUHJlZGljYXRlIDogbnVsbDtcbiAgfSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpbml0aWFsTGlzdCA9IGNvbXB1dGVkPElUb2dnbGVPcHRpb248VE9wdGlvbj5bXT4oKCkgPT4ge1xuICAgIGNvbnN0IGxpc3QgPSB0aGlzLl9saXN0KCkgfHwgW10sXG4gICAgICB2YWx1ZUZpZWxkID0gdGhpcy52YWx1ZUZpZWxkKCksXG4gICAgICBsYWJlbEZpZWxkID0gdGhpcy5sYWJlbEZpZWxkKCksXG4gICAgICBsYWJlbFNlcGFyYXRvciA9IHRoaXMubGFiZWxTZXBhcmF0b3IoKSxcbiAgICAgIGNoZWNrZWRGaWVsZCA9IHRoaXMuY2hlY2tlZEZpZWxkKCksXG4gICAgICBjaGVja2VkUHJlZGljYXRlID0gdGhpcy5jaGVja2VkUHJlZGljYXRlKCksXG4gICAgICBsYWJlbEZpZWxkcyA9IGxhYmVsRmllbGQgPyAoQXJyYXkuaXNBcnJheShsYWJlbEZpZWxkKSA/IGxhYmVsRmllbGQgOiBbbGFiZWxGaWVsZF0pIDogbnVsbDtcblxuICAgIHJldHVybiBsaXN0Lm1hcCgob3B0aW9uKSA9PiAoe1xuICAgICAgdmFsdWU6IG9wdGlvblt2YWx1ZUZpZWxkXSxcbiAgICAgIGxhYmVsOiBFVkZ1bmN0aW9ucy5zdHJDb25jYXRlbmF0b3IyKFxuICAgICAgICBsYWJlbEZpZWxkcy5tYXAoKGxhYmVsRmllbGQpID0+IG9wdGlvbj8uW2xhYmVsRmllbGRdIGFzIHN0cmluZyksXG4gICAgICAgIGxhYmVsU2VwYXJhdG9yLFxuICAgICAgKSxcbiAgICAgIG9yaWdpbmFsUm93OiBvcHRpb24sXG4gICAgICBpbml0aWFsbHlDaGVja2VkOiBjaGVja2VkRmllbGQgPyAhIW9wdGlvbltjaGVja2VkRmllbGRdIDogY2hlY2tlZFByZWRpY2F0ZT8uKG9wdGlvbiksXG4gICAgfSkpO1xuICB9KTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlbGVjdGVkTWFwID0gc2lnbmFsPHsgW3ZhbHVlOiBzdHJpbmddOiBib29sZWFuIH0+KHt9KTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxpc3QgPSBjb21wdXRlZDxJVG9nZ2xlT3B0aW9uPFRPcHRpb24+W10+KCgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsTGlzdCA9IHRoaXMuaW5pdGlhbExpc3QoKSB8fCBbXSxcbiAgICAgIHNlbGVjdGVkTWFwID0gdGhpcy5zZWxlY3RlZE1hcCgpIHx8IHt9O1xuXG4gICAgcmV0dXJuIGluaXRpYWxMaXN0Lm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vcHRpb24sXG4gICAgICAgIGNoZWNrZWQ6XG4gICAgICAgICAgc2VsZWN0ZWRNYXBbb3B0aW9uLnZhbHVlXSAhPSBudWxsID8gc2VsZWN0ZWRNYXBbb3B0aW9uLnZhbHVlXSA6IG9wdGlvbi5pbml0aWFsbHlDaGVja2VkLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGhhc0hhbmRsZWREZWZhdWx0VG9nZ2xlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2N1cnJlbnRHcmlkID0gc2lnbmFsPG51bWJlcj4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgY3VycmVudEdyaWQgPSBjb21wdXRlZDxudW1iZXI+KCgpID0+IHRoaXMuX2N1cnJlbnRHcmlkKCkpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgeHhsR3JpZCA9IGNvbXB1dGVkPG51bWJlcj4oKCkgPT4gdGhpcy5ncmlkTm8oKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBsZ0dyaWQgPSBjb21wdXRlZDxudW1iZXI+KCgpID0+IHtcbiAgICBjb25zdCBudW0gPSB0aGlzLmdyaWRObygpO1xuICAgIHJldHVybiBudW0gPiAzID8gbnVtIC0gMSA6IG51bTtcbiAgfSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBtZEdyaWQgPSBjb21wdXRlZDxudW1iZXI+KCgpID0+IHtcbiAgICBjb25zdCBudW0gPSB0aGlzLmdyaWRObygpLFxuICAgICAgbGdHcmlkID0gdGhpcy5sZ0dyaWQoKTtcbiAgICByZXR1cm4gbnVtID4gMyA/IE1hdGguZmxvb3IobGdHcmlkIC8gMikgOiBudW07XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBkZWZhdWx0VG9nZ2xlQWxsRWZmZWN0ID0gZWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLmxpc3QoKSxcbiAgICAgICAgZGVmYXVsdFRvZ2dsZUFsbCA9IHRoaXMuZGVmYXVsdFRvZ2dsZUFsbCgpLFxuICAgICAgICBoYXNIYW5kbGVkRGVmYXVsdFRvZ2dsZSA9IHRoaXMuaGFzSGFuZGxlZERlZmF1bHRUb2dnbGUoKTtcblxuICAgICAgaWYgKCFoYXNIYW5kbGVkRGVmYXVsdFRvZ2dsZSAmJiBkZWZhdWx0VG9nZ2xlQWxsICYmICFsaXN0LnNvbWUoKHgpID0+IHguY2hlY2tlZCkpIHtcbiAgICAgICAgdGhpcy5oYXNIYW5kbGVkRGVmYXVsdFRvZ2dsZS5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMudG9nZ2xlQWxsKHsgY2hlY2tlZDogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29sdW1uTGVuZ3RocyA9IGNvbXB1dGVkPHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IEdyaWRTaXplIH1bXT4oKCkgPT4gW1xuICAgIHsgbGFiZWw6IGBMaXN0YCwgdmFsdWU6IDEgfSxcbiAgICB7IGxhYmVsOiBgRHVhbGAsIHZhbHVlOiAyIH0sXG4gICAgeyBsYWJlbDogYFRyaXBsZWAsIHZhbHVlOiAzIH0sXG4gICAgeyBsYWJlbDogYE1lZGl1bWAsIHZhbHVlOiA0IH0sXG4gICAgeyBsYWJlbDogYE1heGltdW1gLCB2YWx1ZTogNiB9LFxuICBdKTtcblxuICBwcm90ZWN0ZWQgdG9nZ2xlSXRlbShlOiB7IGNoZWNrZWQ6IGJvb2xlYW4gfSwgaXRlbTogSVRvZ2dsZU9wdGlvbjxUT3B0aW9uPiwgZW1pdCA9IHRydWUpIHtcbiAgICBpZiAoZS5jaGVja2VkKSB0aGlzLmNoZWNrSXRlbShpdGVtLCBlbWl0KTtcbiAgICBlbHNlIHRoaXMudW5jaGVja0l0ZW0oaXRlbSwgZW1pdCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hlY2tJdGVtKGl0ZW06IElUb2dnbGVPcHRpb248VE9wdGlvbj4sIGVtaXQgPSB0cnVlKSB7XG4gICAgdGhpcy5zZWxlY3RlZE1hcC51cGRhdGUoKG1hcHApID0+ICh7IC4uLm1hcHAsIFtpdGVtLnZhbHVlXTogdHJ1ZSB9KSk7XG4gICAgaWYgKCFlbWl0KSByZXR1cm47XG4gICAgdGhpcy5hZGRUb0Zvcm1GdW5jKCk/LihpdGVtLm9yaWdpbmFsUm93KTtcbiAgICB0aGlzLmVtaXRTZWxlY3RlZCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVuY2hlY2tJdGVtKGl0ZW06IElUb2dnbGVPcHRpb248VE9wdGlvbj4sIGVtaXQgPSB0cnVlKSB7XG4gICAgdGhpcy5zZWxlY3RlZE1hcC51cGRhdGUoKG1hcHApID0+ICh7IC4uLm1hcHAsIFtpdGVtLnZhbHVlXTogZmFsc2UgfSkpO1xuICAgIGlmICghZW1pdCkgcmV0dXJuO1xuICAgIHRoaXMuZGVsZXRlRnJvbUZvcm1GdW5jKCk/LihpdGVtLm9yaWdpbmFsUm93KTtcbiAgICB0aGlzLmVtaXRTZWxlY3RlZCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZUFsbChlOiB7IGNoZWNrZWQ6IGJvb2xlYW4gfSkge1xuICAgIGNvbnN0IGluaXRpYWxMaXN0ID0gdGhpcy5pbml0aWFsTGlzdCgpO1xuICAgIGlmIChlLmNoZWNrZWQpXG4gICAgICBpbml0aWFsTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tJdGVtKGl0ZW0sIGZhbHNlKTtcbiAgICAgICAgdGhpcy5hZGRUb0Zvcm1GdW5jKCk/LihpdGVtLm9yaWdpbmFsUm93KTtcbiAgICAgIH0pO1xuICAgIGVsc2VcbiAgICAgIGluaXRpYWxMaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgdGhpcy51bmNoZWNrSXRlbShpdGVtLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuZGVsZXRlRnJvbUZvcm1GdW5jKCk/LihpdGVtLm9yaWdpbmFsUm93KTtcbiAgICAgIH0pO1xuICAgIHRoaXMuZW1pdFNlbGVjdGVkKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW1pdFNlbGVjdGVkKCkge1xuICAgIHRoaXMuc2VsZWN0ZWQuZW1pdChcbiAgICAgIHRoaXMubGlzdCgpXG4gICAgICAgIC5maWx0ZXIoKHgpID0+IHguY2hlY2tlZClcbiAgICAgICAgLm1hcCgoeCkgPT4geC5vcmlnaW5hbFJvdyksXG4gICAgKTtcbiAgfVxuXG4gIGdldFN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLmxpc3QoKTtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMuaGFzSGFuZGxlZERlZmF1bHRUb2dnbGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnNlbGVjdGVkTWFwLnNldCh7fSk7XG4gIH1cbn1cbnR5cGUgR3JpZFNpemUgPSA2IHwgNCB8IDMgfCAyIHwgMTtcbiIsIjxkaXYgY2xhc3M9XCJwYi0zXCI+XG4gIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGctM1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctYXV0b1wiPlxuICAgICAgPG1hdC1zbGlkZS10b2dnbGUgKGNoYW5nZSk9XCJ0b2dnbGVBbGwoJGV2ZW50KVwiIFtjaGVja2VkXT1cImRlZmF1bHRUb2dnbGVBbGwoKVwiPlxuICAgICAgICB7eyAnVG9nZ2xlIEFsbCcgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbGcgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIGctM1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgaWNvbkJ0blxuICAgICAgICAgICAgW3Nob3dIZWxwSWNvbl09XCJmYWxzZVwiXG4gICAgICAgICAgICBoZWxwPVwie3sgc2VhcmNoQm94LmhpZGRlbiA/ICdPcGVuIHNlYXJjaCcgOiAnQ2xvc2Ugc2VhcmNoJyB9fVwiXG4gICAgICAgICAgICBbaWNvbl09XCJzZWFyY2hCb3guaGlkZGVuID8gJ3NlYXJjaCcgOiAnY2xvc2UnXCJcbiAgICAgICAgICAgIChtY2xpY2spPVwic2VhcmNoQm94LmhpZGRlbiA9ICFzZWFyY2hCb3guaGlkZGVuXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiIFtoaWRkZW5dPVwidHJ1ZVwiICNzZWFyY2hCb3g+XG4gICAgICAgICAgPGFwcC1pbnB1dC10ZC1yZlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgW25vRm9ybWF0XT1cInRydWVcIlxuICAgICAgICAgICAgW3Nob3dMYWJlbF09XCJmYWxzZVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlR5cGUgdG8gc2VhcmNoXCJcbiAgICAgICAgICAgIFsobW9kZWwpXT1cInNlYXJjaFF1ZXJ5XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxuICAgICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgICBjdXN0b21JY29uPVwiZmEgZmEtbGlzdFwiXG4gICAgICAgICAgICBbc2hvd0hlbHBJY29uXT1cImZhbHNlXCJcbiAgICAgICAgICAgIGhlbHA9XCJHcmlkIFN0eWxlXCJcbiAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJncmlkTWVudVwiIC8+XG4gICAgICAgICAgPG1hdC1tZW51ICNncmlkTWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBjb2x1bW5MZW5ndGhzKCk7IHRyYWNrIGl0ZW0udmFsdWUpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ3JpZE5vLnNldChpdGVtLnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAndGV4dC1wcmltYXJ5JzogaXRlbS52YWx1ZSA9PSBfY3VycmVudEdyaWQoKSB9XCI+XG4gICAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2XG4gIGNsYXNzPVwicm93IHJvdy1jb2xzLW1kLXt7IG1kR3JpZCgpIH19IHJvdy1jb2xzLWxnLXt7IGxnR3JpZCgpIH19IHJvdy1jb2xzLXh4bC17e1xuICAgIHh4bEdyaWQoKVxuICB9fSBnLTNcIj5cbiAgQGZvciAoaXRlbSBvZiBsaXN0KCkgfCBmaWx0ZXJBcnJheUJ5U3RyaW5nOiBzZWFyY2hRdWVyeSgpIDogWydsYWJlbCddOyB0cmFjayBpdGVtLnZhbHVlKSB7XG4gICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkLTEwIHAtMTBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNvbCB0ZXh0LWVsbGlwc2lzXCJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImVsZS5pbm5lclRleHRcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09XCJlbGUuc2Nyb2xsV2lkdGggPD0gZWxlLm9mZnNldFdpZHRoXCJcbiAgICAgICAgICAgICNlbGU+XG4gICAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XG4gICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZVxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpdGVtLmNoZWNrZWRcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUl0ZW0oJGV2ZW50LCBpdGVtKVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWlucHV0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL3RvZ2dsZS1pbnB1dC1mb3JtL3RvZ2dsZS1pbnB1dC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90b2dnbGUtaW5wdXQtZm9ybS90b2dnbGUtaW5wdXQtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFBRSxRQUFRLEVBQ25CLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLHVCQUF1QixFQUN4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0s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dUJBQXVCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLENBQUM7OEdBeEpVLHdCQUF3QjtrR0FBeEIsd0JBQXdCLDI5REMxQ3JDLGtzRkF5RUEsK0VEMUNJLFlBQVksaUxBQ1osb0JBQW9CLG1XQUNwQixZQUFZLG1oQkFDWix1QkFBdUIsNERBQ3ZCLG1CQUFtQix5SUFDbkIsV0FBVyw4QkFDWCxnQkFBZ0IsNFRBQ2hCLGFBQWEseXZCQUNiLGdCQUFnQjs7MkZBR1Asd0JBQXdCO2tCQWxCcEMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQixZQUFZO3dCQUNaLHVCQUF1Qjt3QkFDdkIsbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixnQkFBZ0I7cUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCwgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbW9kZWwsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7IEJ0bkNvbXBvbmVudCB9IGZyb20gJy4uL2J0bi9idG4uY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0VERfUkZDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC9pbnB1dC10ZC1yZi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTREtUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgRmlsdGVyQXJyYXlCeVN0cmluZ1BpcGUgfSBmcm9tICcuLi8uLi9waXBlcy91dGlsaXR5LnBpcGUnO1xuaW1wb3J0IHsgSVRvZ2dsZU9wdGlvbiB9IGZyb20gJy4vdG9nZ2xlLWlucHV0LWZvcm0ubW9kZWwnO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRVZGdW5jdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9jb25maWdzL2Jhc2UtZnVuY3Rpb25zJztcbmltcG9ydCB7IEtleU9mVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9pbmRleC5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvZ2dsZS1pbnB1dC1mb3JtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RvZ2dsZS1pbnB1dC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3RvZ2dsZS1pbnB1dC1mb3JtLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXG4gICAgQnRuQ29tcG9uZW50LFxuICAgIEZpbHRlckFycmF5QnlTdHJpbmdQaXBlLFxuICAgIElucHV0VERfUkZDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNYXRNZW51TW9kdWxlLFxuICAgIFNES1RyYW5zbGF0ZVBpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFRvZ2dsZUlucHV0Rm9ybUNvbXBvbmVudDxUT3B0aW9uPiB7XG4gIHByb3RlY3RlZCByZWFkb25seSB1UyA9IGluamVjdChVdGlsaXR5U2VydmljZSk7XG5cbiAgcmVhZG9ubHkgYWRkVG9Gb3JtRnVuYyA9IGlucHV0PChkYXRhPzogVE9wdGlvbikgPT4gYW55PigpO1xuICByZWFkb25seSBkZWZhdWx0VG9nZ2xlQWxsID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgaGlkZVNlYXJjaE1lbnUgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBoaWRlR3JpZE1lbnUgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBkZWxldGVGcm9tRm9ybUZ1bmMgPSBpbnB1dDwoZGF0YT86IFRPcHRpb24pID0+IGFueT4oKTtcbiAgcmVhZG9ubHkgZ3JpZE5vID0gbW9kZWw8R3JpZFNpemU+KDYpO1xuICByZWFkb25seSBsYWJlbEZpZWxkID0gaW5wdXQ8a2V5b2YgVE9wdGlvbiB8IChrZXlvZiBUT3B0aW9uKVtdPigpO1xuICByZWFkb25seSBsYWJlbFNlcGFyYXRvciA9IGlucHV0PHN0cmluZz4oJyAtICcpO1xuICByZWFkb25seSBzZWFyY2hRdWVyeSA9IG1vZGVsPHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgc2hvd1RvZ2dsZUFsbCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSB2YWx1ZUZpZWxkID0gaW5wdXQucmVxdWlyZWQ8S2V5T2ZUeXBlPFRPcHRpb24sIHN0cmluZyB8IG51bWJlcj4+KCk7XG4gIC8qKlxuICAgKiBJZiB5b3UgcGFzcyBhIGZpZWxkIG5hbWU6IENoZWNrcyBpZiB2YWx1ZSBleGlzdHMgaW4gdGhlIHNwZWNpZmllZCBmaWVsZC4gSWYgaXQgaXMgYSBib29sZWFuIGZpZWxkLCBpdCBjaGVja3MgaWYgaXQgaXMgdHJ1ZS5cbiAgICpcbiAgICogSWYgeW91IHBhc3MgYSBwcmVkaWNhdGUgZnVuY3Rpb246IENoZWNrcyBlYWNoIG9iamVjdCB1c2luZyB0aGUgcHJlZGljYXRlIGZ1bmN0aW9uIHRvIGV2YWx1YXRlIGl0IGlzIGNoZWNrZWQgb3Igbm90LlxuICAgKiAqL1xuICByZWFkb25seSBjaGVja2VkQ2hlY2tlciA9IGlucHV0LnJlcXVpcmVkPGtleW9mIFRPcHRpb24gfCAoKG9wdGlvbjogVE9wdGlvbikgPT4gYm9vbGVhbik+KCk7XG4gIHJlYWRvbmx5IF9saXN0ID0gaW5wdXQucmVxdWlyZWQ8VE9wdGlvbltdPih7IGFsaWFzOiAnbGlzdCcgfSk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWQgPSBvdXRwdXQ8VE9wdGlvbltdPigpO1xuXG4gIC8vIHByb3RlY3RlZCByZWFkb25seSBsaXN0ID0gc2lnbmFsPElUb2dnbGVPcHRpb248VE9wdGlvbj5bXT4oW10pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hlY2tlZEZpZWxkID0gY29tcHV0ZWQ8a2V5b2YgVE9wdGlvbj4oKCkgPT4ge1xuICAgIGNvbnN0IF9jaGVja2VkUHJlZGljYXRlID0gdGhpcy5jaGVja2VkQ2hlY2tlcigpO1xuICAgIHJldHVybiB0eXBlb2YgX2NoZWNrZWRQcmVkaWNhdGUgPT0gJ2Z1bmN0aW9uJyA/IG51bGwgOiBfY2hlY2tlZFByZWRpY2F0ZTtcbiAgfSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjaGVja2VkUHJlZGljYXRlID0gY29tcHV0ZWQ8KG9wdGlvbjogVE9wdGlvbikgPT4gYm9vbGVhbj4oKCkgPT4ge1xuICAgIGNvbnN0IF9jaGVja2VkUHJlZGljYXRlID0gdGhpcy5jaGVja2VkQ2hlY2tlcigpO1xuICAgIHJldHVybiB0eXBlb2YgX2NoZWNrZWRQcmVkaWNhdGUgPT0gJ2Z1bmN0aW9uJyA/IF9jaGVja2VkUHJlZGljYXRlIDogbnVsbDtcbiAgfSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpbml0aWFsTGlzdCA9IGNvbXB1dGVkPElUb2dnbGVPcHRpb248VE9wdGlvbj5bXT4oKCkgPT4ge1xuICAgIGNvbnN0IGxpc3QgPSB0aGlzLl9saXN0KCkgfHwgW10sXG4gICAgICB2YWx1ZUZpZWxkID0gdGhpcy52YWx1ZUZpZWxkKCksXG4gICAgICBsYWJlbEZpZWxkID0gdGhpcy5sYWJlbEZpZWxkKCksXG4gICAgICBsYWJlbFNlcGFyYXRvciA9IHRoaXMubGFiZWxTZXBhcmF0b3IoKSxcbiAgICAgIGNoZWNrZWRGaWVsZCA9IHRoaXMuY2hlY2tlZEZpZWxkKCksXG4gICAgICBjaGVja2VkUHJlZGljYXRlID0gdGhpcy5jaGVja2VkUHJlZGljYXRlKCksXG4gICAgICBsYWJlbEZpZWxkcyA9IGxhYmVsRmllbGQgPyAoQXJyYXkuaXNBcnJheShsYWJlbEZpZWxkKSA/IGxhYmVsRmllbGQgOiBbbGFiZWxGaWVsZF0pIDogbnVsbDtcblxuICAgIHJldHVybiBsaXN0Lm1hcCgob3B0aW9uKSA9PiAoe1xuICAgICAgdmFsdWU6IG9wdGlvblt2YWx1ZUZpZWxkXSxcbiAgICAgIGxhYmVsOiBFVkZ1bmN0aW9ucy5zdHJDb25jYXRlbmF0b3IyKFxuICAgICAgICBsYWJlbEZpZWxkcy5tYXAoKGxhYmVsRmllbGQpID0+IG9wdGlvbj8uW2xhYmVsRmllbGRdIGFzIHN0cmluZyksXG4gICAgICAgIGxhYmVsU2VwYXJhdG9yLFxuICAgICAgKSxcbiAgICAgIG9yaWdpbmFsUm93OiBvcHRpb24sXG4gICAgICBpbml0aWFsbHlDaGVja2VkOiBjaGVja2VkRmllbGQgPyAhIW9wdGlvbltjaGVja2VkRmllbGRdIDogY2hlY2tlZFByZWRpY2F0ZT8uKG9wdGlvbiksXG4gICAgfSkpO1xuICB9KTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlbGVjdGVkTWFwID0gc2lnbmFsPHsgW3ZhbHVlOiBzdHJpbmddOiBib29sZWFuIH0+KHt9KTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxpc3QgPSBjb21wdXRlZDxJVG9nZ2xlT3B0aW9uPFRPcHRpb24+W10+KCgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsTGlzdCA9IHRoaXMuaW5pdGlhbExpc3QoKSB8fCBbXSxcbiAgICAgIHNlbGVjdGVkTWFwID0gdGhpcy5zZWxlY3RlZE1hcCgpIHx8IHt9O1xuXG4gICAgcmV0dXJuIGluaXRpYWxMaXN0Lm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vcHRpb24sXG4gICAgICAgIGNoZWNrZWQ6XG4gICAgICAgICAgc2VsZWN0ZWRNYXBbb3B0aW9uLnZhbHVlXSAhPSBudWxsID8gc2VsZWN0ZWRNYXBbb3B0aW9uLnZhbHVlXSA6IG9wdGlvbi5pbml0aWFsbHlDaGVja2VkLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGhhc0hhbmRsZWREZWZhdWx0VG9nZ2xlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2N1cnJlbnRHcmlkID0gc2lnbmFsPG51bWJlcj4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgY3VycmVudEdyaWQgPSBjb21wdXRlZDxudW1iZXI+KCgpID0+IHRoaXMuX2N1cnJlbnRHcmlkKCkpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgeHhsR3JpZCA9IGNvbXB1dGVkPG51bWJlcj4oKCkgPT4gdGhpcy5ncmlkTm8oKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBsZ0dyaWQgPSBjb21wdXRlZDxudW1iZXI+KCgpID0+IHtcbiAgICBjb25zdCBudW0gPSB0aGlzLmdyaWRObygpO1xuICAgIHJldHVybiBudW0gPiAzID8gbnVtIC0gMSA6IG51bTtcbiAgfSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBtZEdyaWQgPSBjb21wdXRlZDxudW1iZXI+KCgpID0+IHtcbiAgICBjb25zdCBudW0gPSB0aGlzLmdyaWRObygpLFxuICAgICAgbGdHcmlkID0gdGhpcy5sZ0dyaWQoKTtcbiAgICByZXR1cm4gbnVtID4gMyA/IE1hdGguZmxvb3IobGdHcmlkIC8gMikgOiBudW07XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBkZWZhdWx0VG9nZ2xlQWxsRWZmZWN0ID0gZWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLmxpc3QoKSxcbiAgICAgICAgZGVmYXVsdFRvZ2dsZUFsbCA9IHRoaXMuZGVmYXVsdFRvZ2dsZUFsbCgpLFxuICAgICAgICBoYXNIYW5kbGVkRGVmYXVsdFRvZ2dsZSA9IHRoaXMuaGFzSGFuZGxlZERlZmF1bHRUb2dnbGUoKTtcblxuICAgICAgaWYgKCFoYXNIYW5kbGVkRGVmYXVsdFRvZ2dsZSAmJiBkZWZhdWx0VG9nZ2xlQWxsICYmICFsaXN0LnNvbWUoKHgpID0+IHguY2hlY2tlZCkpIHtcbiAgICAgICAgdGhpcy5oYXNIYW5kbGVkRGVmYXVsdFRvZ2dsZS5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMudG9nZ2xlQWxsKHsgY2hlY2tlZDogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29sdW1uTGVuZ3RocyA9IGNvbXB1dGVkPHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IEdyaWRTaXplIH1bXT4oKCkgPT4gW1xuICAgIHsgbGFiZWw6IGBMaXN0YCwgdmFsdWU6IDEgfSxcbiAgICB7IGxhYmVsOiBgRHVhbGAsIHZhbHVlOiAyIH0sXG4gICAgeyBsYWJlbDogYFRyaXBsZWAsIHZhbHVlOiAzIH0sXG4gICAgeyBsYWJlbDogYE1lZGl1bWAsIHZhbHVlOiA0IH0sXG4gICAgeyBsYWJlbDogYE1heGltdW1gLCB2YWx1ZTogNiB9LFxuICBdKTtcblxuICBwcm90ZWN0ZWQgdG9nZ2xlSXRlbShlOiB7IGNoZWNrZWQ6IGJvb2xlYW4gfSwgaXRlbTogSVRvZ2dsZU9wdGlvbjxUT3B0aW9uPiwgZW1pdCA9IHRydWUpIHtcbiAgICBpZiAoZS5jaGVja2VkKSB0aGlzLmNoZWNrSXRlbShpdGVtLCBlbWl0KTtcbiAgICBlbHNlIHRoaXMudW5jaGVja0l0ZW0oaXRlbSwgZW1pdCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hlY2tJdGVtKGl0ZW06IElUb2dnbGVPcHRpb248VE9wdGlvbj4sIGVtaXQgPSB0cnVlKSB7XG4gICAgdGhpcy5zZWxlY3RlZE1hcC51cGRhdGUoKG1hcHApID0+ICh7IC4uLm1hcHAsIFtpdGVtLnZhbHVlXTogdHJ1ZSB9KSk7XG4gICAgaWYgKCFlbWl0KSByZXR1cm47XG4gICAgdGhpcy5hZGRUb0Zvcm1GdW5jKCk/LihpdGVtLm9yaWdpbmFsUm93KTtcbiAgICB0aGlzLmVtaXRTZWxlY3RlZCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVuY2hlY2tJdGVtKGl0ZW06IElUb2dnbGVPcHRpb248VE9wdGlvbj4sIGVtaXQgPSB0cnVlKSB7XG4gICAgdGhpcy5zZWxlY3RlZE1hcC51cGRhdGUoKG1hcHApID0+ICh7IC4uLm1hcHAsIFtpdGVtLnZhbHVlXTogZmFsc2UgfSkpO1xuICAgIGlmICghZW1pdCkgcmV0dXJuO1xuICAgIHRoaXMuZGVsZXRlRnJvbUZvcm1GdW5jKCk/LihpdGVtLm9yaWdpbmFsUm93KTtcbiAgICB0aGlzLmVtaXRTZWxlY3RlZCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZUFsbChlOiB7IGNoZWNrZWQ6IGJvb2xlYW4gfSkge1xuICAgIGNvbnN0IGluaXRpYWxMaXN0ID0gdGhpcy5pbml0aWFsTGlzdCgpO1xuICAgIGlmIChlLmNoZWNrZWQpXG4gICAgICBpbml0aWFsTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tJdGVtKGl0ZW0sIGZhbHNlKTtcbiAgICAgICAgdGhpcy5hZGRUb0Zvcm1GdW5jKCk/LihpdGVtLm9yaWdpbmFsUm93KTtcbiAgICAgIH0pO1xuICAgIGVsc2VcbiAgICAgIGluaXRpYWxMaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgdGhpcy51bmNoZWNrSXRlbShpdGVtLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuZGVsZXRlRnJvbUZvcm1GdW5jKCk/LihpdGVtLm9yaWdpbmFsUm93KTtcbiAgICAgIH0pO1xuICAgIHRoaXMuZW1pdFNlbGVjdGVkKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW1pdFNlbGVjdGVkKCkge1xuICAgIHRoaXMuc2VsZWN0ZWQuZW1pdChcbiAgICAgIHRoaXMubGlzdCgpXG4gICAgICAgIC5maWx0ZXIoKHgpID0+IHguY2hlY2tlZClcbiAgICAgICAgLm1hcCgoeCkgPT4geC5vcmlnaW5hbFJvdyksXG4gICAgKTtcbiAgfVxuXG4gIGdldFN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLmxpc3QoKTtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMuaGFzSGFuZGxlZERlZmF1bHRUb2dnbGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnNlbGVjdGVkTWFwLnNldCh7fSk7XG4gIH1cbn1cbnR5cGUgR3JpZFNpemUgPSA2IHwgNCB8IDMgfCAyIHwgMTtcbiIsIjxkaXYgY2xhc3M9XCJwYi0zXCI+XG4gIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGctM1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctYXV0b1wiPlxuICAgICAgPG1hdC1zbGlkZS10b2dnbGUgKGNoYW5nZSk9XCJ0b2dnbGVBbGwoJGV2ZW50KVwiIFtjaGVja2VkXT1cImRlZmF1bHRUb2dnbGVBbGwoKVwiPlxuICAgICAgICB7eyAnVG9nZ2xlIEFsbCcgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbGcgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIGctM1wiIFtoaWRkZW5dPVwiaGlkZVNlYXJjaE1lbnUoKSAmJiBoaWRlR3JpZE1lbnUoKVwiPlxuICAgICAgICBAaWYgKCFoaWRlU2VhcmNoTWVudSgpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgICAgIGljb25CdG5cbiAgICAgICAgICAgICAgW3Nob3dIZWxwSWNvbl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgIGhlbHA9XCJ7eyBzZWFyY2hCb3guaGlkZGVuID8gJ09wZW4gc2VhcmNoJyA6ICdDbG9zZSBzZWFyY2gnIH19XCJcbiAgICAgICAgICAgICAgW2ljb25dPVwic2VhcmNoQm94LmhpZGRlbiA/ICdzZWFyY2gnIDogJ2Nsb3NlJ1wiXG4gICAgICAgICAgICAgIChtY2xpY2spPVwic2VhcmNoQm94LmhpZGRlbiA9ICFzZWFyY2hCb3guaGlkZGVuXCIgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0xXCIgW2hpZGRlbl09XCJ0cnVlXCIgI3NlYXJjaEJveD5cbiAgICAgICAgICAgICAgPGFwcC1pbnB1dC10ZC1yZlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBbbm9Gb3JtYXRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW3Nob3dMYWJlbF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJUeXBlIHRvIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgWyhtb2RlbCldPVwic2VhcmNoUXVlcnlcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgQGlmICghaGlkZUdyaWRNZW51KCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgICAgIGN1c3RvbUljb249XCJmYSBmYS1saXN0XCJcbiAgICAgICAgICAgICAgW3Nob3dIZWxwSWNvbl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgIGhlbHA9XCJHcmlkIFN0eWxlXCJcbiAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImdyaWRNZW51XCIgLz5cbiAgICAgICAgICAgIDxtYXQtbWVudSAjZ3JpZE1lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBjb2x1bW5MZW5ndGhzKCk7IHRyYWNrIGl0ZW0udmFsdWUpIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ3JpZE5vLnNldChpdGVtLnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICd0ZXh0LXByaW1hcnknOiBpdGVtLnZhbHVlID09IF9jdXJyZW50R3JpZCgpIH1cIj5cbiAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXZcbiAgY2xhc3M9XCJyb3cgcm93LWNvbHMtbWQte3sgbWRHcmlkKCkgfX0gcm93LWNvbHMtbGcte3sgbGdHcmlkKCkgfX0gcm93LWNvbHMteHhsLXt7XG4gICAgeHhsR3JpZCgpXG4gIH19IGctM1wiPlxuICBAZm9yIChpdGVtIG9mIGxpc3QoKSB8IGZpbHRlckFycmF5QnlTdHJpbmc6IHNlYXJjaFF1ZXJ5KCkgOiBbJ2xhYmVsJ107IHRyYWNrIGl0ZW0udmFsdWUpIHtcbiAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQtMTAgcC0xMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY29sIHRleHQtZWxsaXBzaXNcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiZWxlLmlubmVyVGV4dFwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cImVsZS5zY3JvbGxXaWR0aCA8PSBlbGUub2Zmc2V0V2lkdGhcIlxuICAgICAgICAgICAgI2VsZT5cbiAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFtjaGVja2VkXT1cIml0ZW0uY2hlY2tlZFwiIChjaGFuZ2UpPVwidG9nZ2xlSXRlbSgkZXZlbnQsIGl0ZW0pXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=
@@ -2844,7 +2844,7 @@ class CacheService {
2844
2844
  constructor() {
2845
2845
  this._cache = {};
2846
2846
  this.uS = inject(UtilityService);
2847
- this.has = (key) => !!this._cache[key];
2847
+ this.has = (key) => this._cache[key] != null;
2848
2848
  this.getItem = (key) => this._cache[key];
2849
2849
  }
2850
2850
  get cache() {
@@ -3005,7 +3005,7 @@ class ApiService {
3005
3005
  .toPromise()
3006
3006
  .then((r) => {
3007
3007
  res.next(r);
3008
- this.cacheS.setItem(query, r);
3008
+ // this.cacheS.setItem(query, r);
3009
3009
  res.complete();
3010
3010
  })
3011
3011
  .catch((err) => res.error(err));
@@ -3069,6 +3069,25 @@ class ApiService {
3069
3069
  });
3070
3070
  });
3071
3071
  };
3072
+ this.getFromMemory = (route, parameters, extras) => new Observable((res) => {
3073
+ const query = route + this.getRequestParse(parameters);
3074
+ if (this.cacheS.has(query)) {
3075
+ res.next(this.cacheS.getItem(query));
3076
+ res.complete();
3077
+ }
3078
+ else {
3079
+ lastValueFrom(this.get(query, null, extras))
3080
+ .then((r) => {
3081
+ res.next(r);
3082
+ this.cacheS.setItem(query, r);
3083
+ res.complete();
3084
+ })
3085
+ .catch((e) => {
3086
+ res.error(e);
3087
+ res.complete();
3088
+ });
3089
+ }
3090
+ });
3072
3091
  //#endregion
3073
3092
  //#region DELETE
3074
3093
  this.delete = (route, extras) => {
@@ -16040,6 +16059,8 @@ class ToggleInputFormComponent {
16040
16059
  this.uS = inject(UtilityService);
16041
16060
  this.addToFormFunc = input();
16042
16061
  this.defaultToggleAll = input();
16062
+ this.hideSearchMenu = input();
16063
+ this.hideGridMenu = input();
16043
16064
  this.deleteFromFormFunc = input();
16044
16065
  this.gridNo = model(6);
16045
16066
  this.labelField = input();
@@ -16157,7 +16178,7 @@ class ToggleInputFormComponent {
16157
16178
  this.selectedMap.set({});
16158
16179
  }
16159
16180
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: ToggleInputFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16160
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: ToggleInputFormComponent, isStandalone: true, selector: "toggle-input-form", inputs: { addToFormFunc: { classPropertyName: "addToFormFunc", publicName: "addToFormFunc", isSignal: true, isRequired: false, transformFunction: null }, defaultToggleAll: { classPropertyName: "defaultToggleAll", publicName: "defaultToggleAll", isSignal: true, isRequired: false, transformFunction: null }, deleteFromFormFunc: { classPropertyName: "deleteFromFormFunc", publicName: "deleteFromFormFunc", isSignal: true, isRequired: false, transformFunction: null }, gridNo: { classPropertyName: "gridNo", publicName: "gridNo", isSignal: true, isRequired: false, transformFunction: null }, labelField: { classPropertyName: "labelField", publicName: "labelField", isSignal: true, isRequired: false, transformFunction: null }, labelSeparator: { classPropertyName: "labelSeparator", publicName: "labelSeparator", isSignal: true, isRequired: false, transformFunction: null }, searchQuery: { classPropertyName: "searchQuery", publicName: "searchQuery", isSignal: true, isRequired: false, transformFunction: null }, showToggleAll: { classPropertyName: "showToggleAll", publicName: "showToggleAll", isSignal: true, isRequired: false, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: true, transformFunction: null }, checkedChecker: { classPropertyName: "checkedChecker", publicName: "checkedChecker", isSignal: true, isRequired: true, transformFunction: null }, _list: { classPropertyName: "_list", publicName: "list", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { gridNo: "gridNoChange", searchQuery: "searchQueryChange", selected: "selected" }, ngImport: i0, template: "<div class=\"pb-3\">\n <div class=\"row align-items-center justify-content-between g-3\">\n <div class=\"col-lg-auto\">\n <mat-slide-toggle (change)=\"toggleAll($event)\" [checked]=\"defaultToggleAll()\">\n {{ 'Toggle All' | appTranslate | async }}\n </mat-slide-toggle>\n </div>\n <div class=\"col-lg d-flex justify-content-end\">\n <div class=\"row align-items-center g-3\">\n <div class=\"col-auto\">\n <app-btn\n iconBtn\n [showHelpIcon]=\"false\"\n help=\"{{ searchBox.hidden ? 'Open search' : 'Close search' }}\"\n [icon]=\"searchBox.hidden ? 'search' : 'close'\"\n (mclick)=\"searchBox.hidden = !searchBox.hidden\" />\n </div>\n <div class=\"col-auto\" [hidden]=\"true\" #searchBox>\n <app-input-td-rf\n type=\"text\"\n [noFormat]=\"true\"\n [showLabel]=\"false\"\n placeholder=\"Type to search\"\n [(model)]=\"searchQuery\" />\n </div>\n <div class=\"col-auto\">\n <app-btn\n customIcon=\"fa fa-list\"\n [showHelpIcon]=\"false\"\n help=\"Grid Style\"\n [matMenuTriggerFor]=\"gridMenu\" />\n <mat-menu #gridMenu=\"matMenu\" class=\"\">\n @for (item of columnLengths(); track item.value) {\n <button\n mat-menu-item\n (click)=\"gridNo.set(item.value)\"\n [ngClass]=\"{ 'text-primary': item.value == _currentGrid() }\">\n {{ item.label | appTranslate | async }}\n </button>\n }\n </mat-menu>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div\n class=\"row row-cols-md-{{ mdGrid() }} row-cols-lg-{{ lgGrid() }} row-cols-xxl-{{\n xxlGrid()\n }} g-3\">\n @for (item of list() | filterArrayByString: searchQuery() : ['label']; track item.value) {\n <div class=\"\">\n <div class=\"border rounded-10 p-10\">\n <div class=\"row align-items-center\">\n <div\n class=\"col text-ellipsis\"\n [matTooltip]=\"ele.innerText\"\n [matTooltipDisabled]=\"ele.scrollWidth <= ele.offsetWidth\"\n #ele>\n {{ item.label }}\n </div>\n <div class=\"col-auto\">\n <mat-slide-toggle\n [checked]=\"item.checked\"\n (change)=\"toggleItem($event, item)\" />\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i1$3.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "translatorOptions", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "pipe", type: FilterArrayByStringPipe, name: "filterArrayByString" }, { kind: "component", type: InputTD_RFComponent, selector: "app-input-td-rf", inputs: ["validators", "asyncValidators", "model"], outputs: ["modelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i11.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i3$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16181
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: ToggleInputFormComponent, isStandalone: true, selector: "toggle-input-form", inputs: { addToFormFunc: { classPropertyName: "addToFormFunc", publicName: "addToFormFunc", isSignal: true, isRequired: false, transformFunction: null }, defaultToggleAll: { classPropertyName: "defaultToggleAll", publicName: "defaultToggleAll", isSignal: true, isRequired: false, transformFunction: null }, hideSearchMenu: { classPropertyName: "hideSearchMenu", publicName: "hideSearchMenu", isSignal: true, isRequired: false, transformFunction: null }, hideGridMenu: { classPropertyName: "hideGridMenu", publicName: "hideGridMenu", isSignal: true, isRequired: false, transformFunction: null }, deleteFromFormFunc: { classPropertyName: "deleteFromFormFunc", publicName: "deleteFromFormFunc", isSignal: true, isRequired: false, transformFunction: null }, gridNo: { classPropertyName: "gridNo", publicName: "gridNo", isSignal: true, isRequired: false, transformFunction: null }, labelField: { classPropertyName: "labelField", publicName: "labelField", isSignal: true, isRequired: false, transformFunction: null }, labelSeparator: { classPropertyName: "labelSeparator", publicName: "labelSeparator", isSignal: true, isRequired: false, transformFunction: null }, searchQuery: { classPropertyName: "searchQuery", publicName: "searchQuery", isSignal: true, isRequired: false, transformFunction: null }, showToggleAll: { classPropertyName: "showToggleAll", publicName: "showToggleAll", isSignal: true, isRequired: false, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: true, transformFunction: null }, checkedChecker: { classPropertyName: "checkedChecker", publicName: "checkedChecker", isSignal: true, isRequired: true, transformFunction: null }, _list: { classPropertyName: "_list", publicName: "list", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { gridNo: "gridNoChange", searchQuery: "searchQueryChange", selected: "selected" }, ngImport: i0, template: "<div class=\"pb-3\">\n <div class=\"row align-items-center justify-content-between g-3\">\n <div class=\"col-lg-auto\">\n <mat-slide-toggle (change)=\"toggleAll($event)\" [checked]=\"defaultToggleAll()\">\n {{ 'Toggle All' | appTranslate | async }}\n </mat-slide-toggle>\n </div>\n <div class=\"col-lg d-flex justify-content-end\">\n <div class=\"row align-items-center g-3\" [hidden]=\"hideSearchMenu() && hideGridMenu()\">\n @if (!hideSearchMenu()) {\n <div class=\"col-auto d-flex align-items-center\">\n <app-btn\n iconBtn\n [showHelpIcon]=\"false\"\n help=\"{{ searchBox.hidden ? 'Open search' : 'Close search' }}\"\n [icon]=\"searchBox.hidden ? 'search' : 'close'\"\n (mclick)=\"searchBox.hidden = !searchBox.hidden\" />\n <div class=\"ms-1\" [hidden]=\"true\" #searchBox>\n <app-input-td-rf\n type=\"text\"\n [noFormat]=\"true\"\n [showLabel]=\"false\"\n placeholder=\"Type to search\"\n [(model)]=\"searchQuery\" />\n </div>\n </div>\n }\n @if (!hideGridMenu()) {\n <div class=\"col-auto\">\n <app-btn\n customIcon=\"fa fa-list\"\n [showHelpIcon]=\"false\"\n help=\"Grid Style\"\n [matMenuTriggerFor]=\"gridMenu\" />\n <mat-menu #gridMenu=\"matMenu\" class=\"\">\n @for (item of columnLengths(); track item.value) {\n <button\n mat-menu-item\n (click)=\"gridNo.set(item.value)\"\n [ngClass]=\"{ 'text-primary': item.value == _currentGrid() }\">\n {{ item.label | appTranslate | async }}\n </button>\n }\n </mat-menu>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n<div\n class=\"row row-cols-md-{{ mdGrid() }} row-cols-lg-{{ lgGrid() }} row-cols-xxl-{{\n xxlGrid()\n }} g-3\">\n @for (item of list() | filterArrayByString: searchQuery() : ['label']; track item.value) {\n <div class=\"\">\n <div class=\"border rounded-10 p-10\">\n <div class=\"row align-items-center\">\n <div\n class=\"col text-ellipsis\"\n [matTooltip]=\"ele.innerText\"\n [matTooltipDisabled]=\"ele.scrollWidth <= ele.offsetWidth\"\n #ele>\n {{ item.label }}\n </div>\n <div class=\"col-auto\">\n <mat-slide-toggle [checked]=\"item.checked\" (change)=\"toggleItem($event, item)\" />\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i1$3.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "translatorOptions", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "pipe", type: FilterArrayByStringPipe, name: "filterArrayByString" }, { kind: "component", type: InputTD_RFComponent, selector: "app-input-td-rf", inputs: ["validators", "asyncValidators", "model"], outputs: ["modelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i11.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i3$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16161
16182
  }
16162
16183
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: ToggleInputFormComponent, decorators: [{
16163
16184
  type: Component,
@@ -16171,7 +16192,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
16171
16192
  MatTooltipModule,
16172
16193
  MatMenuModule,
16173
16194
  SDKTranslatePipe,
16174
- ], template: "<div class=\"pb-3\">\n <div class=\"row align-items-center justify-content-between g-3\">\n <div class=\"col-lg-auto\">\n <mat-slide-toggle (change)=\"toggleAll($event)\" [checked]=\"defaultToggleAll()\">\n {{ 'Toggle All' | appTranslate | async }}\n </mat-slide-toggle>\n </div>\n <div class=\"col-lg d-flex justify-content-end\">\n <div class=\"row align-items-center g-3\">\n <div class=\"col-auto\">\n <app-btn\n iconBtn\n [showHelpIcon]=\"false\"\n help=\"{{ searchBox.hidden ? 'Open search' : 'Close search' }}\"\n [icon]=\"searchBox.hidden ? 'search' : 'close'\"\n (mclick)=\"searchBox.hidden = !searchBox.hidden\" />\n </div>\n <div class=\"col-auto\" [hidden]=\"true\" #searchBox>\n <app-input-td-rf\n type=\"text\"\n [noFormat]=\"true\"\n [showLabel]=\"false\"\n placeholder=\"Type to search\"\n [(model)]=\"searchQuery\" />\n </div>\n <div class=\"col-auto\">\n <app-btn\n customIcon=\"fa fa-list\"\n [showHelpIcon]=\"false\"\n help=\"Grid Style\"\n [matMenuTriggerFor]=\"gridMenu\" />\n <mat-menu #gridMenu=\"matMenu\" class=\"\">\n @for (item of columnLengths(); track item.value) {\n <button\n mat-menu-item\n (click)=\"gridNo.set(item.value)\"\n [ngClass]=\"{ 'text-primary': item.value == _currentGrid() }\">\n {{ item.label | appTranslate | async }}\n </button>\n }\n </mat-menu>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div\n class=\"row row-cols-md-{{ mdGrid() }} row-cols-lg-{{ lgGrid() }} row-cols-xxl-{{\n xxlGrid()\n }} g-3\">\n @for (item of list() | filterArrayByString: searchQuery() : ['label']; track item.value) {\n <div class=\"\">\n <div class=\"border rounded-10 p-10\">\n <div class=\"row align-items-center\">\n <div\n class=\"col text-ellipsis\"\n [matTooltip]=\"ele.innerText\"\n [matTooltipDisabled]=\"ele.scrollWidth <= ele.offsetWidth\"\n #ele>\n {{ item.label }}\n </div>\n <div class=\"col-auto\">\n <mat-slide-toggle\n [checked]=\"item.checked\"\n (change)=\"toggleItem($event, item)\" />\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [":host{display:block}\n"] }]
16195
+ ], template: "<div class=\"pb-3\">\n <div class=\"row align-items-center justify-content-between g-3\">\n <div class=\"col-lg-auto\">\n <mat-slide-toggle (change)=\"toggleAll($event)\" [checked]=\"defaultToggleAll()\">\n {{ 'Toggle All' | appTranslate | async }}\n </mat-slide-toggle>\n </div>\n <div class=\"col-lg d-flex justify-content-end\">\n <div class=\"row align-items-center g-3\" [hidden]=\"hideSearchMenu() && hideGridMenu()\">\n @if (!hideSearchMenu()) {\n <div class=\"col-auto d-flex align-items-center\">\n <app-btn\n iconBtn\n [showHelpIcon]=\"false\"\n help=\"{{ searchBox.hidden ? 'Open search' : 'Close search' }}\"\n [icon]=\"searchBox.hidden ? 'search' : 'close'\"\n (mclick)=\"searchBox.hidden = !searchBox.hidden\" />\n <div class=\"ms-1\" [hidden]=\"true\" #searchBox>\n <app-input-td-rf\n type=\"text\"\n [noFormat]=\"true\"\n [showLabel]=\"false\"\n placeholder=\"Type to search\"\n [(model)]=\"searchQuery\" />\n </div>\n </div>\n }\n @if (!hideGridMenu()) {\n <div class=\"col-auto\">\n <app-btn\n customIcon=\"fa fa-list\"\n [showHelpIcon]=\"false\"\n help=\"Grid Style\"\n [matMenuTriggerFor]=\"gridMenu\" />\n <mat-menu #gridMenu=\"matMenu\" class=\"\">\n @for (item of columnLengths(); track item.value) {\n <button\n mat-menu-item\n (click)=\"gridNo.set(item.value)\"\n [ngClass]=\"{ 'text-primary': item.value == _currentGrid() }\">\n {{ item.label | appTranslate | async }}\n </button>\n }\n </mat-menu>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n<div\n class=\"row row-cols-md-{{ mdGrid() }} row-cols-lg-{{ lgGrid() }} row-cols-xxl-{{\n xxlGrid()\n }} g-3\">\n @for (item of list() | filterArrayByString: searchQuery() : ['label']; track item.value) {\n <div class=\"\">\n <div class=\"border rounded-10 p-10\">\n <div class=\"row align-items-center\">\n <div\n class=\"col text-ellipsis\"\n [matTooltip]=\"ele.innerText\"\n [matTooltipDisabled]=\"ele.scrollWidth <= ele.offsetWidth\"\n #ele>\n {{ item.label }}\n </div>\n <div class=\"col-auto\">\n <mat-slide-toggle [checked]=\"item.checked\" (change)=\"toggleItem($event, item)\" />\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [":host{display:block}\n"] }]
16175
16196
  }] });
16176
16197
 
16177
16198
  class TranslatorCaseComponent {