angular-odata 0.100.0 → 0.100.1

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.
@@ -3,8 +3,11 @@ import { Objects, Types } from '../../utils';
3
3
  import { buildPathAndQuery, } from './builder';
4
4
  import { ODataQueryOptionHandler } from './handlers';
5
5
  export class ODataQueryOptions {
6
- constructor(options) {
7
- this.values = options || {};
6
+ constructor(values) {
7
+ this.values =
8
+ values instanceof Map
9
+ ? values
10
+ : new Map(Object.entries(values || {}));
8
11
  }
9
12
  // Params
10
13
  pathAndParams(escape = false) {
@@ -22,9 +25,9 @@ export class ODataQueryOptions {
22
25
  QueryOptionNames.expand,
23
26
  QueryOptionNames.format,
24
27
  ]
25
- .filter((key) => !Types.isEmpty(this.values[key]))
28
+ .filter((key) => !Types.isEmpty(this.values.get(key)))
26
29
  .reduce((acc, key) => {
27
- let value = this.values[key];
30
+ let value = this.values.get(key);
28
31
  if (Types.rawType(value).endsWith('Expression')) {
29
32
  value = value.render({ aliases });
30
33
  }
@@ -41,8 +44,8 @@ export class ODataQueryOptions {
41
44
  .join('&'));
42
45
  }
43
46
  toJSON() {
44
- return Object.keys(this.values).reduce((acc, key) => {
45
- let value = this.values[key];
47
+ return [...this.values.keys()].reduce((acc, key) => {
48
+ let value = this.values.get(key);
46
49
  value =
47
50
  Types.isObject(value) && 'toJSON' in value ? value.toJSON() : value;
48
51
  return Object.assign(acc, { [key]: value });
@@ -50,51 +53,54 @@ export class ODataQueryOptions {
50
53
  }
51
54
  toQueryArguments() {
52
55
  return {
53
- select: this.values[QueryOptionNames.select],
54
- expand: this.values[QueryOptionNames.expand],
55
- transform: this.values[QueryOptionNames.transform],
56
- compute: this.values[QueryOptionNames.compute],
57
- search: this.values[QueryOptionNames.search],
58
- filter: this.values[QueryOptionNames.filter],
59
- orderBy: this.values[QueryOptionNames.orderBy],
60
- top: this.values[QueryOptionNames.top],
61
- skip: this.values[QueryOptionNames.skip],
62
- skiptoken: this.values[QueryOptionNames.skiptoken],
56
+ select: this.values.get(QueryOptionNames.select),
57
+ expand: this.values.get(QueryOptionNames.expand),
58
+ transform: this.values.get(QueryOptionNames.transform),
59
+ compute: this.values.get(QueryOptionNames.compute),
60
+ search: this.values.get(QueryOptionNames.search),
61
+ filter: this.values.get(QueryOptionNames.filter),
62
+ orderBy: this.values.get(QueryOptionNames.orderBy),
63
+ top: this.values.get(QueryOptionNames.top),
64
+ skip: this.values.get(QueryOptionNames.skip),
65
+ skiptoken: this.values.get(QueryOptionNames.skiptoken),
63
66
  };
64
67
  }
65
68
  clone() {
66
- const options = Object.keys(this.values).reduce((acc, key) => Object.assign(acc, { [key]: Objects.clone(this.values[key]) }), {});
67
- return new ODataQueryOptions(options);
69
+ return new ODataQueryOptions(Objects.clone(this.values));
68
70
  }
69
71
  // Set Renderable
70
- expression(name, exp) {
72
+ expression(key, exp) {
71
73
  if (exp !== undefined)
72
- this.values[name] = exp;
73
- return this.values[name];
74
+ this.values.set(key, exp);
75
+ return this.values.get(key);
74
76
  }
75
77
  // Option Handler
76
- option(name, opts) {
78
+ option(key, opts) {
77
79
  if (opts !== undefined)
78
- this.values[name] = opts;
79
- return new ODataQueryOptionHandler(this.values, name);
80
+ this.values.set(key, opts);
81
+ return new ODataQueryOptionHandler(this.values, key);
80
82
  }
81
83
  // Query Options tools
82
- has(name) {
83
- return this.values[name] !== undefined;
84
+ has(key) {
85
+ return this.values.has(key);
84
86
  }
85
- remove(...names) {
86
- names.forEach((name) => {
87
- delete this.values[name];
87
+ remove(...keys) {
88
+ [...this.values.keys()]
89
+ .filter((k) => keys.indexOf(k) !== -1)
90
+ .forEach((key) => {
91
+ this.values.delete(key);
88
92
  });
89
93
  }
90
- keep(...names) {
91
- this.values = Object.keys(this.values)
92
- .filter((k) => names.indexOf(k) !== -1)
93
- .reduce((acc, k) => Object.assign(acc, { [k]: this.values[k] }), {});
94
+ keep(...keys) {
95
+ [...this.values.keys()]
96
+ .filter((k) => keys.indexOf(k) === -1)
97
+ .forEach((key) => {
98
+ this.values.delete(key);
99
+ });
94
100
  }
95
101
  // Clear
96
102
  clear() {
97
- this.values = {};
103
+ this.values.clear();
98
104
  }
99
105
  }
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9yZXNvdXJjZXMvcXVlcnkvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUNMLGlCQUFpQixHQU9sQixNQUFNLFdBQVcsQ0FBQztBQVNuQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFnQnJELE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsWUFBWSxPQUFpQztRQUMzQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELFNBQVM7SUFDVCxhQUFhLENBQUMsU0FBa0IsS0FBSztRQUNuQyxJQUFJLE9BQU8sR0FBc0IsRUFBRSxDQUFDO1FBQ3BDLElBQUksT0FBTyxHQUFHO1lBQ1osZ0JBQWdCLENBQUMsTUFBTTtZQUN2QixnQkFBZ0IsQ0FBQyxNQUFNO1lBQ3ZCLGdCQUFnQixDQUFDLE1BQU07WUFDdkIsZ0JBQWdCLENBQUMsT0FBTztZQUN4QixnQkFBZ0IsQ0FBQyxTQUFTO1lBQzFCLGdCQUFnQixDQUFDLE9BQU87WUFDeEIsZ0JBQWdCLENBQUMsR0FBRztZQUNwQixnQkFBZ0IsQ0FBQyxJQUFJO1lBQ3JCLGdCQUFnQixDQUFDLFNBQVM7WUFDMUIsZ0JBQWdCLENBQUMsTUFBTTtZQUN2QixnQkFBZ0IsQ0FBQyxNQUFNO1NBQ3hCO2FBQ0UsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ2pELE1B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Q3JCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLENBQUMsR0FBRyxLQUF5QjtRQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUNuQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQzFELE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsUUFBUTtJQUNSLEtBQUs7UUFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNuQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRdWVyeU9wdGlvbk5hbWVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgT2JqZWN0cywgVHlwZXMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQge1xuICBidWlsZFBhdGhBbmRRdWVyeSxcbiAgRXhwYW5kLFxuICBGaWx0ZXIsXG4gIE9yZGVyQnksXG4gIFF1ZXJ5Q3VzdG9tVHlwZSxcbiAgU2VsZWN0LFxuICBUcmFuc2Zvcm0sXG59IGZyb20gJy4vYnVpbGRlcic7XG5pbXBvcnQge1xuICBFeHByZXNzaW9uLFxuICBGaWx0ZXJFeHByZXNzaW9uLFxuICBPcmRlckJ5RXhwcmVzc2lvbixcbiAgU2VhcmNoRXhwcmVzc2lvbixcbn0gZnJvbSAnLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBFeHBhbmRFeHByZXNzaW9uIH0gZnJvbSAnLi9leHByZXNzaW9ucy9leHBhbmQnO1xuaW1wb3J0IHsgU2VsZWN0RXhwcmVzc2lvbiB9IGZyb20gJy4vZXhwcmVzc2lvbnMvc2VsZWN0JztcbmltcG9ydCB7IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyIH0gZnJvbSAnLi9oYW5kbGVycyc7XG5cbmV4cG9ydCB0eXBlIE9EYXRhUXVlcnlBcmd1bWVudHM8VD4gPSB7XG4gIFtRdWVyeU9wdGlvbk5hbWVzLnNlbGVjdF0/OiBTZWxlY3Q8VD4gfCBTZWxlY3RFeHByZXNzaW9uPFQ+O1xuICBbUXVlcnlPcHRpb25OYW1lcy5maWx0ZXJdPzogRmlsdGVyPFQ+IHwgRmlsdGVyRXhwcmVzc2lvbjxUPjtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMuc2VhcmNoXT86IHN0cmluZyB8IFNlYXJjaEV4cHJlc3Npb248VD47XG4gIFtRdWVyeU9wdGlvbk5hbWVzLmNvbXB1dGVdPzogc3RyaW5nO1xuICBbUXVlcnlPcHRpb25OYW1lcy50cmFuc2Zvcm1dPzogVHJhbnNmb3JtPFQ+O1xuICBbUXVlcnlPcHRpb25OYW1lcy5vcmRlckJ5XT86IE9yZGVyQnk8VD4gfCBPcmRlckJ5RXhwcmVzc2lvbjxUPjtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMudG9wXT86IG51bWJlcjtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMuc2tpcF0/OiBudW1iZXI7XG4gIFtRdWVyeU9wdGlvbk5hbWVzLnNraXB0b2tlbl0/OiBzdHJpbmc7XG4gIFtRdWVyeU9wdGlvbk5hbWVzLmV4cGFuZF0/OiBFeHBhbmQ8VD4gfCBFeHBhbmRFeHByZXNzaW9uPFQ+O1xuICBbUXVlcnlPcHRpb25OYW1lcy5mb3JtYXRdPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGNsYXNzIE9EYXRhUXVlcnlPcHRpb25zPFQ+IHtcbiAgdmFsdWVzOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzogeyBbbmFtZTogc3RyaW5nXTogYW55IH0pIHtcbiAgICB0aGlzLnZhbHVlcyA9IG9wdGlvbnMgfHwge307XG4gIH1cblxuICAvLyBQYXJhbXNcbiAgcGF0aEFuZFBhcmFtcyhlc2NhcGU6IGJvb2xlYW4gPSBmYWxzZSk6IFtzdHJpbmcsIHsgW25hbWU6IHN0cmluZ106IGFueSB9XSB7XG4gICAgbGV0IGFsaWFzZXM6IFF1ZXJ5Q3VzdG9tVHlwZVtdID0gW107XG4gICAgbGV0IG9wdGlvbnMgPSBbXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLnNlbGVjdCxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMuZmlsdGVyLFxuICAgICAgUXVlcnlPcHRpb25OYW1lcy5zZWFyY2gsXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLmNvbXB1dGUsXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLnRyYW5zZm9ybSxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMub3JkZXJCeSxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMudG9wLFxuICAgICAgUXVlcnlPcHRpb25OYW1lcy5za2lwLFxuICAgICAgUXVlcnlPcHRpb25OYW1lcy5za2lwdG9rZW4sXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLmV4cGFuZCxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMuZm9ybWF0LFxuICAgIF1cbiAgICAgIC5maWx0ZXIoKGtleSkgPT4gIVR5cGVzLmlzRW1wdHkodGhpcy52YWx1ZXNba2V5XSkpXG4gICAgICAucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnZhbHVlc1trZXldO1xuICAgICAgICBpZiAoVHlwZXMucmF3VHlwZSh2YWx1ZSkuZW5kc1dpdGgoJ0V4cHJlc3Npb24nKSkge1xuICAgICAgICAgIHZhbHVlID0gKHZhbHVlIGFzIEV4cHJlc3Npb248VD4pLnJlbmRlcih7IGFsaWFzZXMgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYWNjLCB7IFtrZXldOiB2YWx1ZSB9KTtcbiAgICAgIH0sIHt9KTtcblxuICAgIHJldHVybiBidWlsZFBhdGhBbmRRdWVyeTxhbnk+KHsgLi4ub3B0aW9ucywgYWxpYXNlcywgZXNjYXBlIH0pO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICBjb25zdCBbcGF0aCwgcGFyYW1zXSA9IHRoaXMucGF0aEFuZFBhcmFtcygpO1xuICAgIHJldHVybiAoXG4gICAgICBwYXRoICtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBhcmFtcylcbiAgICAgICAgLmZpbHRlcigoWywgdmFsdWVdKSA9PiAhVHlwZXMuaXNFbXB0eSh2YWx1ZSkpXG4gICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fT0ke3ZhbHVlfWApXG4gICAgICAgIC5qb2luKCcmJylcbiAgICApO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnZhbHVlcykucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgbGV0IHZhbHVlID0gdGhpcy52YWx1ZXNba2V5XTtcbiAgICAgIHZhbHVlID1cbiAgICAgICAgVHlwZXMuaXNPYmplY3QodmFsdWUpICYmICd0b0pTT04nIGluIHZhbHVlID8gdmFsdWUudG9KU09OKCkgOiB2YWx1ZTtcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGFjYywgeyBba2V5XTogdmFsdWUgfSk7XG4gICAgfSwge30pO1xuICB9XG5cbiAgdG9RdWVyeUFyZ3VtZW50cygpOiBPRGF0YVF1ZXJ5QXJndW1lbnRzPFQ+IHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VsZWN0OiB0aGlzLnZhbHVlc1tRdWVyeU9wdGlvbk5hbWVzLnNlbGVjdF0sXG4gICAgICBleHBhbmQ6IHRoaXMudmFsdWVzW1F1ZXJ5T3B0aW9uTmFtZXMuZXhwYW5kXSxcbiAgICAgIHRyYW5zZm9ybTogdGhpcy52YWx1ZXNbUXVlcnlPcHRpb25OYW1lcy50cmFuc2Zvcm1dLFxuICAgICAgY29tcHV0ZTogdGhpcy52YWx1ZXNbUXVlcnlPcHRpb25OYW1lcy5jb21wdXRlXSxcbiAgICAgIHNlYXJjaDogdGhpcy52YWx1ZXNbUXVlcnlPcHRpb25OYW1lcy5zZWFyY2hdLFxuICAgICAgZmlsdGVyOiB0aGlzLnZhbHVlc1tRdWVyeU9wdGlvbk5hbWVzLmZpbHRlcl0sXG4gICAgICBvcmRlckJ5OiB0aGlzLnZhbHVlc1tRdWVyeU9wdGlvbk5hbWVzLm9yZGVyQnldLFxuICAgICAgdG9wOiB0aGlzLnZhbHVlc1tRdWVyeU9wdGlvbk5hbWVzLnRvcF0sXG4gICAgICBza2lwOiB0aGlzLnZhbHVlc1tRdWVyeU9wdGlvbk5hbWVzLnNraXBdLFxuICAgICAgc2tpcHRva2VuOiB0aGlzLnZhbHVlc1tRdWVyeU9wdGlvbk5hbWVzLnNraXB0b2tlbl0sXG4gICAgfSBhcyBPRGF0YVF1ZXJ5QXJndW1lbnRzPFQ+O1xuICB9XG5cbiAgY2xvbmU8Tz4oKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IE9iamVjdC5rZXlzKHRoaXMudmFsdWVzKS5yZWR1Y2UoXG4gICAgICAoYWNjLCBrZXkpID0+XG4gICAgICAgIE9iamVjdC5hc3NpZ24oYWNjLCB7IFtrZXldOiBPYmplY3RzLmNsb25lKHRoaXMudmFsdWVzW2tleV0pIH0pLFxuICAgICAge31cbiAgICApO1xuICAgIHJldHVybiBuZXcgT0RhdGFRdWVyeU9wdGlvbnM8Tz4ob3B0aW9ucyk7XG4gIH1cblxuICAvLyBTZXQgUmVuZGVyYWJsZVxuICBleHByZXNzaW9uKG5hbWU6IFF1ZXJ5T3B0aW9uTmFtZXMsIGV4cD86IEV4cHJlc3Npb248VD4pIHtcbiAgICBpZiAoZXhwICE9PSB1bmRlZmluZWQpIHRoaXMudmFsdWVzW25hbWVdID0gZXhwO1xuICAgIHJldHVybiB0aGlzLnZhbHVlc1tuYW1lXTtcbiAgfVxuXG4gIC8vIE9wdGlvbiBIYW5kbGVyXG4gIG9wdGlvbjxPPihuYW1lOiBRdWVyeU9wdGlvbk5hbWVzLCBvcHRzPzogTykge1xuICAgIGlmIChvcHRzICE9PSB1bmRlZmluZWQpIHRoaXMudmFsdWVzW25hbWVdID0gb3B0cztcbiAgICByZXR1cm4gbmV3IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPE8+KHRoaXMudmFsdWVzLCBuYW1lKTtcbiAgfVxuXG4gIC8vIFF1ZXJ5IE9wdGlvbnMgdG9vbHNcbiAgaGFzKG5hbWU6IFF1ZXJ5T3B0aW9uTmFtZXMpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXNbbmFtZV0gIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJlbW92ZSguLi5uYW1lczogUXVlcnlPcHRpb25OYW1lc1tdKSB7XG4gICAgbmFtZXMuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgZGVsZXRlIHRoaXMudmFsdWVzW25hbWVdO1xuICAgIH0pO1xuICB9XG5cbiAga2VlcCguLi5uYW1lczogUXVlcnlPcHRpb25OYW1lc1tdKSB7XG4gICAgdGhpcy52YWx1ZXMgPSBPYmplY3Qua2V5cyh0aGlzLnZhbHVlcylcbiAgICAgIC5maWx0ZXIoKGspID0+IG5hbWVzLmluZGV4T2YoayBhcyBRdWVyeU9wdGlvbk5hbWVzKSAhPT0gLTEpXG4gICAgICAucmVkdWNlKChhY2MsIGspID0+IE9iamVjdC5hc3NpZ24oYWNjLCB7IFtrXTogdGhpcy52YWx1ZXNba10gfSksIHt9KTtcbiAgfVxuXG4gIC8vIENsZWFyXG4gIGNsZWFyKCkge1xuICAgIHRoaXMudmFsdWVzID0ge307XG4gIH1cbn1cbiJdfQ==
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9yZXNvdXJjZXMvcXVlcnkvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUNMLGlCQUFpQixHQU9sQixNQUFNLFdBQVcsQ0FBQztBQVNuQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFnQnJELE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsWUFBWSxNQUE2RDtRQUN2RSxJQUFJLENBQUMsTUFBTTtZQUNULE1BQU0sWUFBWSxHQUFHO2dCQUNuQixDQUFDLENBQUMsTUFBTTtnQkFDUixDQUFDLENBQUMsSUFBSSxHQUFHLENBQ0wsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFtQyxDQUMvRCxDQUFDO0lBQ1YsQ0FBQztJQUVELFNBQVM7SUFDVCxhQUFhLENBQUMsU0FBa0IsS0FBSztRQUNuQyxJQUFJLE9BQU8sR0FBc0IsRUFBRSxDQUFDO1FBQ3BDLElBQUksT0FBTyxHQUFHO1lBQ1osZ0JBQWdCLENBQUMsTUFBTTtZQUN2QixnQkFBZ0IsQ0FBQyxNQUFNO1lBQ3ZCLGdCQUFnQixDQUFDLE1BQU07WUFDdkIsZ0JBQWdCLENBQUMsT0FBTztZQUN4QixnQkFBZ0IsQ0FBQyxTQUFTO1lBQzFCLGdCQUFnQixDQUFDLE9BQU87WUFDeEIsZ0JBQWdCLENBQUMsR0FBRztZQUNwQixnQkFBZ0IsQ0FBQyxJQUFJO1lBQ3JCLGdCQUFnQixDQUFDLFNBQVM7WUFDMUIsZ0JBQWdCLENBQUMsTUFBTTtZQUN2QixnQkFBZ0IsQ0FBQyxNQUFNO1NBQ3hCO2FBQ0UsTUFBTSxDQUFD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QUNoQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNwQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDckMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxJQUFJLENBQUMsR0FBRyxJQUF3QjtRQUM5QixDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNwQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDckMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxRQUFRO0lBQ1IsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVlcnlPcHRpb25OYW1lcyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IE9iamVjdHMsIFR5cGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgYnVpbGRQYXRoQW5kUXVlcnksXG4gIEV4cGFuZCxcbiAgRmlsdGVyLFxuICBPcmRlckJ5LFxuICBRdWVyeUN1c3RvbVR5cGUsXG4gIFNlbGVjdCxcbiAgVHJhbnNmb3JtLFxufSBmcm9tICcuL2J1aWxkZXInO1xuaW1wb3J0IHtcbiAgRXhwcmVzc2lvbixcbiAgRmlsdGVyRXhwcmVzc2lvbixcbiAgT3JkZXJCeUV4cHJlc3Npb24sXG4gIFNlYXJjaEV4cHJlc3Npb24sXG59IGZyb20gJy4vZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHsgRXhwYW5kRXhwcmVzc2lvbiB9IGZyb20gJy4vZXhwcmVzc2lvbnMvZXhwYW5kJztcbmltcG9ydCB7IFNlbGVjdEV4cHJlc3Npb24gfSBmcm9tICcuL2V4cHJlc3Npb25zL3NlbGVjdCc7XG5pbXBvcnQgeyBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlciB9IGZyb20gJy4vaGFuZGxlcnMnO1xuXG5leHBvcnQgdHlwZSBPRGF0YVF1ZXJ5QXJndW1lbnRzPFQ+ID0ge1xuICBbUXVlcnlPcHRpb25OYW1lcy5zZWxlY3RdPzogU2VsZWN0PFQ+IHwgU2VsZWN0RXhwcmVzc2lvbjxUPjtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMuZmlsdGVyXT86IEZpbHRlcjxUPiB8IEZpbHRlckV4cHJlc3Npb248VD47XG4gIFtRdWVyeU9wdGlvbk5hbWVzLnNlYXJjaF0/OiBzdHJpbmcgfCBTZWFyY2hFeHByZXNzaW9uPFQ+O1xuICBbUXVlcnlPcHRpb25OYW1lcy5jb21wdXRlXT86IHN0cmluZztcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMudHJhbnNmb3JtXT86IFRyYW5zZm9ybTxUPjtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMub3JkZXJCeV0/OiBPcmRlckJ5PFQ+IHwgT3JkZXJCeUV4cHJlc3Npb248VD47XG4gIFtRdWVyeU9wdGlvbk5hbWVzLnRvcF0/OiBudW1iZXI7XG4gIFtRdWVyeU9wdGlvbk5hbWVzLnNraXBdPzogbnVtYmVyO1xuICBbUXVlcnlPcHRpb25OYW1lcy5za2lwdG9rZW5dPzogc3RyaW5nO1xuICBbUXVlcnlPcHRpb25OYW1lcy5leHBhbmRdPzogRXhwYW5kPFQ+IHwgRXhwYW5kRXhwcmVzc2lvbjxUPjtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMuZm9ybWF0XT86IHN0cmluZztcbn07XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVF1ZXJ5T3B0aW9uczxUPiB7XG4gIHZhbHVlczogTWFwPFF1ZXJ5T3B0aW9uTmFtZXMsIGFueT47XG5cbiAgY29uc3RydWN0b3IodmFsdWVzPzogTWFwPFF1ZXJ5T3B0aW9uTmFtZXMsIGFueT4gfCB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHRoaXMudmFsdWVzID1cbiAgICAgIHZhbHVlcyBpbnN0YW5jZW9mIE1hcFxuICAgICAgICA/IHZhbHVlc1xuICAgICAgICA6IG5ldyBNYXAoXG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyh2YWx1ZXMgfHwge30pIGFzIEFycmF5PFtRdWVyeU9wdGlvbk5hbWVzLCBhbnldPlxuICAgICAgICAgICk7XG4gIH1cblxuICAvLyBQYXJhbXNcbiAgcGF0aEFuZFBhcmFtcyhlc2NhcGU6IGJvb2xlYW4gPSBmYWxzZSk6IFtzdHJpbmcsIHsgW25hbWU6IHN0cmluZ106IGFueSB9XSB7XG4gICAgbGV0IGFsaWFzZXM6IFF1ZXJ5Q3VzdG9tVHlwZVtdID0gW107XG4gICAgbGV0IG9wdGlvbnMgPSBbXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLnNlbGVjdCxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMuZmlsdGVyLFxuICAgICAgUXVlcnlPcHRpb25OYW1lcy5zZWFyY2gsXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLmNvbXB1dGUsXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLnRyYW5zZm9ybSxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMub3JkZXJCeSxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMudG9wLFxuICAgICAgUXVlcnlPcHRpb25OYW1lcy5za2lwLFxuICAgICAgUXVlcnlPcHRpb25OYW1lcy5za2lwdG9rZW4sXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLmV4cGFuZCxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMuZm9ybWF0LFxuICAgIF1cbiAgICAgIC5maWx0ZXIoKGtleSkgPT4gIVR5cGVzLmlzRW1wdHkodGhpcy52YWx1ZXMuZ2V0KGtleSkpKVxuICAgICAgLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy52YWx1ZXMuZ2V0KGtleSk7XG4gICAgICAgIGlmIChUeXBlcy5yYXdUeXBlKHZhbHVlKS5lbmRzV2l0aCgnRXhwcmVzc2lvbicpKSB7XG4gICAgICAgICAgdmFsdWUgPSAodmFsdWUgYXMgRXhwcmVzc2lvbjxUPikucmVuZGVyKHsgYWxpYXNlcyB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihhY2MsIHsgW2tleV06IHZhbHVlIH0pO1xuICAgICAgfSwge30pO1xuXG4gICAgcmV0dXJuIGJ1aWxkUGF0aEFuZFF1ZXJ5PGFueT4oeyAuLi5vcHRpb25zLCBhbGlhc2VzLCBlc2NhcGUgfSk7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIGNvbnN0IFtwYXRoLCBwYXJhbXNdID0gdGhpcy5wYXRoQW5kUGFyYW1zKCk7XG4gICAgcmV0dXJuIChcbiAgICAgIHBhdGggK1xuICAgICAgT2JqZWN0LmVudHJpZXMocGFyYW1zKVxuICAgICAgICAuZmlsdGVyKChbLCB2YWx1ZV0pID0+ICFUeXBlcy5pc0VtcHR5KHZhbHVlKSlcbiAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9PSR7dmFsdWV9YClcbiAgICAgICAgLmpvaW4oJyYnKVxuICAgICk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnZhbHVlcy5rZXlzKCldLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgIGxldCB2YWx1ZSA9IHRoaXMudmFsdWVzLmdldChrZXkpO1xuICAgICAgdmFsdWUgPVxuICAgICAgICBUeXBlcy5pc09iamVjdCh2YWx1ZSkgJiYgJ3RvSlNPTicgaW4gdmFsdWUgPyB2YWx1ZS50b0pTT04oKSA6IHZhbHVlO1xuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYWNjLCB7IFtrZXldOiB2YWx1ZSB9KTtcbiAgICB9LCB7fSk7XG4gIH1cblxuICB0b1F1ZXJ5QXJndW1lbnRzKCk6IE9EYXRhUXVlcnlBcmd1bWVudHM8VD4ge1xuICAgIHJldHVybiB7XG4gICAgICBzZWxlY3Q6IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbk5hbWVzLnNlbGVjdCksXG4gICAgICBleHBhbmQ6IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbk5hbWVzLmV4cGFuZCksXG4gICAgICB0cmFuc2Zvcm06IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbk5hbWVzLnRyYW5zZm9ybSksXG4gICAgICBjb21wdXRlOiB0aGlzLnZhbHVlcy5nZXQoUXVlcnlPcHRpb25OYW1lcy5jb21wdXRlKSxcbiAgICAgIHNlYXJjaDogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uTmFtZXMuc2VhcmNoKSxcbiAgICAgIGZpbHRlcjogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uTmFtZXMuZmlsdGVyKSxcbiAgICAgIG9yZGVyQnk6IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbk5hbWVzLm9yZGVyQnkpLFxuICAgICAgdG9wOiB0aGlzLnZhbHVlcy5nZXQoUXVlcnlPcHRpb25OYW1lcy50b3ApLFxuICAgICAgc2tpcDogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uTmFtZXMuc2tpcCksXG4gICAgICBza2lwdG9rZW46IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbk5hbWVzLnNraXB0b2tlbiksXG4gICAgfSBhcyBPRGF0YVF1ZXJ5QXJndW1lbnRzPFQ+O1xuICB9XG5cbiAgY2xvbmU8Tz4oKSB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YVF1ZXJ5T3B0aW9uczxPPihPYmplY3RzLmNsb25lKHRoaXMudmFsdWVzKSk7XG4gIH1cblxuICAvLyBTZXQgUmVuZGVyYWJsZVxuICBleHByZXNzaW9uKGtleTogUXVlcnlPcHRpb25OYW1lcywgZXhwPzogRXhwcmVzc2lvbjxUPikge1xuICAgIGlmIChleHAgIT09IHVuZGVmaW5lZCkgdGhpcy52YWx1ZXMuc2V0KGtleSwgZXhwKTtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuZ2V0KGtleSk7XG4gIH1cblxuICAvLyBPcHRpb24gSGFuZGxlclxuICBvcHRpb248Tz4oa2V5OiBRdWVyeU9wdGlvbk5hbWVzLCBvcHRzPzogTykge1xuICAgIGlmIChvcHRzICE9PSB1bmRlZmluZWQpIHRoaXMudmFsdWVzLnNldChrZXksIG9wdHMpO1xuICAgIHJldHVybiBuZXcgT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8Tz4odGhpcy52YWx1ZXMsIGtleSk7XG4gIH1cblxuICAvLyBRdWVyeSBPcHRpb25zIHRvb2xzXG4gIGhhcyhrZXk6IFF1ZXJ5T3B0aW9uTmFtZXMpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuaGFzKGtleSk7XG4gIH1cblxuICByZW1vdmUoLi4ua2V5czogUXVlcnlPcHRpb25OYW1lc1tdKSB7XG4gICAgWy4uLnRoaXMudmFsdWVzLmtleXMoKV1cbiAgICAgIC5maWx0ZXIoKGspID0+IGtleXMuaW5kZXhPZihrKSAhPT0gLTEpXG4gICAgICAuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIHRoaXMudmFsdWVzLmRlbGV0ZShrZXkpO1xuICAgICAgfSk7XG4gIH1cblxuICBrZWVwKC4uLmtleXM6IFF1ZXJ5T3B0aW9uTmFtZXNbXSkge1xuICAgIFsuLi50aGlzLnZhbHVlcy5rZXlzKCldXG4gICAgICAuZmlsdGVyKChrKSA9PiBrZXlzLmluZGV4T2YoaykgPT09IC0xKVxuICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICB0aGlzLnZhbHVlcy5kZWxldGUoa2V5KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gQ2xlYXJcbiAgY2xlYXIoKSB7XG4gICAgdGhpcy52YWx1ZXMuY2xlYXIoKTtcbiAgfVxufVxuIl19
@@ -276,4 +276,4 @@ export class ODataResource {
276
276
  return this.request('DELETE', options);
277
277
  }
278
278
  }
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGVBQWUsRUFDZixlQUFlLEdBQ2hCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUdoRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDckUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsd0JBQXdCLEdBRXpCLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFnQnpDLE1BQU0sT0FBTyxhQUFhO0lBTXhCLFlBQ0UsR0FBYSxFQUNiLEVBQ0UsUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLE1BS0osRUFBRTtRQUVOLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLElBQUksSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxJQUFJLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzFDLENB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QUMsQ0FBQztJQUNyRCxDQUFDO0lBRVMsTUFBTSxDQUNkLFVBWUksRUFBRTtRQUVOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT0RhdGFBcGkgfSBmcm9tICcuLi9hcGknO1xuaW1wb3J0IHtcbiAgUEFSQU1fU0VQQVJBVE9SLFxuICBRVUVSWV9TRVBBUkFUT1IsXG4gIFZBTFVFX1NFUEFSQVRPUixcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9EYXRhQ29sbGVjdGlvbiwgT0RhdGFNb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBPRGF0YVN0cnVjdHVyZWRUeXBlIH0gZnJvbSAnLi4vc2NoZW1hJztcbmltcG9ydCB7IE9EYXRhU2NoZW1hRWxlbWVudCB9IGZyb20gJy4uL3NjaGVtYS9lbGVtZW50JztcbmltcG9ydCB7IE9wdGlvbnNIZWxwZXIsIFBhcnNlciwgUXVlcnlPcHRpb25OYW1lcyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEh0dHAsIE9iamVjdHMsIFR5cGVzIH0gZnJvbSAnLi4vdXRpbHMvaW5kZXgnO1xuaW1wb3J0IHsgT0RhdGFQYXRoU2VnbWVudHMsIE9EYXRhUGF0aFNlZ21lbnRzSGFuZGxlciB9IGZyb20gJy4vcGF0aCc7XG5pbXBvcnQge1xuICBpc1F1ZXJ5Q3VzdG9tVHlwZSxcbiAgT0RhdGFRdWVyeU9wdGlvbnMsXG4gIE9EYXRhUXVlcnlPcHRpb25zSGFuZGxlcixcbiAgUXVlcnlDdXN0b21UeXBlLFxufSBmcm9tICcuL3F1ZXJ5JztcbmltcG9ydCB7IE9EYXRhUmVxdWVzdCB9IGZyb20gJy4vcmVxdWVzdCc7XG5pbXBvcnQge1xuICBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnMsXG4gIE9EYXRhRW50aXR5QW5ub3RhdGlvbnMsXG4gIE9EYXRhUmVzcG9uc2UsXG59IGZyb20gJy4vcmVzcG9uc2VzL2luZGV4JztcbmltcG9ydCB7IE9EYXRhT3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBFbnRpdHlLZXk8VD4gPVxuICB8IHtcbiAgICAgIHJlYWRvbmx5IFtQIGluIGtleW9mIFRdPzogVFtQXTtcbiAgICB9XG4gIHwgUXVlcnlDdXN0b21UeXBlXG4gIHwgc3RyaW5nXG4gIHwgbnVtYmVyO1xuXG5leHBvcnQgY2xhc3MgT0RhdGFSZXNvdXJjZTxUPiB7XG4gIC8vIFZBUklBQkxFU1xuICBwdWJsaWMgYXBpOiBPRGF0YUFwaTtcbiAgcHVibGljIHNjaGVtYT86IE9EYXRhU2NoZW1hRWxlbWVudDtcbiAgcHJvdGVjdGVkIHBhdGhTZWdtZW50czogT0RhdGFQYXRoU2VnbWVudHM7XG4gIHByb3RlY3RlZCBxdWVyeU9wdGlvbnM6IE9EYXRhUXVlcnlPcHRpb25zPFQ+O1xuICBjb25zdHJ1Y3RvcihcbiAgICBhcGk6IE9EYXRhQXBpLFxuICAgIHtcbiAgICAgIHNlZ21lbnRzLFxuICAgICAgcXVlcnksXG4gICAgICBzY2hlbWEsXG4gICAgfToge1xuICAgICAgc2VnbWVudHM/OiBPRGF0YVBhdGhTZWdtZW50cztcbiAgICAgIHF1ZXJ5PzogT0RhdGFRdWVyeU9wdGlvbnM8VD47XG4gICAgICBzY2hlbWE/OiBPRGF0YVNjaGVtYUVsZW1lbnQ7XG4gICAgfSA9IHt9XG4gICkge1xuICAgIHRoaXMuYXBpID0gYXBpO1xuICAgIHRoaXMucGF0aFNlZ21lbnRzID0gc2VnbWVudHMgfHwgbmV3IE9EYXRhUGF0aFNlZ21lbnRzKCk7XG4gICAgdGhpcy5xdWVyeU9wdGlvbnMgPSBxdWVyeSB8fCBuZXcgT0RhdGFRdWVyeU9wdGlvbnMoKTtcbiAgICB0aGlzLnNjaGVtYSA9IHNjaGVtYTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBzdHJpbmcgVGhlIHR5cGUgb2YgdGhlIHJlc291cmNlXG4gICAqL1xuICB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLnBhdGhTZWdtZW50cy5sYXN0KCk/LnR5cGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBzdHJpbmcgVGhlIHR5cGUgb2YgdGhlIHJldHVyblxuICAgKi9cbiAgcmV0dXJuVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoU2VnbWVudHMubGFzdCgpPy50eXBlKCk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgc3RyaW5nIEFsbCBjb3ZlcmVkIHR5cGVzIG9mIHRoZSByZXNvdXJjZVxuICAgKi9cbiAgdHlwZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnBhdGhTZWdtZW50cy50eXBlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGJvb2xlYW4gVGhlIHJlc291cmNlIGhhcyBrZXkgP1xuICAgKi9cbiAgaGFzS2V5KCkge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMucGF0aFNlZ21lbnRzLmxhc3QoeyBrZXk6IHRydWUgfSk/Lmhhc0tleSgpKTtcbiAgfVxuXG4gIGNsZWFyS2V5KCkge1xuICAgIHJldHVybiB0aGlzLnBhdGhTZWdtZW50cy5sYXN0KHsga2V5OiB0cnVlIH0pPy5jbGVhcktleSgpO1xuICB9XG5cbiAgLy8jcmVnaW9uIE1vZGVsc1xuICBhc01vZGVsPE0gZXh0ZW5kcyBPRGF0YU1vZGVsPFQ+PihcbiAgICBlbnRpdHk/OiBQYXJ0aWFsPFQ+IHwgeyBbbmFtZTogc3RyaW5nXTogYW55IH0sXG4gICAgeyBhbm5vdHMsIHJlc2V0IH06IHsgYW5ub3RzPzogT0RhdGFFbnRpdHlBbm5vdGF0aW9uczsgcmVzZXQ/OiBib29sZWFuIH0gPSB7fVxuICApOiBNIHtcbiAgICBsZXQgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8VD4gPSB0aGlzIGFzIE9EYXRhUmVzb3VyY2U8VD47XG4gICAgY29uc3QgdHlwZSA9IGFubm90cz8udHlwZSB8fCB0aGlzLnJldHVyblR5cGUoKTtcbiAgICBpZiAodHlwZSA9PT0gdW5kZWZpbmVkKSB0aHJvdyBFcnJvcignJyk7XG4gICAgY29uc3QgTW9kZWwgPSB0aGlzLmFwaS5tb2RlbEZvclR5cGUodHlwZSk7XG4gICAgbGV0IGVudGl0eVNldCA9IGFubm90cz8uZW50aXR5U2V0O1xuICAgIGlmIChlbnRpdHlTZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzb3VyY2UgPSB0aGlzLmFwaS5lbnRpdHlTZXQ8VD4oZW50aXR5U2V0KS5lbnRpdHkoZW50aXR5IGFzIFBhcnRpYWw8VD4pO1xuICAgICAgcmVzb3VyY2UucXVlcnkoKHEpID0+IHEuYXBwbHkodGhpcy5xdWVyeU9wdGlvbnMudG9RdWVyeUFyZ3VtZW50cygpKSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgTW9kZWwoZW50aXR5LCB7IHJlc291cmNlLCBhbm5vdHMsIHJlc2V0IH0pIGFzIE07XG4gIH1cblxuICBhc0NvbGxlY3Rpb248TSBleHRlbmRzIE9EYXRhTW9kZWw8VD4sIEMgZXh0ZW5kcyBPRGF0YUNvbGxlY3Rpb248VCwgTT4+KFxuICAgIGVudGl0aWVzPzogUGFydGlhbDxUPltdIHwgeyBbbmFtZTogc3RyaW5nXTogYW55IH1bXSxcbiAgICB7XG4gICAgICBhbm5vdHMsXG4gICAgICByZXNldCxcbiAgICB9OiB7IGFubm90cz86IE9EYXRhRW50aXRpZXNBbm5vdGF0aW9uczsgcmVzZXQ/OiBib29sZWFuIH0gPSB7fVxuICApOiBDIHtcbiAgICBsZXQgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8VD4gPSB0aGlzIGFzIE9EYXRhUmVzb3VyY2U8VD47XG4gICAgY29uc3QgdHlwZSA9IGFubm90cz8udHlwZSB8fCB0aGlzLnJldHVyblR5cGUoKTtcbiAgICBpZiAodHlwZSA9PT0gdW5kZWZpbmVkKSB0aHJvdyBFcnJvcignJyk7XG4gICAgY29uc3QgQ29sbGVjdGlvbiA9IHRoaXMuYXBpLmNvbGxlY3Rpb25Gb3JUeXBlKHR5cGUpO1xuICAgIGxldCBwYXRoID0gYW5ub3RzPy5lbnRpdHlTZXQ7XG4gICAgaWYgKHBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzb3VyY2UgPSB0aGlzLmFwaS5lbnRpdHlTZXQ8VD4ocGF0aCk7XG4gICAgICByZXNvdXJjZS5xdWVyeSgocSkgPT4gcS5hcHBseSh0aGlzLnF1ZXJ5T3B0aW9ucy50b1F1ZXJ5QXJndW1lbnRzKCkpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBDb2xsZWN0aW9uKGVudGl0aWVzLCB7IHJlc291cmNlLCBhbm5vdHMsIHJlc2V0IH0pIGFzIEM7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgaXNTdWJ0eXBlT2Yob3RoZXI6IE9EYXRhUmVzb3VyY2U8YW55Pikge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNjaGVtYSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBvdGhlci5zY2hlbWEgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5zY2hlbWE/LmlzU3VidHlwZU9mKG90aGVyLnNjaGVtYSlcbiAgICApO1xuICB9XG5cbiAgaXNTdXBlcnR5cGVPZihvdGhlcjogT0RhdGFSZXNvdXJjZTxhbnk+KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2NoZW1hICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIG90aGVyLnNjaGVtYSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLnNjaGVtYT8uaXNTdXBlcnR5cGVPZihvdGhlci5zY2hlbWEpXG4gICAgKTtcbiAgfVxuXG4gIGlzRXF1YWxUbyhvdGhlcjogT0RhdGFSZXNvdXJjZTxhbnk+LCB0ZXN0PzogJ3BhdGgnIHwgJ3BhcmFtcycpIHtcbiAgICBjb25zdCBbc2VsZlBhdGgsIHNlbGZQYXJhbXNdID0gdGhpcy5wYXRoQW5kUGFyYW1zKCk7XG4gICAgY29uc3QgW290aGVyUGF0aCwgb3RoZXJQYXJhbXNdID0gb3RoZXIucGF0aEFuZFBhcmFtcygpO1xuICAgIHJldHVybiB0ZXN0ID09PSAncGF0aCdcbiAgICAgID8gb3RoZXJQYXRoID09PSBzZWxmUGF0aFxuICAgICAgOiB0ZXN0ID09PSAncGFyYW1zJ1xuICAgICAgPyBUeXBlcy5pc0VxdWFsKHNlbGZQYXJhbXMsIG90aGVyUGFyYW1zKVxuICAgICAgOiBvdGhlclBhdGggPT09IHNlbGZQYXRoICYmIFR5cGVzLmlzRXF1YWwoc2VsZlBhcmFtcywgb3RoZXJQYXJhbXMpO1xuICB9XG5cbiAgcGF0aEFuZFBhcmFtcyhlc2NhcGU6IGJvb2xlYW4gPSBmYWxzZSk6IFtzdHJpbmcsIHsgW25hbWU6IHN0cmluZ106IGFueSB9XSB7XG4gICAgY29uc3QgW3NwYXRoLCBzcGFyYW1zXSA9IHRoaXMucGF0aFNlZ21lbnRzLnBhdGhBbmRQYXJhbXMoZXNjYXBlKTtcbiAgICBjb25zdCBbLCBxcGFyYW1zXSA9IHRoaXMucXVlcnlPcHRpb25zLnBhdGhBbmRQYXJhbXMoZXNjYXBlKTtcblxuICAgIHJldHVybiBbc3BhdGgsIHsgLi4uc3BhcmFtcywgLi4ucXBhcmFtcyB9XTtcbiAgfVxuXG4gIGVuZHBvaW50VXJsKHBhcmFtczogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBpZiAocGFyYW1zKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5hcGkuc2VydmljZVJvb3RVcmx9JHt0aGlzfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBbcGF0aF0gPSB0aGlzLnBhdGhBbmRQYXJhbXMoKTtcbiAgICAgIHJldHVybiBgJHt0aGlzLmFwaS5zZXJ2aWNlUm9vdFVybH0ke3BhdGh9YDtcbiAgICB9XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIGxldCBbcGF0aCwgcGFyYW1zXSA9IHRoaXMucGF0aEFuZFBhcmFtcygpO1xuICAgIGxldCBxdWVyeVN0cmluZyA9IE9iamVjdC5lbnRyaWVzKHBhcmFtcylcbiAgICAgIC5tYXAoKGUpID0+IGAke2VbMF19JHtWQUxVRV9TRVBBUkFUT1J9JHtlWzFdfWApXG4gICAgICAuam9pbihQQVJBTV9TRVBBUkFUT1IpO1xuICAgIHJldHVybiBxdWVyeVN0cmluZyA/IGAke3BhdGh9JHtRVUVSWV9TRVBBUkFUT1J9JHtxdWVyeVN0cmluZ31gIDogcGF0aDtcbiAgfVxuXG4gIGNsb25lKCk6IE9EYXRhUmVzb3VyY2U8VD4ge1xuICAgIGNvbnN0IEN0b3IgPSB0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBPRGF0YVJlc291cmNlO1xuICAgIHJldHVybiBuZXcgQ3Rvcih0aGlzLmFwaSwge1xuICAgICAgc2NoZW1hOiB0aGlzLnNjaGVtYSxcbiAgICAgIHNlZ21lbnRzOiB0aGlzLmNsb25lU2VnbWVudHMoKSxcbiAgICAgIHF1ZXJ5OiB0aGlzLmNsb25lUXVlcnk8VD4oKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX19wYXJzZXIodmFsdWU6IGFueSwgb3B0aW9ucz86IE9wdGlvbnNIZWxwZXIsIHR5cGU/OiBzdHJpbmcpOiBQYXJzZXI8VD4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGRhdGFUeXBlID0gb3B0aW9ucyAhPT0gdW5kZWZpbmVkICYmIFR5cGVzLmlzUGxhaW5PYmplY3QodmFsdWUpXG4gICAgICA/IG9wdGlvbnMuaGVscGVyLnR5cGUodmFsdWUpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBpZiAoZGF0YVR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gUGFyc2VyIGZyb20gZGF0YSB0eXBlXG4gICAgICByZXR1cm4gdGhpcy5hcGkucGFyc2VyRm9yVHlwZTxUPihkYXRhVHlwZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNjaGVtYSAhPT0gdW5kZWZpbmVkICYmICdwYXJzZXInIGluIHRoaXMuc2NoZW1hKSB7XG4gICAgICAvLyBQYXJzZXIgZnJvbSByZXNvdXJjZSBzY2hlbWFcbiAgICAgIHJldHVybiAoPGFueT50aGlzLnNjaGVtYSkucGFyc2VyIGFzIFBhcnNlcjxUPiB8IHVuZGVmaW5lZDtcbiAgICB9IGVsc2UgaWYgKHR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gUGFyc2VyIGZyb20gcmVzb3VyY2UgdHlwZVxuICAgICAgcmV0dXJuIHRoaXMuYXBpLnBhcnNlckZvclR5cGU8VD4odHlwZSk7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBkZXNlcmlhbGl6ZSh2YWx1ZTogYW55LCBvcHRpb25zPzogT3B0aW9uc0hlbHBlcik6IGFueSB7XG4gICAgY29uc3QgcmVzb3VyY2VUeXBlID0gdGhpcy5yZXR1cm5UeXBlKCk7XG4gICAgY29uc3QgX2QgPSAodmFsdWU6IGFueSwgb3B0aW9uczogT3B0aW9uc0hlbHBlcikgPT4ge1xuICAgICAgY29uc3QgcGFyc2VyID0gdGhpcy5fX3BhcnNlcih2YWx1ZSwgb3B0aW9ucywgcmVzb3VyY2VUeXBlKTtcbiAgICAgIHJldHVybiBwYXJzZXIgIT09IHVuZGVmaW5lZCAmJiAnZGVzZXJpYWxpemUnIGluIHBhcnNlclxuICAgICAgICA/IHBhcnNlci5kZXNlcmlhbGl6ZSh2YWx1ZSwgb3B0aW9ucylcbiAgICAgICAgOiB2YWx1ZTtcbiAgICB9O1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgPyB2YWx1ZS5tYXAoKHYpID0+IF9kKHYsIG9wdGlvbnMgfHwgdGhpcy5hcGkub3B0aW9ucykpXG4gICAgICA6IF9kKHZhbHVlLCBvcHRpb25zIHx8IHRoaXMuYXBpLm9wdGlvbnMpO1xuICB9XG5cbiAgc2VyaWFsaXplKHZhbHVlOiBhbnksIG9wdGlvbnM/OiBPcHRpb25zSGVscGVyKTogYW55IHtcbiAgICBjb25zdCByZXNvdXJjZVR5cGUgPSB0aGlzLnR5cGUoKTtcbiAgICBjb25zdCBfcyA9ICh2YWx1ZTogYW55LCBvcHRpb25zOiBPcHRpb25zSGVscGVyKSA9PiB7XG4gICAgICBjb25zdCBwYXJzZXIgPSB0aGlzLl9fcGFyc2VyKHZhbHVlLCBvcHRpb25zLCByZXNvdXJjZVR5cGUpO1xuICAgICAgcmV0dXJuIHBhcnNlciAhPT0gdW5kZWZpbmVkICYmICdzZXJpYWxpemUnIGluIHBhcnNlclxuICAgICAgICA/IHBhcnNlci5zZXJpYWxpemUodmFsdWUsIG9wdGlvbnMpXG4gICAgICAgIDogdmFsdWU7XG4gICAgfTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgID8gdmFsdWUubWFwKCh2KSA9PiBfcyh2LCBvcHRpb25zIHx8IHRoaXMuYXBpLm9wdGlvbnMpKVxuICAgICAgOiBfcyh2YWx1ZSwgb3B0aW9ucyB8fCB0aGlzLmFwaS5vcHRpb25zKTtcbiAgfVxuXG4gIGVuY29kZSh2YWx1ZTogYW55LCBvcHRpb25zPzogT3B0aW9uc0hlbHBlcik6IGFueSB7XG4gICAgY29uc3QgcmVzb3VyY2VUeXBlID0gdGhpcy50eXBlKCk7XG4gICAgY29uc3QgX2UgPSAodmFsdWU6IGFueSwgb3B0aW9uczogT3B0aW9uc0hlbHBlcikgPT4ge1xuICAgICAgY29uc3QgcGFyc2VyID0gdGhpcy5fX3BhcnNlcih2YWx1ZSwgb3B0aW9ucywgcmVzb3VyY2VUeXBlKTtcbiAgICAgIHJldHVybiBwYXJzZXIgIT09IHVuZGVmaW5lZCAmJiAnZW5jb2RlJyBpbiBwYXJzZXJcbiAgICAgICAgPyBwYXJzZXIuZW5jb2RlKHZhbHVlLCBvcHRpb25zKVxuICAgICAgICA6IHZhbHVlO1xuICAgIH07XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICA/IHZhbHVlLm1hcCgodikgPT4gX2Uodiwgb3B0aW9ucyB8fCB0aGlzLmFwaS5vcHRpb25zKSlcbiAgICAgIDogX2UodmFsdWUsIG9wdGlvbnMgfHwgdGhpcy5hcGkub3B0aW9ucyk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlZ21lbnRzOiB0aGlzLnBhdGhTZWdtZW50cy50b0pTT04oKSxcbiAgICAgIG9wdGlvbnM6IHRoaXMucXVlcnlPcHRpb25zLnRvSlNPTigpLFxuICAgIH07XG4gIH1cblxuICBjbG9uZVNlZ21lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLnBhdGhTZWdtZW50cy5jbG9uZSgpO1xuICB9XG5cbiAgLy8jcmVnaW9uIFF1ZXJ5IE9wdGlvbnNcbiAgY2xlYXJRdWVyeSgpIHtcbiAgICB0aGlzLnF1ZXJ5T3B0aW9ucy5jbGVhcigpO1xuICB9XG5cbiAgY2xvbmVRdWVyeTxQPigpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeU9wdGlvbnMuY2xvbmU8UD4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHBhdGggc2VnbWVudHMgb2YgdGhlIHJlc291cmNlXG4gICAqIENyZWF0ZSBhbiBvYmplY3QgaGFuZGxlciBmb3IgbXV0YXRlIHRoZSBwYXRoIHNlZ21lbnRzIG9mIHRoZSByZXNvdXJjZVxuICAgKiBAcGFyYW0gZiBGdW5jdGlvbiBjb250ZXh0IGZvciBoYW5kbGUgdGhlIHNlZ21lbnRzXG4gICAqIEByZXR1cm5zIE9EYXRhQWN0aW9uUmVzb3VyY2VcbiAgICovXG4gIHNlZ21lbnQoZjogKHE6IE9EYXRhUGF0aFNlZ21lbnRzSGFuZGxlcjxUPikgPT4gdm9pZCkge1xuICAgIGYobmV3IE9EYXRhUGF0aFNlZ21lbnRzSGFuZGxlcjxUPih0aGlzLnBhdGhTZWdtZW50cykpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgcXVlcnkgb3B0aW9ucyBvZiB0aGUgcmVzb3VyY2VcbiAgICogQ3JlYXRlIGFuIG9iamVjdCBoYW5kbGVyIGZvciBtdXRhdGUgdGhlIHF1ZXJ5IG9wdGlvbnMgb2YgdGhlIHJlc291cmNlXG4gICAqIEBwYXJhbSBmIEZ1bmN0aW9uIGNvbnRleHQgZm9yIGhhbmRsZSB0aGUgcXVlcnkgb3B0aW9uc1xuICAgKi9cbiAgcXVlcnkoZjogKHE6IE9EYXRhUXVlcnlPcHRpb25zSGFuZGxlcjxUPikgPT4gdm9pZCkge1xuICAgIGYobmV3IE9EYXRhUXVlcnlPcHRpb25zSGFuZGxlcjxUPih0aGlzLnF1ZXJ5T3B0aW9ucykpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3RhdGljIHJlc29sdmVLZXk8VD4oXG4gICAgdmFsdWU6IGFueSxcbiAgICBzY2hlbWE/OiBPRGF0YVN0cnVjdHVyZWRUeXBlPFQ+XG4gICk6IEVudGl0eUtleTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGlzUXVlcnlDdXN0b21UeXBlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSBpZiAoVHlwZXMuaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBzY2hlbWEgaW5zdGFuY2VvZiBPRGF0YVN0cnVjdHVyZWRUeXBlXG4gICAgICAgID8gc2NoZW1hLnJlc29sdmVLZXkodmFsdWUpXG4gICAgICAgIDogT2JqZWN0cy5yZXNvbHZlS2V5KHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlIGFzIEVudGl0eUtleTxUPiB8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNvbHZlS2V5KHZhbHVlOiBhbnkpOiBFbnRpdHlLZXk8VD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBPRGF0YVJlc291cmNlLnJlc29sdmVLZXk8VD4oXG4gICAgICB2YWx1ZSxcbiAgICAgIHRoaXMuc2NoZW1hIGFzIE9EYXRhU3RydWN0dXJlZFR5cGU8VD5cbiAgICApO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vIEJhc2UgUmVxdWVzdHNcbiAgcHJvdGVjdGVkIHJlcXVlc3QoXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgYm9keT86IGFueTtcbiAgICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgICBib2R5UXVlcnlPcHRpb25zPzogUXVlcnlPcHRpb25OYW1lc1tdO1xuICAgIH1cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBhcGlPcHRpb25zID0gdGhpcy5hcGkub3B0aW9ucztcbiAgICBsZXQgcGFyYW1zID0gb3B0aW9ucy5wYXJhbXMgfHwge307XG4gICAgaWYgKG9wdGlvbnMud2l0aENvdW50KSB7XG4gICAgICBwYXJhbXMgPSBIdHRwLm1lcmdlSHR0cFBhcmFtcyhwYXJhbXMsIGFwaU9wdGlvbnMuaGVscGVyLmNvdW50UGFyYW0oKSk7XG4gICAgfVxuXG4gICAgbGV0IGV0YWcgPSBvcHRpb25zLmV0YWc7XG4gICAgaWYgKGV0YWcgPT09IHVuZGVmaW5lZCAmJiBUeXBlcy5pc1BsYWluT2JqZWN0KG9wdGlvbnMuYm9keSkpIHtcbiAgICAgIGV0YWcgPSBhcGlPcHRpb25zLmhlbHBlci5ldGFnKG9wdGlvbnMuYm9keSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBPRGF0YVJlcXVlc3Qoe1xuICAgICAgbWV0aG9kLFxuICAgICAgZXRhZyxcbiAgICAgIGJvZHk6IG9wdGlvbnMuYm9keSxcbiAgICAgIGFwaTogdGhpcy5hcGksXG4gICAgICByZXNvdXJjZTogdGhpcyxcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZScsXG4gICAgICBoZWFkZXJzOiBvcHRpb25zLmhlYWRlcnMsXG4gICAgICByZXBvcnRQcm9ncmVzczogb3B0aW9ucy5yZXBvcnRQcm9ncmVzcyxcbiAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgcmVzcG9uc2VUeXBlOiBvcHRpb25zLnJlc3BvbnNlVHlwZSxcbiAgICAgIGZldGNoUG9saWN5OiBvcHRpb25zLmZldGNoUG9saWN5LFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiBvcHRpb25zLndpdGhDcmVkZW50aWFscyxcbiAgICAgIGJvZHlRdWVyeU9wdGlvbnM6IG9wdGlvbnMuYm9keVF1ZXJ5T3B0aW9ucyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlcyQgPSB0aGlzLmFwaS5yZXF1ZXN0KHJlcXVlc3QpO1xuICAgIHN3aXRjaCAob3B0aW9ucy5yZXNwb25zZVR5cGUpIHtcbiAgICAgIGNhc2UgJ2VudGl0aWVzJzpcbiAgICAgICAgcmV0dXJuIHJlcyQucGlwZShtYXAoKHJlczogT0RhdGFSZXNwb25zZTxUPikgPT4gcmVzLmVudGl0aWVzKCkpKTtcbiAgICAgIGNhc2UgJ2VudGl0eSc6XG4gICAgICAgIHJldHVybiByZXMkLnBpcGUobWFwKChyZXM6IE9EYXRhUmVzcG9uc2U8VD4pID0+IHJlcy5lbnRpdHkoKSkpO1xuICAgICAgY2FzZSAncHJvcGVydHknOlxuICAgICAgICByZXR1cm4gcmVzJC5waXBlKG1hcCgocmVzOiBPRGF0YVJlc3BvbnNlPFQ+KSA9PiByZXMucHJvcGVydHkoKSkpO1xuICAgICAgY2FzZSAndmFsdWUnOlxuICAgICAgICByZXR1cm4gcmVzJC5waXBlKG1hcCgocmVzOiBPRGF0YVJlc3BvbnNlPFQ+KSA9PiByZXMudmFsdWUoKSBhcyBUKSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBPdGhlciByZXNwb25zZVR5cGVzIChhcnJheWJ1ZmZlciwgYmxvYiwganNvbiwgdGV4dCkgcmV0dXJuIGJvZHlcbiAgICAgICAgcmV0dXJuIHJlcyQucGlwZShtYXAoKHJlczogT0RhdGFSZXNwb25zZTxUPikgPT4gcmVzLmJvZHkpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0KFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgICBib2R5UXVlcnlPcHRpb25zPzogUXVlcnlPcHRpb25OYW1lc1tdO1xuICAgIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoJ0dFVCcsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBvc3QoXG4gICAgYm9keTogYW55LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIHJlc3BvbnNlVHlwZT86XG4gICAgICAgIHwgJ2FycmF5YnVmZmVyJ1xuICAgICAgICB8ICdibG9iJ1xuICAgICAgICB8ICdqc29uJ1xuICAgICAgICB8ICd0ZXh0J1xuICAgICAgICB8ICd2YWx1ZSdcbiAgICAgICAgfCAncHJvcGVydHknXG4gICAgICAgIHwgJ2VudGl0eSdcbiAgICAgICAgfCAnZW50aXRpZXMnO1xuICAgICAgd2l0aENvdW50PzogYm9vbGVhbjtcbiAgICB9ID0ge31cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdQT1NUJywgeyBib2R5LCAuLi5vcHRpb25zIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHB1dChcbiAgICBib2R5OiBhbnksXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgZXRhZz86IHN0cmluZztcbiAgICAgIHJlc3BvbnNlVHlwZT86XG4gICAgICAgIHwgJ2FycmF5YnVmZmVyJ1xuICAgICAgICB8ICdibG9iJ1xuICAgICAgICB8ICdqc29uJ1xuICAgICAgICB8ICd0ZXh0J1xuICAgICAgICB8ICd2YWx1ZSdcbiAgICAgICAgfCAncHJvcGVydHknXG4gICAgICAgIHwgJ2VudGl0eSdcbiAgICAgICAgfCAnZW50aXRpZXMnO1xuICAgICAgd2l0aENvdW50PzogYm9vbGVhbjtcbiAgICB9ID0ge31cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdQVVQnLCB7IGJvZHksIC4uLm9wdGlvbnMgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGF0Y2goXG4gICAgYm9keTogYW55LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgnUEFUQ0gnLCB7IGJvZHksIC4uLm9wdGlvbnMgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZGVsZXRlKFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgnREVMRVRFJywgb3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==
279
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGVBQWUsRUFDZixlQUFlLEdBQ2hCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUdoRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDckUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsd0JBQXdCLEdBRXpCLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFnQnpDLE1BQU0sT0FBTyxhQUFhO0lBTXhCLFlBQ0UsR0FBYSxFQUNiLEVBQ0UsUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLE1BS0osRUFBRTtRQUVOLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLElBQUksSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxJQUFJLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzFDLENB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QUFDLENBQUM7SUFDckQsQ0FBQztJQUVTLE1BQU0sQ0FDZCxVQVlJLEVBQUU7UUFFTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9EYXRhQXBpIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7XG4gIFBBUkFNX1NFUEFSQVRPUixcbiAgUVVFUllfU0VQQVJBVE9SLFxuICBWQUxVRV9TRVBBUkFUT1IsXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBPRGF0YUNvbGxlY3Rpb24sIE9EYXRhTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgT0RhdGFTdHJ1Y3R1cmVkVHlwZSB9IGZyb20gJy4uL3NjaGVtYSc7XG5pbXBvcnQgeyBPRGF0YVNjaGVtYUVsZW1lbnQgfSBmcm9tICcuLi9zY2hlbWEvZWxlbWVudCc7XG5pbXBvcnQgeyBPcHRpb25zSGVscGVyLCBQYXJzZXIsIFF1ZXJ5T3B0aW9uTmFtZXMgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBIdHRwLCBPYmplY3RzLCBUeXBlcyB9IGZyb20gJy4uL3V0aWxzL2luZGV4JztcbmltcG9ydCB7IE9EYXRhUGF0aFNlZ21lbnRzLCBPRGF0YVBhdGhTZWdtZW50c0hhbmRsZXIgfSBmcm9tICcuL3BhdGgnO1xuaW1wb3J0IHtcbiAgaXNRdWVyeUN1c3RvbVR5cGUsXG4gIE9EYXRhUXVlcnlPcHRpb25zLFxuICBPRGF0YVF1ZXJ5T3B0aW9uc0hhbmRsZXIsXG4gIFF1ZXJ5Q3VzdG9tVHlwZSxcbn0gZnJvbSAnLi9xdWVyeSc7XG5pbXBvcnQgeyBPRGF0YVJlcXVlc3QgfSBmcm9tICcuL3JlcXVlc3QnO1xuaW1wb3J0IHtcbiAgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zLFxuICBPRGF0YUVudGl0eUFubm90YXRpb25zLFxuICBPRGF0YVJlc3BvbnNlLFxufSBmcm9tICcuL3Jlc3BvbnNlcy9pbmRleCc7XG5pbXBvcnQgeyBPRGF0YU9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgRW50aXR5S2V5PFQ+ID1cbiAgfCB7XG4gICAgICByZWFkb25seSBbUCBpbiBrZXlvZiBUXT86IFRbUF07XG4gICAgfVxuICB8IFF1ZXJ5Q3VzdG9tVHlwZVxuICB8IHN0cmluZ1xuICB8IG51bWJlcjtcblxuZXhwb3J0IGNsYXNzIE9EYXRhUmVzb3VyY2U8VD4ge1xuICAvLyBWQVJJQUJMRVNcbiAgcHVibGljIGFwaTogT0RhdGFBcGk7XG4gIHB1YmxpYyBzY2hlbWE/OiBPRGF0YVNjaGVtYUVsZW1lbnQ7XG4gIHByb3RlY3RlZCBwYXRoU2VnbWVudHM6IE9EYXRhUGF0aFNlZ21lbnRzO1xuICBwcm90ZWN0ZWQgcXVlcnlPcHRpb25zOiBPRGF0YVF1ZXJ5T3B0aW9uczxUPjtcbiAgY29uc3RydWN0b3IoXG4gICAgYXBpOiBPRGF0YUFwaSxcbiAgICB7XG4gICAgICBzZWdtZW50cyxcbiAgICAgIHF1ZXJ5LFxuICAgICAgc2NoZW1hLFxuICAgIH06IHtcbiAgICAgIHNlZ21lbnRzPzogT0RhdGFQYXRoU2VnbWVudHM7XG4gICAgICBxdWVyeT86IE9EYXRhUXVlcnlPcHRpb25zPFQ+O1xuICAgICAgc2NoZW1hPzogT0RhdGFTY2hlbWFFbGVtZW50O1xuICAgIH0gPSB7fVxuICApIHtcbiAgICB0aGlzLmFwaSA9IGFwaTtcbiAgICB0aGlzLnBhdGhTZWdtZW50cyA9IHNlZ21lbnRzIHx8IG5ldyBPRGF0YVBhdGhTZWdtZW50cygpO1xuICAgIHRoaXMucXVlcnlPcHRpb25zID0gcXVlcnkgfHwgbmV3IE9EYXRhUXVlcnlPcHRpb25zKCk7XG4gICAgdGhpcy5zY2hlbWEgPSBzY2hlbWE7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgc3RyaW5nIFRoZSB0eXBlIG9mIHRoZSByZXNvdXJjZVxuICAgKi9cbiAgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoU2VnbWVudHMubGFzdCgpPy50eXBlKCk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgc3RyaW5nIFRoZSB0eXBlIG9mIHRoZSByZXR1cm5cbiAgICovXG4gIHJldHVyblR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aFNlZ21lbnRzLmxhc3QoKT8udHlwZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHN0cmluZyBBbGwgY292ZXJlZCB0eXBlcyBvZiB0aGUgcmVzb3VyY2VcbiAgICovXG4gIHR5cGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoU2VnbWVudHMudHlwZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBib29sZWFuIFRoZSByZXNvdXJjZSBoYXMga2V5ID9cbiAgICovXG4gIGhhc0tleSgpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLnBhdGhTZWdtZW50cy5sYXN0KHsga2V5OiB0cnVlIH0pPy5oYXNLZXkoKSk7XG4gIH1cblxuICBjbGVhcktleSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoU2VnbWVudHMubGFzdCh7IGtleTogdHJ1ZSB9KT8uY2xlYXJLZXkoKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBNb2RlbHNcbiAgYXNNb2RlbDxNIGV4dGVuZHMgT0RhdGFNb2RlbDxUPj4oXG4gICAgZW50aXR5PzogUGFydGlhbDxUPiB8IHsgW25hbWU6IHN0cmluZ106IGFueSB9LFxuICAgIHsgYW5ub3RzLCByZXNldCB9OiB7IGFubm90cz86IE9EYXRhRW50aXR5QW5ub3RhdGlvbnM7IHJlc2V0PzogYm9vbGVhbiB9ID0ge31cbiAgKTogTSB7XG4gICAgbGV0IHJlc291cmNlOiBPRGF0YVJlc291cmNlPFQ+ID0gdGhpcyBhcyBPRGF0YVJlc291cmNlPFQ+O1xuICAgIGNvbnN0IHR5cGUgPSBhbm5vdHM/LnR5cGUgfHwgdGhpcy5yZXR1cm5UeXBlKCk7XG4gICAgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCkgdGhyb3cgRXJyb3IoJycpO1xuICAgIGNvbnN0IE1vZGVsID0gdGhpcy5hcGkubW9kZWxGb3JUeXBlKHR5cGUpO1xuICAgIGxldCBlbnRpdHlTZXQgPSBhbm5vdHM/LmVudGl0eVNldDtcbiAgICBpZiAoZW50aXR5U2V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc291cmNlID0gdGhpcy5hcGkuZW50aXR5U2V0PFQ+KGVudGl0eVNldCkuZW50aXR5KGVudGl0eSBhcyBQYXJ0aWFsPFQ+KTtcbiAgICAgIHJlc291cmNlLnF1ZXJ5KChxKSA9PiBxLmFwcGx5KHRoaXMucXVlcnlPcHRpb25zLnRvUXVlcnlBcmd1bWVudHMoKSkpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IE1vZGVsKGVudGl0eSwgeyByZXNvdXJjZSwgYW5ub3RzLCByZXNldCB9KSBhcyBNO1xuICB9XG5cbiAgYXNDb2xsZWN0aW9uPE0gZXh0ZW5kcyBPRGF0YU1vZGVsPFQ+LCBDIGV4dGVuZHMgT0RhdGFDb2xsZWN0aW9uPFQsIE0+PihcbiAgICBlbnRpdGllcz86IFBhcnRpYWw8VD5bXSB8IHsgW25hbWU6IHN0cmluZ106IGFueSB9W10sXG4gICAge1xuICAgICAgYW5ub3RzLFxuICAgICAgcmVzZXQsXG4gICAgfTogeyBhbm5vdHM/OiBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM7IHJlc2V0PzogYm9vbGVhbiB9ID0ge31cbiAgKTogQyB7XG4gICAgbGV0IHJlc291cmNlOiBPRGF0YVJlc291cmNlPFQ+ID0gdGhpcyBhcyBPRGF0YVJlc291cmNlPFQ+O1xuICAgIGNvbnN0IHR5cGUgPSBhbm5vdHM/LnR5cGUgfHwgdGhpcy5yZXR1cm5UeXBlKCk7XG4gICAgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCkgdGhyb3cgRXJyb3IoJycpO1xuICAgIGNvbnN0IENvbGxlY3Rpb24gPSB0aGlzLmFwaS5jb2xsZWN0aW9uRm9yVHlwZSh0eXBlKTtcbiAgICBsZXQgcGF0aCA9IGFubm90cz8uZW50aXR5U2V0O1xuICAgIGlmIChwYXRoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc291cmNlID0gdGhpcy5hcGkuZW50aXR5U2V0PFQ+KHBhdGgpO1xuICAgICAgcmVzb3VyY2UucXVlcnkoKHEpID0+IHEuYXBwbHkodGhpcy5xdWVyeU9wdGlvbnMudG9RdWVyeUFyZ3VtZW50cygpKSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQ29sbGVjdGlvbihlbnRpdGllcywgeyByZXNvdXJjZSwgYW5ub3RzLCByZXNldCB9KSBhcyBDO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIGlzU3VidHlwZU9mKG90aGVyOiBPRGF0YVJlc291cmNlPGFueT4pIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5zY2hlbWEgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgb3RoZXIuc2NoZW1hICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMuc2NoZW1hPy5pc1N1YnR5cGVPZihvdGhlci5zY2hlbWEpXG4gICAgKTtcbiAgfVxuXG4gIGlzU3VwZXJ0eXBlT2Yob3RoZXI6IE9EYXRhUmVzb3VyY2U8YW55Pikge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNjaGVtYSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBvdGhlci5zY2hlbWEgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5zY2hlbWE/LmlzU3VwZXJ0eXBlT2Yob3RoZXIuc2NoZW1hKVxuICAgICk7XG4gIH1cblxuICBpc0VxdWFsVG8ob3RoZXI6IE9EYXRhUmVzb3VyY2U8YW55PiwgdGVzdD86ICdwYXRoJyB8ICdwYXJhbXMnKSB7XG4gICAgY29uc3QgW3NlbGZQYXRoLCBzZWxmUGFyYW1zXSA9IHRoaXMucGF0aEFuZFBhcmFtcygpO1xuICAgIGNvbnN0IFtvdGhlclBhdGgsIG90aGVyUGFyYW1zXSA9IG90aGVyLnBhdGhBbmRQYXJhbXMoKTtcbiAgICByZXR1cm4gdGVzdCA9PT0gJ3BhdGgnXG4gICAgICA/IG90aGVyUGF0aCA9PT0gc2VsZlBhdGhcbiAgICAgIDogdGVzdCA9PT0gJ3BhcmFtcydcbiAgICAgID8gVHlwZXMuaXNFcXVhbChzZWxmUGFyYW1zLCBvdGhlclBhcmFtcylcbiAgICAgIDogb3RoZXJQYXRoID09PSBzZWxmUGF0aCAmJiBUeXBlcy5pc0VxdWFsKHNlbGZQYXJhbXMsIG90aGVyUGFyYW1zKTtcbiAgfVxuXG4gIHBhdGhBbmRQYXJhbXMoZXNjYXBlOiBib29sZWFuID0gZmFsc2UpOiBbc3RyaW5nLCB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfV0ge1xuICAgIGNvbnN0IFtzcGF0aCwgc3BhcmFtc10gPSB0aGlzLnBhdGhTZWdtZW50cy5wYXRoQW5kUGFyYW1zKGVzY2FwZSk7XG4gICAgY29uc3QgWywgcXBhcmFtc10gPSB0aGlzLnF1ZXJ5T3B0aW9ucy5wYXRoQW5kUGFyYW1zKGVzY2FwZSk7XG5cbiAgICByZXR1cm4gW3NwYXRoLCB7IC4uLnNwYXJhbXMsIC4uLnFwYXJhbXMgfV07XG4gIH1cblxuICBlbmRwb2ludFVybChwYXJhbXM6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgaWYgKHBhcmFtcykge1xuICAgICAgcmV0dXJuIGAke3RoaXMuYXBpLnNlcnZpY2VSb290VXJsfSR7dGhpc31gO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgW3BhdGhdID0gdGhpcy5wYXRoQW5kUGFyYW1zKCk7XG4gICAgICByZXR1cm4gYCR7dGhpcy5hcGkuc2VydmljZVJvb3RVcmx9JHtwYXRofWA7XG4gICAgfVxuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICBsZXQgW3BhdGgsIHBhcmFtc10gPSB0aGlzLnBhdGhBbmRQYXJhbXMoKTtcbiAgICBsZXQgcXVlcnlTdHJpbmcgPSBPYmplY3QuZW50cmllcyhwYXJhbXMpXG4gICAgICAubWFwKChlKSA9PiBgJHtlWzBdfSR7VkFMVUVfU0VQQVJBVE9SfSR7ZVsxXX1gKVxuICAgICAgLmpvaW4oUEFSQU1fU0VQQVJBVE9SKTtcbiAgICByZXR1cm4gcXVlcnlTdHJpbmcgPyBgJHtwYXRofSR7UVVFUllfU0VQQVJBVE9SfSR7cXVlcnlTdHJpbmd9YCA6IHBhdGg7XG4gIH1cblxuICBjbG9uZSgpOiBPRGF0YVJlc291cmNlPFQ+IHtcbiAgICBjb25zdCBDdG9yID0gdGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgT0RhdGFSZXNvdXJjZTtcbiAgICByZXR1cm4gbmV3IEN0b3IodGhpcy5hcGksIHtcbiAgICAgIHNjaGVtYTogdGhpcy5zY2hlbWEsXG4gICAgICBzZWdtZW50czogdGhpcy5jbG9uZVNlZ21lbnRzKCksXG4gICAgICBxdWVyeTogdGhpcy5jbG9uZVF1ZXJ5PFQ+KCksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9fcGFyc2VyKFxuICAgIHZhbHVlOiBhbnksXG4gICAgb3B0aW9ucz86IE9wdGlvbnNIZWxwZXIsXG4gICAgdHlwZT86IHN0cmluZ1xuICApOiBQYXJzZXI8VD4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGRhdGFUeXBlID1cbiAgICAgIG9wdGlvbnMgIT09IHVuZGVmaW5lZCAmJiBUeXBlcy5pc1BsYWluT2JqZWN0KHZhbHVlKVxuICAgICAgICA/IG9wdGlvbnMuaGVscGVyLnR5cGUodmFsdWUpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGlmIChkYXRhVHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBQYXJzZXIgZnJvbSBkYXRhIHR5cGVcbiAgICAgIHJldHVybiB0aGlzLmFwaS5wYXJzZXJGb3JUeXBlPFQ+KGRhdGFUeXBlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2NoZW1hICE9PSB1bmRlZmluZWQgJiYgJ3BhcnNlcicgaW4gdGhpcy5zY2hlbWEpIHtcbiAgICAgIC8vIFBhcnNlciBmcm9tIHJlc291cmNlIHNjaGVtYVxuICAgICAgcmV0dXJuICg8YW55PnRoaXMuc2NoZW1hKS5wYXJzZXIgYXMgUGFyc2VyPFQ+IHwgdW5kZWZpbmVkO1xuICAgIH0gZWxzZSBpZiAodHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBQYXJzZXIgZnJvbSByZXNvdXJjZSB0eXBlXG4gICAgICByZXR1cm4gdGhpcy5hcGkucGFyc2VyRm9yVHlwZTxUPih0eXBlKTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGRlc2VyaWFsaXplKHZhbHVlOiBhbnksIG9wdGlvbnM/OiBPcHRpb25zSGVscGVyKTogYW55IHtcbiAgICBjb25zdCByZXNvdXJjZVR5cGUgPSB0aGlzLnJldHVyblR5cGUoKTtcbiAgICBjb25zdCBfZCA9ICh2YWx1ZTogYW55LCBvcHRpb25zOiBPcHRpb25zSGVscGVyKSA9PiB7XG4gICAgICBjb25zdCBwYXJzZXIgPSB0aGlzLl9fcGFyc2VyKHZhbHVlLCBvcHRpb25zLCByZXNvdXJjZVR5cGUpO1xuICAgICAgcmV0dXJuIHBhcnNlciAhPT0gdW5kZWZpbmVkICYmICdkZXNlcmlhbGl6ZScgaW4gcGFyc2VyXG4gICAgICAgID8gcGFyc2VyLmRlc2VyaWFsaXplKHZhbHVlLCBvcHRpb25zKVxuICAgICAgICA6IHZhbHVlO1xuICAgIH07XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICA/IHZhbHVlLm1hcCgodikgPT4gX2Qodiwgb3B0aW9ucyB8fCB0aGlzLmFwaS5vcHRpb25zKSlcbiAgICAgIDogX2QodmFsdWUsIG9wdGlvbnMgfHwgdGhpcy5hcGkub3B0aW9ucyk7XG4gIH1cblxuICBzZXJpYWxpemUodmFsdWU6IGFueSwgb3B0aW9ucz86IE9wdGlvbnNIZWxwZXIpOiBhbnkge1xuICAgIGNvbnN0IHJlc291cmNlVHlwZSA9IHRoaXMudHlwZSgpO1xuICAgIGNvbnN0IF9zID0gKHZhbHVlOiBhbnksIG9wdGlvbnM6IE9wdGlvbnNIZWxwZXIpID0+IHtcbiAgICAgIGNvbnN0IHBhcnNlciA9IHRoaXMuX19wYXJzZXIodmFsdWUsIG9wdGlvbnMsIHJlc291cmNlVHlwZSk7XG4gICAgICByZXR1cm4gcGFyc2VyICE9PSB1bmRlZmluZWQgJiYgJ3NlcmlhbGl6ZScgaW4gcGFyc2VyXG4gICAgICAgID8gcGFyc2VyLnNlcmlhbGl6ZSh2YWx1ZSwgb3B0aW9ucylcbiAgICAgICAgOiB2YWx1ZTtcbiAgICB9O1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgPyB2YWx1ZS5tYXAoKHYpID0+IF9zKHYsIG9wdGlvbnMgfHwgdGhpcy5hcGkub3B0aW9ucykpXG4gICAgICA6IF9zKHZhbHVlLCBvcHRpb25zIHx8IHRoaXMuYXBpLm9wdGlvbnMpO1xuICB9XG5cbiAgZW5jb2RlKHZhbHVlOiBhbnksIG9wdGlvbnM/OiBPcHRpb25zSGVscGVyKTogYW55IHtcbiAgICBjb25zdCByZXNvdXJjZVR5cGUgPSB0aGlzLnR5cGUoKTtcbiAgICBjb25zdCBfZSA9ICh2YWx1ZTogYW55LCBvcHRpb25zOiBPcHRpb25zSGVscGVyKSA9PiB7XG4gICAgICBjb25zdCBwYXJzZXIgPSB0aGlzLl9fcGFyc2VyKHZhbHVlLCBvcHRpb25zLCByZXNvdXJjZVR5cGUpO1xuICAgICAgcmV0dXJuIHBhcnNlciAhPT0gdW5kZWZpbmVkICYmICdlbmNvZGUnIGluIHBhcnNlclxuICAgICAgICA/IHBhcnNlci5lbmNvZGUodmFsdWUsIG9wdGlvbnMpXG4gICAgICAgIDogdmFsdWU7XG4gICAgfTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgID8gdmFsdWUubWFwKCh2KSA9PiBfZSh2LCBvcHRpb25zIHx8IHRoaXMuYXBpLm9wdGlvbnMpKVxuICAgICAgOiBfZSh2YWx1ZSwgb3B0aW9ucyB8fCB0aGlzLmFwaS5vcHRpb25zKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VnbWVudHM6IHRoaXMucGF0aFNlZ21lbnRzLnRvSlNPTigpLFxuICAgICAgb3B0aW9uczogdGhpcy5xdWVyeU9wdGlvbnMudG9KU09OKCksXG4gICAgfTtcbiAgfVxuXG4gIGNsb25lU2VnbWVudHMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aFNlZ21lbnRzLmNsb25lKCk7XG4gIH1cblxuICAvLyNyZWdpb24gUXVlcnkgT3B0aW9uc1xuICBjbGVhclF1ZXJ5KCkge1xuICAgIHRoaXMucXVlcnlPcHRpb25zLmNsZWFyKCk7XG4gIH1cblxuICBjbG9uZVF1ZXJ5PFA+KCkge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5T3B0aW9ucy5jbG9uZTxQPigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgcGF0aCBzZWdtZW50cyBvZiB0aGUgcmVzb3VyY2VcbiAgICogQ3JlYXRlIGFuIG9iamVjdCBoYW5kbGVyIGZvciBtdXRhdGUgdGhlIHBhdGggc2VnbWVudHMgb2YgdGhlIHJlc291cmNlXG4gICAqIEBwYXJhbSBmIEZ1bmN0aW9uIGNvbnRleHQgZm9yIGhhbmRsZSB0aGUgc2VnbWVudHNcbiAgICogQHJldHVybnMgT0RhdGFBY3Rpb25SZXNvdXJjZVxuICAgKi9cbiAgc2VnbWVudChmOiAocTogT0RhdGFQYXRoU2VnbWVudHNIYW5kbGVyPFQ+KSA9PiB2b2lkKSB7XG4gICAgZihuZXcgT0RhdGFQYXRoU2VnbWVudHNIYW5kbGVyPFQ+KHRoaXMucGF0aFNlZ21lbnRzKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHRoZSBxdWVyeSBvcHRpb25zIG9mIHRoZSByZXNvdXJjZVxuICAgKiBDcmVhdGUgYW4gb2JqZWN0IGhhbmRsZXIgZm9yIG11dGF0ZSB0aGUgcXVlcnkgb3B0aW9ucyBvZiB0aGUgcmVzb3VyY2VcbiAgICogQHBhcmFtIGYgRnVuY3Rpb24gY29udGV4dCBmb3IgaGFuZGxlIHRoZSBxdWVyeSBvcHRpb25zXG4gICAqL1xuICBxdWVyeShmOiAocTogT0RhdGFRdWVyeU9wdGlvbnNIYW5kbGVyPFQ+KSA9PiB2b2lkKSB7XG4gICAgZihuZXcgT0RhdGFRdWVyeU9wdGlvbnNIYW5kbGVyPFQ+KHRoaXMucXVlcnlPcHRpb25zKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdGF0aWMgcmVzb2x2ZUtleTxUPihcbiAgICB2YWx1ZTogYW55LFxuICAgIHNjaGVtYT86IE9EYXRhU3RydWN0dXJlZFR5cGU8VD5cbiAgKTogRW50aXR5S2V5PFQ+IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoaXNRdWVyeUN1c3RvbVR5cGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIGlmIChUeXBlcy5pc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHNjaGVtYSBpbnN0YW5jZW9mIE9EYXRhU3RydWN0dXJlZFR5cGVcbiAgICAgICAgPyBzY2hlbWEucmVzb2x2ZUtleSh2YWx1ZSlcbiAgICAgICAgOiBPYmplY3RzLnJlc29sdmVLZXkodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWUgYXMgRW50aXR5S2V5PFQ+IHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc29sdmVLZXkodmFsdWU6IGFueSk6IEVudGl0eUtleTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIE9EYXRhUmVzb3VyY2UucmVzb2x2ZUtleTxUPihcbiAgICAgIHZhbHVlLFxuICAgICAgdGhpcy5zY2hlbWEgYXMgT0RhdGFTdHJ1Y3R1cmVkVHlwZTxUPlxuICAgICk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8gQmFzZSBSZXF1ZXN0c1xuICBwcm90ZWN0ZWQgcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBib2R5PzogYW55O1xuICAgICAgZXRhZz86IHN0cmluZztcbiAgICAgIHJlc3BvbnNlVHlwZT86XG4gICAgICAgIHwgJ2FycmF5YnVmZmVyJ1xuICAgICAgICB8ICdibG9iJ1xuICAgICAgICB8ICdqc29uJ1xuICAgICAgICB8ICd0ZXh0J1xuICAgICAgICB8ICd2YWx1ZSdcbiAgICAgICAgfCAncHJvcGVydHknXG4gICAgICAgIHwgJ2VudGl0eSdcbiAgICAgICAgfCAnZW50aXRpZXMnO1xuICAgICAgd2l0aENvdW50PzogYm9vbGVhbjtcbiAgICAgIGJvZHlRdWVyeU9wdGlvbnM/OiBRdWVyeU9wdGlvbk5hbWVzW107XG4gICAgfVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGFwaU9wdGlvbnMgPSB0aGlzLmFwaS5vcHRpb25zO1xuICAgIGxldCBwYXJhbXMgPSBvcHRpb25zLnBhcmFtcyB8fCB7fTtcbiAgICBpZiAob3B0aW9ucy53aXRoQ291bnQpIHtcbiAgICAgIHBhcmFtcyA9IEh0dHAubWVyZ2VIdHRwUGFyYW1zKHBhcmFtcywgYXBpT3B0aW9ucy5oZWxwZXIuY291bnRQYXJhbSgpKTtcbiAgICB9XG5cbiAgICBsZXQgZXRhZyA9IG9wdGlvbnMuZXRhZztcbiAgICBpZiAoZXRhZyA9PT0gdW5kZWZpbmVkICYmIFR5cGVzLmlzUGxhaW5PYmplY3Qob3B0aW9ucy5ib2R5KSkge1xuICAgICAgZXRhZyA9IGFwaU9wdGlvbnMuaGVscGVyLmV0YWcob3B0aW9ucy5ib2R5KTtcbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IE9EYXRhUmVxdWVzdCh7XG4gICAgICBtZXRob2QsXG4gICAgICBldGFnLFxuICAgICAgYm9keTogb3B0aW9ucy5ib2R5LFxuICAgICAgYXBpOiB0aGlzLmFwaSxcbiAgICAgIHJlc291cmNlOiB0aGlzLFxuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcbiAgICAgIGhlYWRlcnM6IG9wdGlvbnMuaGVhZGVycyxcbiAgICAgIHJlcG9ydFByb2dyZXNzOiBvcHRpb25zLnJlcG9ydFByb2dyZXNzLFxuICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgICByZXNwb25zZVR5cGU6IG9wdGlvbnMucmVzcG9uc2VUeXBlLFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdGlvbnMuZmV0Y2hQb2xpY3ksXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IG9wdGlvbnMud2l0aENyZWRlbnRpYWxzLFxuICAgICAgYm9keVF1ZXJ5T3B0aW9uczogb3B0aW9ucy5ib2R5UXVlcnlPcHRpb25zLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzJCA9IHRoaXMuYXBpLnJlcXVlc3QocmVxdWVzdCk7XG4gICAgc3dpdGNoIChvcHRpb25zLnJlc3BvbnNlVHlwZSkge1xuICAgICAgY2FzZSAnZW50aXRpZXMnOlxuICAgICAgICByZXR1cm4gcmVzJC5waXBlKG1hcCgocmVzOiBPRGF0YVJlc3BvbnNlPFQ+KSA9PiByZXMuZW50aXRpZXMoKSkpO1xuICAgICAgY2FzZSAnZW50aXR5JzpcbiAgICAgICAgcmV0dXJuIHJlcyQucGlwZShtYXAoKHJlczogT0RhdGFSZXNwb25zZTxUPikgPT4gcmVzLmVudGl0eSgpKSk7XG4gICAgICBjYXNlICdwcm9wZXJ0eSc6XG4gICAgICAgIHJldHVybiByZXMkLnBpcGUobWFwKChyZXM6IE9EYXRhUmVzcG9uc2U8VD4pID0+IHJlcy5wcm9wZXJ0eSgpKSk7XG4gICAgICBjYXNlICd2YWx1ZSc6XG4gICAgICAgIHJldHVybiByZXMkLnBpcGUobWFwKChyZXM6IE9EYXRhUmVzcG9uc2U8VD4pID0+IHJlcy52YWx1ZSgpIGFzIFQpKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIE90aGVyIHJlc3BvbnNlVHlwZXMgKGFycmF5YnVmZmVyLCBibG9iLCBqc29uLCB0ZXh0KSByZXR1cm4gYm9keVxuICAgICAgICByZXR1cm4gcmVzJC5waXBlKG1hcCgocmVzOiBPRGF0YVJlc3BvbnNlPFQ+KSA9PiByZXMuYm9keSkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQoXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgZXRhZz86IHN0cmluZztcbiAgICAgIHJlc3BvbnNlVHlwZT86XG4gICAgICAgIHwgJ2FycmF5YnVmZmVyJ1xuICAgICAgICB8ICdibG9iJ1xuICAgICAgICB8ICdqc29uJ1xuICAgICAgICB8ICd0ZXh0J1xuICAgICAgICB8ICd2YWx1ZSdcbiAgICAgICAgfCAncHJvcGVydHknXG4gICAgICAgIHwgJ2VudGl0eSdcbiAgICAgICAgfCAnZW50aXRpZXMnO1xuICAgICAgd2l0aENvdW50PzogYm9vbGVhbjtcbiAgICAgIGJvZHlRdWVyeU9wdGlvbnM/OiBRdWVyeU9wdGlvbk5hbWVzW107XG4gICAgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgnR0VUJywgb3B0aW9ucyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcG9zdChcbiAgICBib2R5OiBhbnksXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoJ1BPU1QnLCB7IGJvZHksIC4uLm9wdGlvbnMgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHV0KFxuICAgIGJvZHk6IGFueSxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoJ1BVVCcsIHsgYm9keSwgLi4ub3B0aW9ucyB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXRjaChcbiAgICBib2R5OiBhbnksXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgZXRhZz86IHN0cmluZztcbiAgICAgIHJlc3BvbnNlVHlwZT86XG4gICAgICAgIHwgJ2FycmF5YnVmZmVyJ1xuICAgICAgICB8ICdibG9iJ1xuICAgICAgICB8ICdqc29uJ1xuICAgICAgICB8ICd0ZXh0J1xuICAgICAgICB8ICd2YWx1ZSdcbiAgICAgICAgfCAncHJvcGVydHknXG4gICAgICAgIHwgJ2VudGl0eSdcbiAgICAgICAgfCAnZW50aXRpZXMnO1xuICAgICAgd2l0aENvdW50PzogYm9vbGVhbjtcbiAgICB9ID0ge31cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdQQVRDSCcsIHsgYm9keSwgLi4ub3B0aW9ucyB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkZWxldGUoXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgZXRhZz86IHN0cmluZztcbiAgICAgIHJlc3BvbnNlVHlwZT86XG4gICAgICAgIHwgJ2FycmF5YnVmZmVyJ1xuICAgICAgICB8ICdibG9iJ1xuICAgICAgICB8ICdqc29uJ1xuICAgICAgICB8ICd0ZXh0J1xuICAgICAgICB8ICd2YWx1ZSdcbiAgICAgICAgfCAncHJvcGVydHknXG4gICAgICAgIHwgJ2VudGl0eSdcbiAgICAgICAgfCAnZW50aXRpZXMnO1xuICAgICAgd2l0aENvdW50PzogYm9vbGVhbjtcbiAgICB9ID0ge31cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdERUxFVEUnLCBvcHRpb25zKTtcbiAgfVxufVxuIl19
@@ -1,5 +1,5 @@
1
1
  export class ODataAnnotations {
2
- constructor(helper, annotations = {}, context) {
2
+ constructor(helper, annotations = new Map(), context) {
3
3
  this.helper = helper;
4
4
  this.annotations = annotations;
5
5
  this.context = context;
@@ -16,7 +16,7 @@ export class ODataAnnotations {
16
16
  }
17
17
  export class ODataPropertyAnnotations extends ODataAnnotations {
18
18
  clone() {
19
- return new ODataPropertyAnnotations(this.helper, { ...this.annotations }, this.context);
19
+ return new ODataPropertyAnnotations(this.helper, new Map(this.annotations), this.context);
20
20
  }
21
21
  data(data) {
22
22
  return this.helper.property(data);
@@ -24,7 +24,7 @@ export class ODataPropertyAnnotations extends ODataAnnotations {
24
24
  }
25
25
  export class ODataEntityAnnotations extends ODataAnnotations {
26
26
  clone() {
27
- return new ODataEntityAnnotations(this.helper, { ...this.annotations }, this.context);
27
+ return new ODataEntityAnnotations(this.helper, new Map(this.annotations), this.context);
28
28
  }
29
29
  data(data) {
30
30
  return this.helper.entity(data);
@@ -63,7 +63,7 @@ export class ODataEntityAnnotations extends ODataAnnotations {
63
63
  return this._properties;
64
64
  }
65
65
  property(name) {
66
- return this.properties[name];
66
+ return this.properties.get(name);
67
67
  }
68
68
  get functions() {
69
69
  if (this._functions === undefined) {
@@ -77,7 +77,7 @@ export class ODataEntityAnnotations extends ODataAnnotations {
77
77
  }
78
78
  export class ODataEntitiesAnnotations extends ODataAnnotations {
79
79
  clone() {
80
- return new ODataEntitiesAnnotations(this.helper, { ...this.annotations }, this.context);
80
+ return new ODataEntitiesAnnotations(this.helper, new Map(this.annotations), this.context);
81
81
  }
82
82
  data(data) {
83
83
  return this.helper.entities(data);
@@ -116,4 +116,4 @@ export class ODataEntitiesAnnotations extends ODataAnnotations {
116
116
  return this.functions[name];
117
117
  }
118
118
  }
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy9hbm5vdGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE9BQWdCLGdCQUFnQjtJQUNwQyxZQUNTLE1BQTBCLEVBQ3ZCLGNBQXdDLEVBQUUsRUFDMUMsT0FBc0I7UUFGekIsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFDdkIsZ0JBQVcsR0FBWCxXQUFXLENBQStCO1FBQzFDLFlBQU8sR0FBUCxPQUFPLENBQWU7SUFDL0IsQ0FBQztJQUVKLFVBQVUsQ0FBSSxJQUE2QixFQUFFLFFBQTJCO1FBQ3RFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBTSxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQztJQUNsRSxDQUFDO0NBS0Y7QUFFRCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsZ0JBQWdCO0lBQzVELEtBQUs7UUFDSCxPQUFPLElBQUksd0JBQXdCLENBQ2pDLElBQUksQ0FBQyxNQUFNLEVBQ1gsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksQ0FBQyxJQUE2QjtRQUNoQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Q0FDRjtBQUVELE1B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QUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQzNFLE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDL0MsQ0FBQztJQUdELElBQUksU0FBUztRQUNYLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDM0Q7UUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUNELFFBQVEsQ0FBQyxJQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPRGF0YUNvbnRleHQsIE9EYXRhVmVyc2lvbkhlbHBlciB9IGZyb20gJy4uLy4uL2hlbHBlcic7XG5cbmltcG9ydCB7IE9EYXRhTWV0YWRhdGFUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgT0RhdGFBbm5vdGF0aW9ucyB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBoZWxwZXI6IE9EYXRhVmVyc2lvbkhlbHBlcixcbiAgICBwcm90ZWN0ZWQgYW5ub3RhdGlvbnM6IHsgW2Fubm90OiBzdHJpbmddOiBhbnkgfSA9IHt9LFxuICAgIHByb3RlY3RlZCBjb250ZXh0PzogT0RhdGFDb250ZXh0XG4gICkge31cblxuICBhdHRyaWJ1dGVzPFQ+KGRhdGE6IHsgW25hbWU6IHN0cmluZ106IGFueSB9LCBtZXRhZGF0YTogT0RhdGFNZXRhZGF0YVR5cGUpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuYXR0cmlidXRlcyhkYXRhLCBtZXRhZGF0YSkgYXMgVDtcbiAgfVxuXG4gIGdldCBlbnRpdHlTZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dD8uZW50aXR5U2V0O1xuICB9XG5cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLnR5cGUodGhpcy5hbm5vdGF0aW9ucykgfHwgdGhpcy5jb250ZXh0Py50eXBlO1xuICB9XG5cbiAgLy8gTWV0aG9kXG4gIGFic3RyYWN0IGNsb25lKCk6IE9EYXRhQW5ub3RhdGlvbnM7XG4gIGFic3RyYWN0IGRhdGEoZGF0YTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0pOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfTtcbn1cblxuZXhwb3J0IGNsYXNzIE9EYXRhUHJvcGVydHlBbm5vdGF0aW9ucyBleHRlbmRzIE9EYXRhQW5ub3RhdGlvbnMge1xuICBjbG9uZSgpOiBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnMge1xuICAgIHJldHVybiBuZXcgT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zKFxuICAgICAgdGhpcy5oZWxwZXIsXG4gICAgICB7IC4uLnRoaXMuYW5ub3RhdGlvbnMgfSxcbiAgICAgIHRoaXMuY29udGV4dFxuICAgICk7XG4gIH1cblxuICBkYXRhKGRhdGE6IHsgW25hbWU6IHN0cmluZ106IGFueSB9KSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLnByb3BlcnR5KGRhdGEpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPRGF0YUVudGl0eUFubm90YXRpb25zIGV4dGVuZHMgT0RhdGFBbm5vdGF0aW9ucyB7XG4gIGNsb25lKCk6IE9EYXRhRW50aXR5QW5ub3RhdGlvbnMge1xuICAgIHJldHVybiBuZXcgT0RhdGFFbnRpdHlBbm5vdGF0aW9ucyhcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgeyAuLi50aGlzLmFubm90YXRpb25zIH0sXG4gICAgICB0aGlzLmNvbnRleHRcbiAgICApO1xuICB9XG5cbiAgZGF0YShkYXRhOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5lbnRpdHkoZGF0YSk7XG4gIH1cblxuICBnZXQgaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmlkKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IGV0YWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmV0YWcodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgbWVkaWFFdGFnKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5tZWRpYUV0YWcodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgbWV0YWRhdGFFdGFnKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5tZXRhZGF0YUV0YWcodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgcmVhZExpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLnJlYWRMaW5rKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IGVkaXRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5lZGl0TGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBtZWRpYVJlYWRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5tZWRpYVJlYWRMaW5rKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG1lZGlhRWRpdExpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm1lZGlhRWRpdExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgbWVkaWFDb250ZW50VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIubWVkaWFDb250ZW50VHlwZSh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Byb3BlcnRpZXM/OiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfTtcbiAgZ2V0IHByb3BlcnRpZXMoKSB7XG4gICAgaWYgKHRoaXMuX3Byb3BlcnRpZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fcHJvcGVydGllcyA9IHRoaXMuaGVscGVyLnByb3BlcnRpZXModGhpcy5hbm5vdGF0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0aWVzO1xuICB9XG5cbiAgcHJvcGVydHkobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydGllc1tuYW1lXTtcbiAgfVxuXG4gIHByaXZhdGUgX2Z1bmN0aW9ucz86IHsgW25hbWU6IHN0cmluZ106IGFueSB9O1xuICBnZXQgZnVuY3Rpb25zKCkge1xuICAgIGlmICh0aGlzLl9mdW5jdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fZnVuY3Rpb25zID0gdGhpcy5oZWxwZXIuZnVuY3Rpb25zKHRoaXMuYW5ub3RhdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZnVuY3Rpb25zO1xuICB9XG5cbiAgZnVuY3Rpb24obmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZnVuY3Rpb25zW25hbWVdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnMgZXh0ZW5kcyBPRGF0YUFubm90YXRpb25zIHtcbiAgY2xvbmUoKTogT0RhdGFFbnRpdGllc0Fubm90YXRpb25zIHtcbiAgICByZXR1cm4gbmV3IE9EYXRhRW50aXRpZXNBbm5vdGF0aW9ucyhcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgeyAuLi50aGlzLmFubm90YXRpb25zIH0sXG4gICAgICB0aGlzLmNvbnRleHRcbiAgICApO1xuICB9XG5cbiAgZGF0YShkYXRhOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5lbnRpdGllcyhkYXRhKTtcbiAgfVxuXG4gIGdldCByZWFkTGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIucmVhZExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgY291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmNvdW50KHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG5leHRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5uZXh0TGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBkZWx0YUxpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmRlbHRhTGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCB0b3AoKSB7XG4gICAgbGV0IG1hdGNoID0gKHRoaXMubmV4dExpbmsgfHwgJycpLm1hdGNoKC9bJj9dezF9XFwkdG9wPShcXGQrKS8pO1xuICAgIHJldHVybiBtYXRjaCAhPT0gbnVsbCA/IE51bWJlcihtYXRjaFsxXSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgc2tpcCgpIHtcbiAgICBsZXQgbWF0Y2ggPSAodGhpcy5uZXh0TGluayB8fCAnJykubWF0Y2goL1smP117MX1cXCRza2lwPShcXGQrKS8pO1xuICAgIHJldHVybiBtYXRjaCAhPT0gbnVsbCA/IE51bWJlcihtYXRjaFsxXSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgc2tpcHRva2VuKCkge1xuICAgIGxldCBtYXRjaCA9ICh0aGlzLm5leHRMaW5rIHx8ICcnKS5tYXRjaCgvWyY/XXsxfVxcJHNraXB0b2tlbj0oW1xcZFxcd1xccyddKykvKTtcbiAgICByZXR1cm4gbWF0Y2ggIT09IG51bGwgPyBtYXRjaFsxXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgX2Z1bmN0aW9ucz86IHsgW25hbWU6IHN0cmluZ106IGFueSB9O1xuICBnZXQgZnVuY3Rpb25zKCkge1xuICAgIGlmICh0aGlzLl9mdW5jdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fZnVuY3Rpb25zID0gdGhpcy5oZWxwZXIuZnVuY3Rpb25zKHRoaXMuYW5ub3RhdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZnVuY3Rpb25zO1xuICB9XG4gIGZ1bmN0aW9uKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmZ1bmN0aW9uc1tuYW1lXTtcbiAgfVxufVxuIl19
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy9hbm5vdGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE9BQWdCLGdCQUFnQjtJQUNwQyxZQUNTLE1BQTBCLEVBQ3ZCLGNBQWdDLElBQUksR0FBRyxFQUFlLEVBQ3RELE9BQXNCO1FBRnpCLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQ3ZCLGdCQUFXLEdBQVgsV0FBVyxDQUEyQztRQUN0RCxZQUFPLEdBQVAsT0FBTyxDQUFlO0lBQy9CLENBQUM7SUFFSixVQUFVLENBQUksSUFBNEIsRUFBRSxRQUEyQjtRQUNyRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxRQUFRLENBQU0sQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUM7SUFDbEUsQ0FBQztDQUtGO0FBRUQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGdCQUFnQjtJQUM1RCxLQUFLO1FBQ0gsT0FBTyxJQUFJLHdCQUF3QixDQUNqQyxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksQ0FBQyxJQUE0QjtRQUMvQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxnQkFBZ0I7SUFDMUQsS0FBSztRQUNILE9BQU8sSUFBSSxzQkFBc0IsQ0FDL0IsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQ3pCLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUMsSUFBNEI7UUFDL0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxFQUFFO1FBQ0osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFHRCxJQUFJLFVBQVU7UUFDWixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzdEO1FBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFHRCxJQUFJLFNBQVM7UUFDWCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzNEO1FBQ0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGdCQUFnQjtJQUM1RCxLQUFLO1FBQ0gsT0FBTyxJQUFJLHdCQUF3QixDQUNqQyxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksQ0FBQyxJQUE0QjtRQUMvQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0wsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzlELE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdkQsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMvRCxPQUFPLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDM0UsT0FBTyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMvQyxDQUFDO0lBR0QsSUFBSSxTQUFTO1FBQ1gsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUMzRDtRQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsUUFBUSxDQUFDLElBQVk7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9EYXRhQ29udGV4dCwgT0RhdGFWZXJzaW9uSGVscGVyIH0gZnJvbSAnLi4vLi4vaGVscGVyJztcblxuaW1wb3J0IHsgT0RhdGFNZXRhZGF0YVR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBPRGF0YUFubm90YXRpb25zIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGhlbHBlcjogT0RhdGFWZXJzaW9uSGVscGVyLFxuICAgIHByb3RlY3RlZCBhbm5vdGF0aW9uczogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCksIFxuICAgIHByb3RlY3RlZCBjb250ZXh0PzogT0RhdGFDb250ZXh0XG4gICkge31cblxuICBhdHRyaWJ1dGVzPFQ+KGRhdGE6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIG1ldGFkYXRhOiBPRGF0YU1ldGFkYXRhVHlwZSk6IFQge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5hdHRyaWJ1dGVzKGRhdGEsIG1ldGFkYXRhKSBhcyBUO1xuICB9XG5cbiAgZ2V0IGVudGl0eVNldCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0Py5lbnRpdHlTZXQ7XG4gIH1cblxuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIudHlwZSh0aGlzLmFubm90YXRpb25zKSB8fCB0aGlzLmNvbnRleHQ/LnR5cGU7XG4gIH1cblxuICAvLyBNZXRob2RcbiAgYWJzdHJhY3QgY2xvbmUoKTogT0RhdGFBbm5vdGF0aW9ucztcbiAgYWJzdHJhY3QgZGF0YShkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbn1cblxuZXhwb3J0IGNsYXNzIE9EYXRhUHJvcGVydHlBbm5vdGF0aW9ucyBleHRlbmRzIE9EYXRhQW5ub3RhdGlvbnMge1xuICBjbG9uZSgpOiBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnMge1xuICAgIHJldHVybiBuZXcgT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zKFxuICAgICAgdGhpcy5oZWxwZXIsXG4gICAgICBuZXcgTWFwKHRoaXMuYW5ub3RhdGlvbnMpLFxuICAgICAgdGhpcy5jb250ZXh0XG4gICAgKTtcbiAgfVxuXG4gIGRhdGEoZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5wcm9wZXJ0eShkYXRhKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT0RhdGFFbnRpdHlBbm5vdGF0aW9ucyBleHRlbmRzIE9EYXRhQW5ub3RhdGlvbnMge1xuICBjbG9uZSgpOiBPRGF0YUVudGl0eUFubm90YXRpb25zIHtcbiAgICByZXR1cm4gbmV3IE9EYXRhRW50aXR5QW5ub3RhdGlvbnMoXG4gICAgICB0aGlzLmhlbHBlcixcbiAgICAgIG5ldyBNYXAodGhpcy5hbm5vdGF0aW9ucyksXG4gICAgICB0aGlzLmNvbnRleHRcbiAgICApO1xuICB9XG5cbiAgZGF0YShkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmVudGl0eShkYXRhKTtcbiAgfVxuXG4gIGdldCBpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuaWQodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgZXRhZygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuZXRhZyh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBtZWRpYUV0YWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm1lZGlhRXRhZyh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBtZXRhZGF0YUV0YWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm1ldGFkYXRhRXRhZyh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCByZWFkTGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIucmVhZExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgZWRpdExpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmVkaXRMaW5rKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG1lZGlhUmVhZExpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm1lZGlhUmVhZExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgbWVkaWFFZGl0TGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIubWVkaWFFZGl0TGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBtZWRpYUNvbnRlbnRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5tZWRpYUNvbnRlbnRUeXBlKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJvcGVydGllcz86IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIGFueT4+O1xuICBnZXQgcHJvcGVydGllcygpIHtcbiAgICBpZiAodGhpcy5fcHJvcGVydGllcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9wcm9wZXJ0aWVzID0gdGhpcy5oZWxwZXIucHJvcGVydGllcyh0aGlzLmFubm90YXRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3Byb3BlcnRpZXM7XG4gIH1cblxuICBwcm9wZXJ0eShuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0aWVzLmdldChuYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Z1bmN0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIGdldCBmdW5jdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuX2Z1bmN0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9mdW5jdGlvbnMgPSB0aGlzLmhlbHBlci5mdW5jdGlvbnModGhpcy5hbm5vdGF0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9mdW5jdGlvbnM7XG4gIH1cblxuICBmdW5jdGlvbihuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5mdW5jdGlvbnNbbmFtZV07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9EYXRhRW50aXRpZXNBbm5vdGF0aW9ucyBleHRlbmRzIE9EYXRhQW5ub3RhdGlvbnMge1xuICBjbG9uZSgpOiBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnMge1xuICAgIHJldHVybiBuZXcgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zKFxuICAgICAgdGhpcy5oZWxwZXIsXG4gICAgICBuZXcgTWFwKHRoaXMuYW5ub3RhdGlvbnMpLFxuICAgICAgdGhpcy5jb250ZXh0XG4gICAgKTtcbiAgfVxuXG4gIGRhdGEoZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5lbnRpdGllcyhkYXRhKTtcbiAgfVxuXG4gIGdldCByZWFkTGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIucmVhZExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgY291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmNvdW50KHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG5leHRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5uZXh0TGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBkZWx0YUxpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmRlbHRhTGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCB0b3AoKSB7XG4gICAgbGV0IG1hdGNoID0gKHRoaXMubmV4dExpbmsgfHwgJycpLm1hdGNoKC9bJj9dezF9XFwkdG9wPShcXGQrKS8pO1xuICAgIHJldHVybiBtYXRjaCAhPT0gbnVsbCA/IE51bWJlcihtYXRjaFsxXSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgc2tpcCgpIHtcbiAgICBsZXQgbWF0Y2ggPSAodGhpcy5uZXh0TGluayB8fCAnJykubWF0Y2goL1smP117MX1cXCRza2lwPShcXGQrKS8pO1xuICAgIHJldHVybiBtYXRjaCAhPT0gbnVsbCA/IE51bWJlcihtYXRjaFsxXSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgc2tpcHRva2VuKCkge1xuICAgIGxldCBtYXRjaCA9ICh0aGlzLm5leHRMaW5rIHx8ICcnKS5tYXRjaCgvWyY/XXsxfVxcJHNraXB0b2tlbj0oW1xcZFxcd1xccyddKykvKTtcbiAgICByZXR1cm4gbWF0Y2ggIT09IG51bGwgPyBtYXRjaFsxXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgX2Z1bmN0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIGdldCBmdW5jdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuX2Z1bmN0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9mdW5jdGlvbnMgPSB0aGlzLmhlbHBlci5mdW5jdGlvbnModGhpcy5hbm5vdGF0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9mdW5jdGlvbnM7XG4gIH1cbiAgZnVuY3Rpb24obmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZnVuY3Rpb25zW25hbWVdO1xuICB9XG59XG4iXX0=
@@ -96,13 +96,13 @@ export class ODataResponse extends HttpResponse {
96
96
  if (key) {
97
97
  const etag = this.headers.get(key);
98
98
  if (etag)
99
- options.helper.etag(this._annotations, etag);
99
+ this._annotations.set(options.helper.ODATA_ETAG, etag);
100
100
  }
101
101
  key = Http.resolveHeaderKey(this.headers, ODATA_ENTITYID_HEADERS);
102
102
  if (key) {
103
103
  const entityId = this.headers.get(key);
104
104
  if (entityId)
105
- options.helper.id(this._annotations, entityId);
105
+ this._annotations.set(options.helper.ODATA_ID, entityId);
106
106
  }
107
107
  }
108
108
  return this._annotations;
@@ -167,4 +167,4 @@ export class ODataResponse extends HttpResponse {
167
167
  return value;
168
168
  }
169
169
  }
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy9yZXNwb25zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsd0JBQXdCLEVBQ3hCLHdCQUF3QixHQUN6QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHMUMsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLGFBQWEsRUFDYixlQUFlLEVBQ2YsWUFBWSxFQUNaLHNCQUFzQixHQUN2QixNQUFNLGlCQUFpQixDQUFDO0FBR3pCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHeEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBaUIsU0FBUSxZQUFlO0lBSW5ELFlBQVksSUFRWDtRQUNDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBSSxHQUFvQixFQUFFLEdBQW9CO1FBQ25FLE9BQU8sSUFBSSxhQUFhLENBQUk7WUFDMUIsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHO1lBQ1osUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1lBQ3RCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtZQUNkLE9BQU8sRUFBRSxH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QUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBTSxDQUFDO1FBQzNFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7XG4gIE9EYXRhRW50aXR5QW5ub3RhdGlvbnMsXG4gIE9EYXRhRW50aXRpZXNBbm5vdGF0aW9ucyxcbiAgT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zLFxufSBmcm9tICcuL2Fubm90YXRpb25zJztcbmltcG9ydCB7IFR5cGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXMnO1xuaW1wb3J0IHsgT0RhdGFSZXNvdXJjZSB9IGZyb20gJy4uL3Jlc291cmNlJztcbmltcG9ydCB7IE9EYXRhRW50aXRpZXMsIE9EYXRhRW50aXR5LCBPRGF0YVByb3BlcnR5IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBBUFBMSUNBVElPTl9KU09OLFxuICBPREFUQV9WRVJTSU9OX0hFQURFUlMsXG4gIENPTlRFTlRfVFlQRSxcbiAgQ0FDSEVfQ09OVFJPTCxcbiAgTE9DQVRJT05fSEVBREVSLFxuICBFVEFHX0hFQURFUlMsXG4gIE9EQVRBX0VOVElUWUlEX0hFQURFUlMsXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBPRGF0YUFwaSB9IGZyb20gJy4uLy4uL2FwaSc7XG5pbXBvcnQgeyBPRGF0YVJlcXVlc3QgfSBmcm9tICcuLi9yZXF1ZXN0JztcbmltcG9ydCB7IE9EYXRhUmVzcG9uc2VPcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zJztcbmltcG9ydCB7IEh0dHAgfSBmcm9tICcuLi8uLi91dGlscy9odHRwJztcbmltcG9ydCB7IE9EYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uL2hlbHBlcic7XG5cbi8qKlxuICogT0RhdGEgUmVzcG9uc2VcbiAqL1xuZXhwb3J0IGNsYXNzIE9EYXRhUmVzcG9uc2U8VD4gZXh0ZW5kcyBIdHRwUmVzcG9uc2U8VD4ge1xuICByZWFkb25seSBhcGk6IE9EYXRhQXBpO1xuICByZWFkb25seSByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPjtcblxuICBjb25zdHJ1Y3Rvcihpbml0OiB7XG4gICAgYXBpOiBPRGF0YUFwaTtcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPjtcbiAgICBib2R5OiBUIHwgbnVsbDtcbiAgICBoZWFkZXJzOiBIdHRwSGVhZGVycztcbiAgICBzdGF0dXM6IG51bWJlcjtcbiAgICBzdGF0dXNUZXh0OiBzdHJpbmc7XG4gICAgdXJsPzogc3RyaW5nO1xuICB9KSB7XG4gICAgc3VwZXIoaW5pdCk7XG4gICAgdGhpcy5hcGkgPSBpbml0LmFwaTtcbiAgICB0aGlzLnJlc291cmNlID0gaW5pdC5yZXNvdXJjZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSHR0cFJlc3BvbnNlPFQ+KHJlcTogT0RhdGFSZXF1ZXN0PFQ+LCByZXM6IEh0dHBSZXNwb25zZTxUPikge1xuICAgIHJldHVybiBuZXcgT0RhdGFSZXNwb25zZTxUPih7XG4gICAgICBhcGk6IHJlcS5hcGksXG4gICAgICByZXNvdXJjZTogcmVxLnJlc291cmNlLFxuICAgICAgYm9keTogcmVzLmJvZHksXG4gICAgICBoZWFkZXJzOiByZXMuaGVhZGVycyxcbiAgICAgIHN0YXR1czogcmVzLnN0YXR1cyxcbiAgICAgIHN0YXR1c1RleHQ6IHJlcy5zdGF0dXNUZXh0LFxuICAgICAgdXJsOiByZXMudXJsIHx8IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTjxUPihcbiAgICByZXE6IE9EYXRhUmVxdWVzdDxUPixcbiAgICBqc29uOiB7XG4gICAgICBib2R5OiBUIHwgbnVsbDtcbiAgICAgIGhlYWRlcnM6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIH07XG4gICAgICBzdGF0dXM6IG51bWJlcjtcbiAgICAgIHN0YXR1c1RleHQ6IHN0cmluZztcbiAgICAgIHVybDogc3RyaW5nIHwgbnVsbDtcbiAgICB9XG4gICkge1xuICAgIHJldHVybiBuZXcgT0RhdGFSZXNwb25zZTxUPih7XG4gICAgICBhcGk6IHJlcS5hcGksXG4gICAgICByZXNvdXJjZTogcmVxLnJlc291cmNlLFxuICAgICAgYm9keToganNvbi5ib2R5LFxuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKGpzb24uaGVhZGVycyksXG4gICAgICBzdGF0dXM6IGpzb24uc3RhdHVzLFxuICAgICAgc3RhdHVzVGV4dDoganNvbi5zdGF0dXNUZXh0LFxuICAgICAgdXJsOiBqc29uLnVybCB8fCB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJvZHk6IHRoaXMuYm9keSxcbiAgICAgIGhlYWRlcnM6IHRoaXMuaGVhZGVyc1xuICAgICAgICAua2V5cygpXG4gICAgICAgIC5tYXAoKG5hbWUpID0+ICh7IFtuYW1lXTogdGhpcy5oZWFkZXJzLmdldEFsbChuYW1lKSB8fCBbXSB9KSlcbiAgICAgICAgLnJlZHVjZSgoYWNjLCBoZWFkZXIpID0+IE9iamVjdC5hc3NpZ24oYWNjLCBoZWFkZXIpLCB7fSksXG4gICAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLFxuICAgICAgc3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0LFxuICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfb3B0aW9ucz86IE9EYXRhUmVzcG9uc2VPcHRpb25zO1xuICBnZXQgb3B0aW9ucygpOiBPRGF0YVJlc3BvbnNlT3B0aW9ucyB7XG4gICAgaWYgKHRoaXMuX29wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fb3B0aW9ucyA9IG5ldyBPRGF0YVJlc3BvbnNlT3B0aW9ucyh0aGlzLmFwaS5vcHRpb25zKTtcbiAgICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gdGhpcy5oZWFkZXJzLmdldChDT05URU5UX1RZUEUpO1xuICAgICAgaWYgKGNvbnRlbnRUeXBlICYmIGNvbnRlbnRUeXBlLmluZGV4T2YoQVBQTElDQVRJT05fSlNPTikgIT09IC0xKSB7XG4gICAgICAgIGNvbnN0IGZlYXR1cmVzID0gY29udGVudFR5cGVcbiAgICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAgIC5maW5kKChwKSA9PiBwLnN0YXJ0c1dpdGgoQVBQTElDQVRJT05fSlNPTikpIGFzIHN0cmluZztcbiAgICAgICAgdGhpcy5fb3B0aW9ucy5zZXRGZWF0dXJlcyhmZWF0dXJlcyk7XG4gICAgICB9XG4gICAgICBjb25zdCBoZWFkZXIgPSBIdHRwLnJlc29sdmVIZWFkZXJLZXkodGhpcy5oZWFkZXJzLCBPREFUQV9WRVJTSU9OX0hFQURFUlMpO1xuICAgICAgaWYgKGhlYWRlcikge1xuICAgICAgICBjb25zdCB2ZXJzaW9uID0gKHRoaXMuaGVhZGVycy5nZXQoaGVhZGVyKSB8fCAnJykucmVwbGFjZSgvXFw7L2csICcnKSBhc1xuICAgICAgICAgIHwgJzIuMCdcbiAgICAgICAgICB8ICczLjAnXG4gICAgICAgICAgfCAnNC4wJztcbiAgICAgICAgdGhpcy5fb3B0aW9ucy5zZXRWZXJzaW9uKHZlcnNpb24pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMuaGVhZGVycy5nZXQoTE9DQVRJT05fSEVBREVSKTtcbiAgICAgIGlmIChsb2NhdGlvbikge1xuICAgICAgICB0aGlzLl9vcHRpb25zLnNldExvY2F0aW9uKGxvY2F0aW9uKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2FjaGVDb250cm9sID0gdGhpcy5oZWFkZXJzLmdldChDQUNIRV9DT05UUk9MKTtcbiAgICAgIGlmIChjYWNoZUNvbnRyb2wpIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucy5zZXRDYWNoZShjYWNoZUNvbnRyb2wpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgX3BheWxvYWQ/OiBhbnk7XG4gIGdldCBwYXlsb2FkKCkge1xuICAgIGlmICh0aGlzLl9wYXlsb2FkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3BheWxvYWQgPVxuICAgICAgICB0aGlzLmJvZHkgJiYgdGhpcy5vcHRpb25zLnZlcnNpb24gPT09ICcyLjAnXG4gICAgICAgICAgPyAoPGFueT50aGlzLmJvZHkpWydkJ11cbiAgICAgICAgICA6IHRoaXMuYm9keTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3BheWxvYWQ7XG4gIH1cblxuICBwcml2YXRlIF9jb250ZXh0PzogYW55O1xuICBnZXQgY29udGV4dCgpOiBPRGF0YUNvbnRleHQge1xuICAgIGlmICh0aGlzLl9jb250ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX2NvbnRleHQgPSB0aGlzLm9wdGlvbnMuaGVscGVyLmNvbnRleHQoXG4gICAgICAgIFR5cGVzLmlzUGxhaW5PYmplY3QodGhpcy5wYXlsb2FkKSA/IHRoaXMucGF5bG9hZCA6IHt9XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY29udGV4dDtcbiAgfVxuXG4gIHByaXZhdGUgX2Fubm90YXRpb25zPzogYW55O1xuICBnZXQgYW5ub3RhdGlvbnMoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIGlmICh0aGlzLl9hbm5vdGF0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgICAgdGhpcy5fYW5ub3RhdGlvbnMgPSBvcHRpb25zLmhlbHBlci5hbm5vdGF0aW9ucyh0aGlzLnBheWxvYWQgfHwge30pO1xuICAgICAgbGV0IGtleSA9IEh0dHAucmVzb2x2ZUhlYWRlcktleSh0aGlzLmhlYWRlcnMsIEVUQUdfSEVBREVSUyk7XG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIGNvbnN0IGV0YWcgPSB0aGlzLmhlYWRlcnMuZ2V0KGtleSk7XG4gICAgICAgIGlmIChldGFnKSBvcHRpb25zLmhlbHBlci5ldGFnKHRoaXMuX2Fubm90YXRpb25zLCBldGFnKTtcbiAgICAgIH1cbiAgICAgIGtleSA9IEh0dHAucmVzb2x2ZUhlYWRlcktleSh0aGlzLmhlYWRlcnMsIE9EQVRBX0VOVElUWUlEX0hFQURFUlMpO1xuICAgICAgaWYgKGtleSkge1xuICAgICAgICBjb25zdCBlbnRpdHlJZCA9IHRoaXMuaGVhZGVycy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKGVudGl0eUlkKSBvcHRpb25zLmhlbHBlci5pZCh0aGlzLl9hbm5vdGF0aW9ucywgZW50aXR5SWQpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fYW5ub3RhdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHRoZSByZXNwb25zZSBib2R5IGFzIGFuIGVudGl0eVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZW50aXR5KCk6IE9EYXRhRW50aXR5PFQ+IHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgIGNvbnN0IHBheWxvYWQgPSB0aGlzLnBheWxvYWQ7XG4gICAgY29uc3QgYW5ub3RzID0gbmV3IE9EYXRhRW50aXR5QW5ub3RhdGlvbnMoXG4gICAgICBvcHRpb25zLmhlbHBlcixcbiAgICAgIHRoaXMuYW5ub3RhdGlvbnMsXG4gICAgICB0aGlzLmNvbnRleHRcbiAgICApO1xuICAgIGNvbnN0IGRhdGEgPSBwYXlsb2FkID8gYW5ub3RzLmRhdGEocGF5bG9hZCkgOiBudWxsO1xuICAgIGxldCBlbnRpdHkgPSAoXG4gICAgICBkYXRhICE9PSBudWxsICYmIFR5cGVzLmlzUGxhaW5PYmplY3QoZGF0YSlcbiAgICAgICAgPyBvcHRpb25zLmhlbHBlci5hdHRyaWJ1dGVzKGRhdGEsIHRoaXMuYXBpLm9wdGlvbnMuc3RyaXBNZXRhZGF0YSlcbiAgICAgICAgOiBkYXRhXG4gICAgKSBhcyBUIHwgbnVsbDtcblxuICAgIGlmIChlbnRpdHkgIT09IG51bGwpXG4gICAgICBlbnRpdHkgPSB0aGlzLnJlc291cmNlLmRlc2VyaWFsaXplKGVudGl0eSwgb3B0aW9ucykgYXMgVDtcbiAgICByZXR1cm4geyBlbnRpdHksIGFubm90cyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgcmVzcG9uc2UgYm9keSBhcyBlbnRpdGllc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZW50aXRpZXMoKTogT0RhdGFFbnRpdGllczxUPiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5wYXlsb2FkO1xuICAgIGNvbnN0IGFubm90cyA9IG5ldyBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnMoXG4gICAgICBvcHRpb25zLmhlbHBlcixcbiAgICAgIHRoaXMuYW5ub3RhdGlvbnMsXG4gICAgICB0aGlzLmNvbnRleHRcbiAgICApO1xuICAgIGxldCBlbnRpdGllcyA9IHBheWxvYWQgPyBhbm5vdHMuZGF0YShwYXlsb2FkKSA6IG51bGw7XG5cbiAgICBpZiAoZW50aXRpZXMgIT09IG51bGwpXG4gICAgICBlbnRpdGllcyA9IHRoaXMucmVzb3VyY2UuZGVzZXJpYWxpemUoZW50aXRpZXMsIG9wdGlvbnMpIGFzIFRbXTtcbiAgICByZXR1cm4geyBlbnRpdGllcywgYW5ub3RzIH07XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHRoZSByZXNwb25zZSBib2R5IGFzIGEgcHJvcGVydHlcbiAgICogQHJldHVybnNcbiAgICovXG4gIHByb3BlcnR5KCk6IE9EYXRhUHJvcGVydHk8VD4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgY29uc3QgcGF5bG9hZCA9IHRoaXMucGF5bG9hZDtcbiAgICBjb25zdCBhbm5vdHMgPSBuZXcgT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zKFxuICAgICAgb3B0aW9ucy5oZWxwZXIsXG4gICAgICB0aGlzLmFubm90YXRpb25zLFxuICAgICAgdGhpcy5jb250ZXh0XG4gICAgKTtcbiAgICBjb25zdCBkYXRhID0gcGF5bG9hZCA/IChhbm5vdHMuZGF0YShwYXlsb2FkKSBhcyBUKSA6IG51bGw7XG4gICAgbGV0IHByb3BlcnR5ID0gKFxuICAgICAgZGF0YSAhPT0gbnVsbCAmJiBUeXBlcy5pc1BsYWluT2JqZWN0KGRhdGEpXG4gICAgICAgID8gb3B0aW9ucy5oZWxwZXIuYXR0cmlidXRlcyhkYXRhLCB0aGlzLmFwaS5vcHRpb25zLnN0cmlwTWV0YWRhdGEpXG4gICAgICAgIDogZGF0YVxuICAgICkgYXMgVCB8IG51bGw7XG5cbiAgICBpZiAocHJvcGVydHkgIT09IG51bGwpXG4gICAgICBwcm9wZXJ0eSA9IHRoaXMucmVzb3VyY2UuZGVzZXJpYWxpemUocHJvcGVydHksIG9wdGlvbnMpIGFzIFQ7XG4gICAgcmV0dXJuIHsgcHJvcGVydHksIGFubm90cyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgcmVzcG9uc2UgYm9keSBhcyBhIHZhbHVlXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICB2YWx1ZSgpOiBUIHwgbnVsbCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5wYXlsb2FkO1xuICAgIGxldCB2YWx1ZSA9IChcbiAgICAgIHBheWxvYWQgIT09IG51bGwgJiYgVHlwZXMuaXNQbGFpbk9iamVjdChwYXlsb2FkKVxuICAgICAgICA/IG9wdGlvbnMuaGVscGVyLmF0dHJpYnV0ZXMocGF5bG9hZCwgdGhpcy5hcGkub3B0aW9ucy5zdHJpcE1ldGFkYXRhKVxuICAgICAgICA6IHBheWxvYWRcbiAgICApIGFzIFQgfCBudWxsO1xuXG4gICAgaWYgKHZhbHVlICE9PSBudWxsKSB2YWx1ZSA9IHRoaXMucmVzb3VyY2UuZGVzZXJpYWxpemUodmFsdWUsIG9wdGlvbnMpIGFzIFQ7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG4iXX0=
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy9yZXNwb25zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsd0JBQXdCLEVBQ3hCLHdCQUF3QixHQUN6QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHMUMsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLGFBQWEsRUFDYixlQUFlLEVBQ2YsWUFBWSxFQUNaLHNCQUFzQixHQUN2QixNQUFNLGlCQUFpQixDQUFDO0FBR3pCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHeEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBaUIsU0FBUSxZQUFlO0lBSW5ELFlBQVksSUFRWDtRQUNDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBSSxHQUFvQixFQUFFLEdBQW9CO1FBQ25FLE9BQU8sSUFBSSxhQUFhLENBQUk7WUFDMUIsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHO1lBQ1osUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1lBQ3RCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtZQUNkLE9BQU8sRUFBRSxH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QUssSUFBSTtZQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFNLENBQUM7UUFDM0UsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGVhZGVycywgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgT0RhdGFFbnRpdHlBbm5vdGF0aW9ucyxcbiAgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zLFxuICBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnMsXG59IGZyb20gJy4vYW5ub3RhdGlvbnMnO1xuaW1wb3J0IHsgVHlwZXMgfSBmcm9tICcuLi8uLi91dGlscy90eXBlcyc7XG5pbXBvcnQgeyBPRGF0YVJlc291cmNlIH0gZnJvbSAnLi4vcmVzb3VyY2UnO1xuaW1wb3J0IHsgT0RhdGFFbnRpdGllcywgT0RhdGFFbnRpdHksIE9EYXRhUHJvcGVydHkgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7XG4gIEFQUExJQ0FUSU9OX0pTT04sXG4gIE9EQVRBX1ZFUlNJT05fSEVBREVSUyxcbiAgQ09OVEVOVF9UWVBFLFxuICBDQUNIRV9DT05UUk9MLFxuICBMT0NBVElPTl9IRUFERVIsXG4gIEVUQUdfSEVBREVSUyxcbiAgT0RBVEFfRU5USVRZSURfSEVBREVSUyxcbn0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9EYXRhQXBpIH0gZnJvbSAnLi4vLi4vYXBpJztcbmltcG9ydCB7IE9EYXRhUmVxdWVzdCB9IGZyb20gJy4uL3JlcXVlc3QnO1xuaW1wb3J0IHsgT0RhdGFSZXNwb25zZU9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMnO1xuaW1wb3J0IHsgSHR0cCB9IGZyb20gJy4uLy4uL3V0aWxzL2h0dHAnO1xuaW1wb3J0IHsgT0RhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vaGVscGVyJztcblxuLyoqXG4gKiBPRGF0YSBSZXNwb25zZVxuICovXG5leHBvcnQgY2xhc3MgT0RhdGFSZXNwb25zZTxUPiBleHRlbmRzIEh0dHBSZXNwb25zZTxUPiB7XG4gIHJlYWRvbmx5IGFwaTogT0RhdGFBcGk7XG4gIHJlYWRvbmx5IHJlc291cmNlOiBPRGF0YVJlc291cmNlPFQ+O1xuXG4gIGNvbnN0cnVjdG9yKGluaXQ6IHtcbiAgICBhcGk6IE9EYXRhQXBpO1xuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPFQ+O1xuICAgIGJvZHk6IFQgfCBudWxsO1xuICAgIGhlYWRlcnM6IEh0dHBIZWFkZXJzO1xuICAgIHN0YXR1czogbnVtYmVyO1xuICAgIHN0YXR1c1RleHQ6IHN0cmluZztcbiAgICB1cmw/OiBzdHJpbmc7XG4gIH0pIHtcbiAgICBzdXBlcihpbml0KTtcbiAgICB0aGlzLmFwaSA9IGluaXQuYXBpO1xuICAgIHRoaXMucmVzb3VyY2UgPSBpbml0LnJlc291cmNlO1xuICB9XG5cbiAgc3RhdGljIGZyb21IdHRwUmVzcG9uc2U8VD4ocmVxOiBPRGF0YVJlcXVlc3Q8VD4sIHJlczogSHR0cFJlc3BvbnNlPFQ+KSB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YVJlc3BvbnNlPFQ+KHtcbiAgICAgIGFwaTogcmVxLmFwaSxcbiAgICAgIHJlc291cmNlOiByZXEucmVzb3VyY2UsXG4gICAgICBib2R5OiByZXMuYm9keSxcbiAgICAgIGhlYWRlcnM6IHJlcy5oZWFkZXJzLFxuICAgICAgc3RhdHVzOiByZXMuc3RhdHVzLFxuICAgICAgc3RhdHVzVGV4dDogcmVzLnN0YXR1c1RleHQsXG4gICAgICB1cmw6IHJlcy51cmwgfHwgdW5kZWZpbmVkLFxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OPFQ+KFxuICAgIHJlcTogT0RhdGFSZXF1ZXN0PFQ+LFxuICAgIGpzb246IHtcbiAgICAgIGJvZHk6IFQgfCBudWxsO1xuICAgICAgaGVhZGVyczogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfTtcbiAgICAgIHN0YXR1czogbnVtYmVyO1xuICAgICAgc3RhdHVzVGV4dDogc3RyaW5nO1xuICAgICAgdXJsOiBzdHJpbmcgfCBudWxsO1xuICAgIH1cbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YVJlc3BvbnNlPFQ+KHtcbiAgICAgIGFwaTogcmVxLmFwaSxcbiAgICAgIHJlc291cmNlOiByZXEucmVzb3VyY2UsXG4gICAgICBib2R5OiBqc29uLmJvZHksXG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoanNvbi5oZWFkZXJzKSxcbiAgICAgIHN0YXR1czoganNvbi5zdGF0dXMsXG4gICAgICBzdGF0dXNUZXh0OiBqc29uLnN0YXR1c1RleHQsXG4gICAgICB1cmw6IGpzb24udXJsIHx8IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYm9keTogdGhpcy5ib2R5LFxuICAgICAgaGVhZGVyczogdGhpcy5oZWFkZXJzXG4gICAgICAgIC5rZXlzKClcbiAgICAgICAgLm1hcCgobmFtZSkgPT4gKHsgW25hbWVdOiB0aGlzLmhlYWRlcnMuZ2V0QWxsKG5hbWUpIHx8IFtdIH0pKVxuICAgICAgICAucmVkdWNlKChhY2MsIGhlYWRlcikgPT4gT2JqZWN0LmFzc2lnbihhY2MsIGhlYWRlciksIHt9KSxcbiAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICBzdGF0dXNUZXh0OiB0aGlzLnN0YXR1c1RleHQsXG4gICAgICB1cmw6IHRoaXMudXJsLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIF9vcHRpb25zPzogT0RhdGFSZXNwb25zZU9wdGlvbnM7XG4gIGdldCBvcHRpb25zKCk6IE9EYXRhUmVzcG9uc2VPcHRpb25zIHtcbiAgICBpZiAodGhpcy5fb3B0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9vcHRpb25zID0gbmV3IE9EYXRhUmVzcG9uc2VPcHRpb25zKHRoaXMuYXBpLm9wdGlvbnMpO1xuICAgICAgY29uc3QgY29udGVudFR5cGUgPSB0aGlzLmhlYWRlcnMuZ2V0KENPTlRFTlRfVFlQRSk7XG4gICAgICBpZiAoY29udGVudFR5cGUgJiYgY29udGVudFR5cGUuaW5kZXhPZihBUFBMSUNBVElPTl9KU09OKSAhPT0gLTEpIHtcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBjb250ZW50VHlwZVxuICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgLmZpbmQoKHApID0+IHAuc3RhcnRzV2l0aChBUFBMSUNBVElPTl9KU09OKSkgYXMgc3RyaW5nO1xuICAgICAgICB0aGlzLl9vcHRpb25zLnNldEZlYXR1cmVzKGZlYXR1cmVzKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGhlYWRlciA9IEh0dHAucmVzb2x2ZUhlYWRlcktleSh0aGlzLmhlYWRlcnMsIE9EQVRBX1ZFUlNJT05fSEVBREVSUyk7XG4gICAgICBpZiAoaGVhZGVyKSB7XG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSAodGhpcy5oZWFkZXJzLmdldChoZWFkZXIpIHx8ICcnKS5yZXBsYWNlKC9cXDsvZywgJycpIGFzXG4gICAgICAgICAgfCAnMi4wJ1xuICAgICAgICAgIHwgJzMuMCdcbiAgICAgICAgICB8ICc0LjAnO1xuICAgICAgICB0aGlzLl9vcHRpb25zLnNldFZlcnNpb24odmVyc2lvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5oZWFkZXJzLmdldChMT0NBVElPTl9IRUFERVIpO1xuICAgICAgaWYgKGxvY2F0aW9uKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMuc2V0TG9jYXRpb24obG9jYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjYWNoZUNvbnRyb2wgPSB0aGlzLmhlYWRlcnMuZ2V0KENBQ0hFX0NPTlRST0wpO1xuICAgICAgaWYgKGNhY2hlQ29udHJvbCkge1xuICAgICAgICB0aGlzLl9vcHRpb25zLnNldENhY2hlKGNhY2hlQ29udHJvbCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGF5bG9hZD86IGFueTtcbiAgZ2V0IHBheWxvYWQoKSB7XG4gICAgaWYgKHRoaXMuX3BheWxvYWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fcGF5bG9hZCA9XG4gICAgICAgIHRoaXMuYm9keSAmJiB0aGlzLm9wdGlvbnMudmVyc2lvbiA9PT0gJzIuMCdcbiAgICAgICAgICA/ICg8YW55PnRoaXMuYm9keSlbJ2QnXVxuICAgICAgICAgIDogdGhpcy5ib2R5O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcGF5bG9hZDtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbnRleHQ/OiBhbnk7XG4gIGdldCBjb250ZXh0KCk6IE9EYXRhQ29udGV4dCB7XG4gICAgaWYgKHRoaXMuX2NvbnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fY29udGV4dCA9IHRoaXMub3B0aW9ucy5oZWxwZXIuY29udGV4dChcbiAgICAgICAgVHlwZXMuaXNQbGFpbk9iamVjdCh0aGlzLnBheWxvYWQpID8gdGhpcy5wYXlsb2FkIDoge31cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jb250ZXh0O1xuICB9XG5cbiAgcHJpdmF0ZSBfYW5ub3RhdGlvbnM/OiBNYXA8c3RyaW5nLCBhbnk+O1xuICBnZXQgYW5ub3RhdGlvbnMoKTogTWFwPHN0cmluZywgYW55PiB7XG4gICAgaWYgKHRoaXMuX2Fubm90YXRpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICB0aGlzLl9hbm5vdGF0aW9ucyA9IG9wdGlvbnMuaGVscGVyLmFubm90YXRpb25zKHRoaXMucGF5bG9hZCB8fCB7fSk7XG4gICAgICBsZXQga2V5ID0gSHR0cC5yZXNvbHZlSGVhZGVyS2V5KHRoaXMuaGVhZGVycywgRVRBR19IRUFERVJTKTtcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgY29uc3QgZXRhZyA9IHRoaXMuaGVhZGVycy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKGV0YWcpIHRoaXMuX2Fubm90YXRpb25zLnNldChvcHRpb25zLmhlbHBlci5PREFUQV9FVEFHLCBldGFnKTtcbiAgICAgIH1cbiAgICAgIGtleSA9IEh0dHAucmVzb2x2ZUhlYWRlcktleSh0aGlzLmhlYWRlcnMsIE9EQVRBX0VOVElUWUlEX0hFQURFUlMpO1xuICAgICAgaWYgKGtleSkge1xuICAgICAgICBjb25zdCBlbnRpdHlJZCA9IHRoaXMuaGVhZGVycy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKGVudGl0eUlkKSB0aGlzLl9hbm5vdGF0aW9ucy5zZXQob3B0aW9ucy5oZWxwZXIuT0RBVEFfSUQsIGVudGl0eUlkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Fubm90YXRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgcmVzcG9uc2UgYm9keSBhcyBhbiBlbnRpdHlcbiAgICogQHJldHVybnNcbiAgICovXG4gIGVudGl0eSgpOiBPRGF0YUVudGl0eTxUPiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5wYXlsb2FkO1xuICAgIGNvbnN0IGFubm90cyA9IG5ldyBPRGF0YUVudGl0eUFubm90YXRpb25zKFxuICAgICAgb3B0aW9ucy5oZWxwZXIsXG4gICAgICB0aGlzLmFubm90YXRpb25zLFxuICAgICAgdGhpcy5jb250ZXh0XG4gICAgKTtcbiAgICBjb25zdCBkYXRhID0gcGF5bG9hZCA/IGFubm90cy5kYXRhKHBheWxvYWQpIDogbnVsbDtcbiAgICBsZXQgZW50aXR5ID0gKFxuICAgICAgZGF0YSAhPT0gbnVsbCAmJiBUeXBlcy5pc1BsYWluT2JqZWN0KGRhdGEpXG4gICAgICAgID8gb3B0aW9ucy5oZWxwZXIuYXR0cmlidXRlcyhkYXRhLCB0aGlzLmFwaS5vcHRpb25zLnN0cmlwTWV0YWRhdGEpXG4gICAgICAgIDogZGF0YVxuICAgICkgYXMgVCB8IG51bGw7XG5cbiAgICBpZiAoZW50aXR5ICE9PSBudWxsKVxuICAgICAgZW50aXR5ID0gdGhpcy5yZXNvdXJjZS5kZXNlcmlhbGl6ZShlbnRpdHksIG9wdGlvbnMpIGFzIFQ7XG4gICAgcmV0dXJuIHsgZW50aXR5LCBhbm5vdHMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHJlc3BvbnNlIGJvZHkgYXMgZW50aXRpZXNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGVudGl0aWVzKCk6IE9EYXRhRW50aXRpZXM8VD4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgY29uc3QgcGF5bG9hZCA9IHRoaXMucGF5bG9hZDtcbiAgICBjb25zdCBhbm5vdHMgPSBuZXcgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zKFxuICAgICAgb3B0aW9ucy5oZWxwZXIsXG4gICAgICB0aGlzLmFubm90YXRpb25zLFxuICAgICAgdGhpcy5jb250ZXh0XG4gICAgKTtcbiAgICBsZXQgZW50aXRpZXMgPSBwYXlsb2FkID8gYW5ub3RzLmRhdGEocGF5bG9hZCkgOiBudWxsO1xuXG4gICAgaWYgKGVudGl0aWVzICE9PSBudWxsKVxuICAgICAgZW50aXRpZXMgPSB0aGlzLnJlc291cmNlLmRlc2VyaWFsaXplKGVudGl0aWVzLCBvcHRpb25zKSBhcyBUW107XG4gICAgcmV0dXJuIHsgZW50aXRpZXMsIGFubm90cyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgcmVzcG9uc2UgYm9keSBhcyBhIHByb3BlcnR5XG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwcm9wZXJ0eSgpOiBPRGF0YVByb3BlcnR5PFQ+IHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgIGNvbnN0IHBheWxvYWQgPSB0aGlzLnBheWxvYWQ7XG4gICAgY29uc3QgYW5ub3RzID0gbmV3IE9EYXRhUHJvcGVydHlBbm5vdGF0aW9ucyhcbiAgICAgIG9wdGlvbnMuaGVscGVyLFxuICAgICAgdGhpcy5hbm5vdGF0aW9ucyxcbiAgICAgIHRoaXMuY29udGV4dFxuICAgICk7XG4gICAgY29uc3QgZGF0YSA9IHBheWxvYWQgPyAoYW5ub3RzLmRhdGEocGF5bG9hZCkgYXMgVCkgOiBudWxsO1xuICAgIGxldCBwcm9wZXJ0eSA9IChcbiAgICAgIGRhdGEgIT09IG51bGwgJiYgVHlwZXMuaXNQbGFpbk9iamVjdChkYXRhKVxuICAgICAgICA/IG9wdGlvbnMuaGVscGVyLmF0dHJpYnV0ZXMoZGF0YSwgdGhpcy5hcGkub3B0aW9ucy5zdHJpcE1ldGFkYXRhKVxuICAgICAgICA6IGRhdGFcbiAgICApIGFzIFQgfCBudWxsO1xuXG4gICAgaWYgKHByb3BlcnR5ICE9PSBudWxsKVxuICAgICAgcHJvcGVydHkgPSB0aGlzLnJlc291cmNlLmRlc2VyaWFsaXplKHByb3BlcnR5LCBvcHRpb25zKSBhcyBUO1xuICAgIHJldHVybiB7IHByb3BlcnR5LCBhbm5vdHMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHJlc3BvbnNlIGJvZHkgYXMgYSB2YWx1ZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgdmFsdWUoKTogVCB8IG51bGwge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgY29uc3QgcGF5bG9hZCA9IHRoaXMucGF5bG9hZDtcbiAgICBsZXQgdmFsdWUgPSAoXG4gICAgICBwYXlsb2FkICE9PSBudWxsICYmIFR5cGVzLmlzUGxhaW5PYmplY3QocGF5bG9hZClcbiAgICAgICAgPyBvcHRpb25zLmhlbHBlci5hdHRyaWJ1dGVzKHBheWxvYWQsIHRoaXMuYXBpLm9wdGlvbnMuc3RyaXBNZXRhZGF0YSlcbiAgICAgICAgOiBwYXlsb2FkXG4gICAgKSBhcyBUIHwgbnVsbDtcblxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkgdmFsdWUgPSB0aGlzLnJlc291cmNlLmRlc2VyaWFsaXplKHZhbHVlLCBvcHRpb25zKSBhcyBUO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIl19