@ngrx/data 11.0.0-rc.0 → 11.1.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.
Files changed (149) hide show
  1. package/bundles/ngrx-data.umd.js +902 -4475
  2. package/bundles/ngrx-data.umd.js.map +1 -1
  3. package/bundles/ngrx-data.umd.min.js +15 -1
  4. package/bundles/ngrx-data.umd.min.js.map +1 -1
  5. package/esm2015/index.js +2 -7
  6. package/esm2015/ngrx-data.js +2 -7
  7. package/esm2015/public_api.js +2 -7
  8. package/esm2015/src/actions/entity-action-factory.js +6 -31
  9. package/esm2015/src/actions/entity-action-guard.js +23 -130
  10. package/esm2015/src/actions/entity-action-operators.js +11 -64
  11. package/esm2015/src/actions/entity-action.js +2 -68
  12. package/esm2015/src/actions/entity-cache-action.js +14 -125
  13. package/esm2015/src/actions/entity-cache-change-set.js +15 -126
  14. package/esm2015/src/actions/entity-op.js +70 -89
  15. package/esm2015/src/actions/merge-strategy.js +8 -16
  16. package/esm2015/src/actions/update-response-data.js +2 -36
  17. package/esm2015/src/dataservices/data-service-error.js +1 -34
  18. package/esm2015/src/dataservices/default-data-service-config.js +1 -41
  19. package/esm2015/src/dataservices/default-data.service.js +5 -163
  20. package/esm2015/src/dataservices/entity-cache-data.service.js +17 -103
  21. package/esm2015/src/dataservices/entity-data.service.js +5 -31
  22. package/esm2015/src/dataservices/http-url-generator.js +11 -97
  23. package/esm2015/src/dataservices/interfaces.js +2 -71
  24. package/esm2015/src/dataservices/persistence-result-handler.service.js +7 -66
  25. package/esm2015/src/dispatchers/entity-cache-dispatcher.js +40 -97
  26. package/esm2015/src/dispatchers/entity-commands.js +2 -247
  27. package/esm2015/src/dispatchers/entity-dispatcher-base.js +65 -287
  28. package/esm2015/src/dispatchers/entity-dispatcher-default-options.js +6 -48
  29. package/esm2015/src/dispatchers/entity-dispatcher-factory.js +2 -64
  30. package/esm2015/src/dispatchers/entity-dispatcher.js +1 -74
  31. package/esm2015/src/effects/entity-cache-effects.js +21 -135
  32. package/esm2015/src/effects/entity-effects-scheduler.js +2 -10
  33. package/esm2015/src/effects/entity-effects.js +18 -128
  34. package/esm2015/src/entity-data-without-effects.module.js +7 -79
  35. package/esm2015/src/entity-data.module.js +3 -25
  36. package/esm2015/src/entity-metadata/entity-definition.js +2 -42
  37. package/esm2015/src/entity-metadata/entity-definition.service.js +14 -52
  38. package/esm2015/src/entity-metadata/entity-filters.js +5 -33
  39. package/esm2015/src/entity-metadata/entity-metadata.js +1 -34
  40. package/esm2015/src/entity-services/entity-collection-service-base.js +56 -208
  41. package/esm2015/src/entity-services/entity-collection-service-elements-factory.js +3 -60
  42. package/esm2015/src/entity-services/entity-collection-service-factory.js +5 -20
  43. package/esm2015/src/entity-services/entity-collection-service.js +2 -53
  44. package/esm2015/src/entity-services/entity-services-base.js +18 -78
  45. package/esm2015/src/entity-services/entity-services-elements.js +9 -44
  46. package/esm2015/src/entity-services/entity-services.js +1 -70
  47. package/esm2015/src/index.js +1 -6
  48. package/esm2015/src/reducers/constants.js +1 -11
  49. package/esm2015/src/reducers/entity-cache-reducer.js +33 -175
  50. package/esm2015/src/reducers/entity-cache.js +2 -10
  51. package/esm2015/src/reducers/entity-change-tracker-base.js +115 -262
  52. package/esm2015/src/reducers/entity-change-tracker.js +2 -179
  53. package/esm2015/src/reducers/entity-collection-creator.js +5 -29
  54. package/esm2015/src/reducers/entity-collection-reducer-methods.js +44 -503
  55. package/esm2015/src/reducers/entity-collection-reducer-registry.js +8 -50
  56. package/esm2015/src/reducers/entity-collection-reducer.js +5 -34
  57. package/esm2015/src/reducers/entity-collection.js +9 -65
  58. package/esm2015/src/selectors/entity-cache-selector.js +1 -12
  59. package/esm2015/src/selectors/entity-selectors$.js +11 -137
  60. package/esm2015/src/selectors/entity-selectors.js +23 -262
  61. package/esm2015/src/utils/correlation-id-generator.js +4 -30
  62. package/esm2015/src/utils/default-logger.js +1 -21
  63. package/esm2015/src/utils/default-pluralizer.js +3 -24
  64. package/esm2015/src/utils/guid-fns.js +9 -41
  65. package/esm2015/src/utils/interfaces.js +1 -49
  66. package/esm2015/src/utils/utilities.js +6 -25
  67. package/fesm2015/ngrx-data.js +721 -4410
  68. package/fesm2015/ngrx-data.js.map +1 -1
  69. package/package.json +5 -5
  70. package/schematics-core/index.js +4 -1
  71. package/schematics-core/index.js.map +1 -1
  72. package/schematics-core/utility/ast-utils.js +127 -1
  73. package/schematics-core/utility/ast-utils.js.map +1 -1
  74. package/schematics-core/utility/config.js +1 -1
  75. package/schematics-core/utility/config.js.map +1 -1
  76. package/schematics-core/utility/find-component.js +101 -0
  77. package/schematics-core/utility/find-component.js.map +1 -0
  78. package/schematics-core/utility/libs-version.js +1 -1
  79. package/schematics-core/utility/libs-version.js.map +1 -1
  80. package/schematics-core/utility/project.js +4 -2
  81. package/schematics-core/utility/project.js.map +1 -1
  82. package/CHANGELOG.md +0 -3
  83. package/esm2015/index.ngsummary.json +0 -1
  84. package/esm2015/ngrx-data.ngsummary.json +0 -1
  85. package/esm2015/public_api.ngsummary.json +0 -1
  86. package/esm2015/src/actions/entity-action-factory.ngsummary.json +0 -1
  87. package/esm2015/src/actions/entity-action-guard.ngsummary.json +0 -1
  88. package/esm2015/src/actions/entity-action-operators.ngsummary.json +0 -1
  89. package/esm2015/src/actions/entity-action.ngsummary.json +0 -1
  90. package/esm2015/src/actions/entity-cache-action.ngsummary.json +0 -1
  91. package/esm2015/src/actions/entity-cache-change-set.ngsummary.json +0 -1
  92. package/esm2015/src/actions/entity-op.ngsummary.json +0 -1
  93. package/esm2015/src/actions/merge-strategy.ngsummary.json +0 -1
  94. package/esm2015/src/actions/update-response-data.ngsummary.json +0 -1
  95. package/esm2015/src/dataservices/data-service-error.ngsummary.json +0 -1
  96. package/esm2015/src/dataservices/default-data-service-config.ngsummary.json +0 -1
  97. package/esm2015/src/dataservices/default-data.service.ngsummary.json +0 -1
  98. package/esm2015/src/dataservices/entity-cache-data.service.ngsummary.json +0 -1
  99. package/esm2015/src/dataservices/entity-data.service.ngsummary.json +0 -1
  100. package/esm2015/src/dataservices/http-url-generator.ngsummary.json +0 -1
  101. package/esm2015/src/dataservices/interfaces.ngsummary.json +0 -1
  102. package/esm2015/src/dataservices/persistence-result-handler.service.ngsummary.json +0 -1
  103. package/esm2015/src/dispatchers/entity-cache-dispatcher.ngsummary.json +0 -1
  104. package/esm2015/src/dispatchers/entity-commands.ngsummary.json +0 -1
  105. package/esm2015/src/dispatchers/entity-dispatcher-base.ngsummary.json +0 -1
  106. package/esm2015/src/dispatchers/entity-dispatcher-default-options.ngsummary.json +0 -1
  107. package/esm2015/src/dispatchers/entity-dispatcher-factory.ngsummary.json +0 -1
  108. package/esm2015/src/dispatchers/entity-dispatcher.ngsummary.json +0 -1
  109. package/esm2015/src/effects/entity-cache-effects.ngsummary.json +0 -1
  110. package/esm2015/src/effects/entity-effects-scheduler.ngsummary.json +0 -1
  111. package/esm2015/src/effects/entity-effects.ngsummary.json +0 -1
  112. package/esm2015/src/entity-data-without-effects.module.ngfactory.js +0 -36
  113. package/esm2015/src/entity-data-without-effects.module.ngsummary.json +0 -1
  114. package/esm2015/src/entity-data.module.ngfactory.js +0 -48
  115. package/esm2015/src/entity-data.module.ngsummary.json +0 -1
  116. package/esm2015/src/entity-metadata/entity-definition.ngsummary.json +0 -1
  117. package/esm2015/src/entity-metadata/entity-definition.service.ngsummary.json +0 -1
  118. package/esm2015/src/entity-metadata/entity-filters.ngsummary.json +0 -1
  119. package/esm2015/src/entity-metadata/entity-metadata.ngsummary.json +0 -1
  120. package/esm2015/src/entity-services/entity-collection-service-base.ngsummary.json +0 -1
  121. package/esm2015/src/entity-services/entity-collection-service-elements-factory.ngsummary.json +0 -1
  122. package/esm2015/src/entity-services/entity-collection-service-factory.ngsummary.json +0 -1
  123. package/esm2015/src/entity-services/entity-collection-service.ngsummary.json +0 -1
  124. package/esm2015/src/entity-services/entity-services-base.ngsummary.json +0 -1
  125. package/esm2015/src/entity-services/entity-services-elements.ngsummary.json +0 -1
  126. package/esm2015/src/entity-services/entity-services.ngsummary.json +0 -1
  127. package/esm2015/src/index.ngsummary.json +0 -1
  128. package/esm2015/src/reducers/constants.ngsummary.json +0 -1
  129. package/esm2015/src/reducers/entity-cache-reducer.ngsummary.json +0 -1
  130. package/esm2015/src/reducers/entity-cache.ngsummary.json +0 -1
  131. package/esm2015/src/reducers/entity-change-tracker-base.ngsummary.json +0 -1
  132. package/esm2015/src/reducers/entity-change-tracker.ngsummary.json +0 -1
  133. package/esm2015/src/reducers/entity-collection-creator.ngsummary.json +0 -1
  134. package/esm2015/src/reducers/entity-collection-reducer-methods.ngsummary.json +0 -1
  135. package/esm2015/src/reducers/entity-collection-reducer-registry.ngsummary.json +0 -1
  136. package/esm2015/src/reducers/entity-collection-reducer.ngsummary.json +0 -1
  137. package/esm2015/src/reducers/entity-collection.ngsummary.json +0 -1
  138. package/esm2015/src/selectors/entity-cache-selector.ngsummary.json +0 -1
  139. package/esm2015/src/selectors/entity-selectors$.ngsummary.json +0 -1
  140. package/esm2015/src/selectors/entity-selectors.ngsummary.json +0 -1
  141. package/esm2015/src/utils/correlation-id-generator.ngsummary.json +0 -1
  142. package/esm2015/src/utils/default-logger.ngsummary.json +0 -1
  143. package/esm2015/src/utils/default-pluralizer.ngsummary.json +0 -1
  144. package/esm2015/src/utils/guid-fns.ngsummary.json +0 -1
  145. package/esm2015/src/utils/interfaces.ngsummary.json +0 -1
  146. package/esm2015/src/utils/utilities.ngsummary.json +0 -1
  147. package/schematics/ng-add/files/entity-metadata.ts.template +0 -10
  148. package/src/entity-data-without-effects.module.ngfactory.d.ts +0 -3
  149. package/src/entity-data.module.ngfactory.d.ts +0 -3
@@ -1,148 +1,10 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * Generated from: src/selectors/entity-selectors.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
- */
6
1
  import { Inject, Injectable, Optional } from '@angular/core';
7
2
  import { createSelector } from '@ngrx/store';
8
3
  import { ENTITY_CACHE_SELECTOR_TOKEN, createEntityCacheSelector, } from './entity-cache-selector';
9
4
  import { ENTITY_CACHE_NAME } from '../reducers/constants';
10
5
  import { EntityCollectionCreator } from '../reducers/entity-collection-creator';
11
- /**
12
- * The selector functions for entity collection members,
13
- * Selects from the entity collection to the collection member
14
- * Contrast with {EntitySelectors}.
15
- * @record
16
- * @template T
17
- */
18
- export function CollectionSelectors() { }
19
- if (false) {
20
- /**
21
- * Count of entities in the cached collection.
22
- * @type {?}
23
- */
24
- CollectionSelectors.prototype.selectCount;
25
- /**
26
- * All entities in the cached collection.
27
- * @type {?}
28
- */
29
- CollectionSelectors.prototype.selectEntities;
30
- /**
31
- * Map of entity keys to entities
32
- * @type {?}
33
- */
34
- CollectionSelectors.prototype.selectEntityMap;
35
- /**
36
- * Filter pattern applied by the entity collection's filter function
37
- * @type {?}
38
- */
39
- CollectionSelectors.prototype.selectFilter;
40
- /**
41
- * Entities in the cached collection that pass the filter function
42
- * @type {?}
43
- */
44
- CollectionSelectors.prototype.selectFilteredEntities;
45
- /**
46
- * Keys of the cached collection, in the collection's native sort order
47
- * @type {?}
48
- */
49
- CollectionSelectors.prototype.selectKeys;
50
- /**
51
- * True when the collection has been fully loaded.
52
- * @type {?}
53
- */
54
- CollectionSelectors.prototype.selectLoaded;
55
- /**
56
- * True when a multi-entity query command is in progress.
57
- * @type {?}
58
- */
59
- CollectionSelectors.prototype.selectLoading;
60
- /**
61
- * ChangeState (including original values) of entities with unsaved changes
62
- * @type {?}
63
- */
64
- CollectionSelectors.prototype.selectChangeState;
65
- /* Skipping unhandled member: readonly [selector: string]: any;*/
66
- }
67
- /**
68
- * The selector functions for entity collection members,
69
- * Selects from store root, through EntityCache, to the entity collection member
70
- * Contrast with {CollectionSelectors}.
71
- * @record
72
- * @template T
73
- */
74
- export function EntitySelectors() { }
75
- if (false) {
76
- /**
77
- * Name of the entity collection for these selectors
78
- * @type {?}
79
- */
80
- EntitySelectors.prototype.entityName;
81
- /**
82
- * The cached EntityCollection itself
83
- * @type {?}
84
- */
85
- EntitySelectors.prototype.selectCollection;
86
- /**
87
- * Count of entities in the cached collection.
88
- * @type {?}
89
- */
90
- EntitySelectors.prototype.selectCount;
91
- /**
92
- * All entities in the cached collection.
93
- * @type {?}
94
- */
95
- EntitySelectors.prototype.selectEntities;
96
- /**
97
- * The EntityCache
98
- * @type {?}
99
- */
100
- EntitySelectors.prototype.selectEntityCache;
101
- /**
102
- * Map of entity keys to entities
103
- * @type {?}
104
- */
105
- EntitySelectors.prototype.selectEntityMap;
106
- /**
107
- * Filter pattern applied by the entity collection's filter function
108
- * @type {?}
109
- */
110
- EntitySelectors.prototype.selectFilter;
111
- /**
112
- * Entities in the cached collection that pass the filter function
113
- * @type {?}
114
- */
115
- EntitySelectors.prototype.selectFilteredEntities;
116
- /**
117
- * Keys of the cached collection, in the collection's native sort order
118
- * @type {?}
119
- */
120
- EntitySelectors.prototype.selectKeys;
121
- /**
122
- * True when the collection has been fully loaded.
123
- * @type {?}
124
- */
125
- EntitySelectors.prototype.selectLoaded;
126
- /**
127
- * True when a multi-entity query command is in progress.
128
- * @type {?}
129
- */
130
- EntitySelectors.prototype.selectLoading;
131
- /**
132
- * ChangeState (including original values) of entities with unsaved changes
133
- * @type {?}
134
- */
135
- EntitySelectors.prototype.selectChangeState;
136
- /* Skipping unhandled member: readonly [name: string]: MemoizedSelector<EntityCollection<T>, any> | string;*/
137
- }
138
- /**
139
- * Creates EntitySelector functions for entity collections.
140
- */
6
+ /** Creates EntitySelector functions for entity collections. */
141
7
  export class EntitySelectorsFactory {
142
- /**
143
- * @param {?=} entityCollectionCreator
144
- * @param {?=} selectEntityCache
145
- */
146
8
  constructor(entityCollectionCreator, selectEntityCache) {
147
9
  this.entityCollectionCreator =
148
10
  entityCollectionCreator || new EntityCollectionCreator();
@@ -152,114 +14,39 @@ export class EntitySelectorsFactory {
152
14
  /**
153
15
  * Create the NgRx selector from the store root to the named collection,
154
16
  * e.g. from Object to Heroes.
155
- * @template T, C
156
- * @param {?} entityName the name of the collection
157
- * @return {?}
17
+ * @param entityName the name of the collection
158
18
  */
159
19
  createCollectionSelector(entityName) {
160
- /** @type {?} */
161
- const getCollection = (/**
162
- * @param {?=} cache
163
- * @return {?}
164
- */
165
- (cache = {}) => (/** @type {?} */ (((cache[entityName] ||
166
- this.entityCollectionCreator.create(entityName))))));
20
+ const getCollection = (cache = {}) => ((cache[entityName] ||
21
+ this.entityCollectionCreator.create(entityName)));
167
22
  return createSelector(this.selectEntityCache, getCollection);
168
23
  }
169
24
  // createCollectionSelectors implementation
170
- /**
171
- * @template T, S
172
- * @param {?} metadataOrName
173
- * @return {?}
174
- */
175
25
  createCollectionSelectors(metadataOrName) {
176
- /** @type {?} */
177
26
  const metadata = typeof metadataOrName === 'string'
178
27
  ? { entityName: metadataOrName }
179
28
  : metadataOrName;
180
- /** @type {?} */
181
- const selectKeys = (/**
182
- * @param {?} c
183
- * @return {?}
184
- */
185
- (c) => c.ids);
186
- /** @type {?} */
187
- const selectEntityMap = (/**
188
- * @param {?} c
189
- * @return {?}
190
- */
191
- (c) => c.entities);
192
- /** @type {?} */
193
- const selectEntities = createSelector(selectKeys, selectEntityMap, (/**
194
- * @param {?} keys
195
- * @param {?} entities
196
- * @return {?}
197
- */
198
- (keys, entities) => keys.map((/**
199
- * @param {?} key
200
- * @return {?}
201
- */
202
- (key) => (/** @type {?} */ (entities[key]))))));
203
- /** @type {?} */
204
- const selectCount = createSelector(selectKeys, (/**
205
- * @param {?} keys
206
- * @return {?}
207
- */
208
- (keys) => keys.length));
29
+ const selectKeys = (c) => c.ids;
30
+ const selectEntityMap = (c) => c.entities;
31
+ const selectEntities = createSelector(selectKeys, selectEntityMap, (keys, entities) => keys.map((key) => entities[key]));
32
+ const selectCount = createSelector(selectKeys, (keys) => keys.length);
209
33
  // EntityCollection selectors that go beyond the ngrx/entity/EntityState selectors
210
- /** @type {?} */
211
- const selectFilter = (/**
212
- * @param {?} c
213
- * @return {?}
214
- */
215
- (c) => c.filter);
216
- /** @type {?} */
34
+ const selectFilter = (c) => c.filter;
217
35
  const filterFn = metadata.filterFn;
218
- /** @type {?} */
219
36
  const selectFilteredEntities = filterFn
220
- ? createSelector(selectEntities, selectFilter, (/**
221
- * @param {?} entities
222
- * @param {?} pattern
223
- * @return {?}
224
- */
225
- (entities, pattern) => filterFn(entities, pattern)))
37
+ ? createSelector(selectEntities, selectFilter, (entities, pattern) => filterFn(entities, pattern))
226
38
  : selectEntities;
227
- /** @type {?} */
228
- const selectLoaded = (/**
229
- * @param {?} c
230
- * @return {?}
231
- */
232
- (c) => c.loaded);
233
- /** @type {?} */
234
- const selectLoading = (/**
235
- * @param {?} c
236
- * @return {?}
237
- */
238
- (c) => c.loading);
239
- /** @type {?} */
240
- const selectChangeState = (/**
241
- * @param {?} c
242
- * @return {?}
243
- */
244
- (c) => c.changeState);
39
+ const selectLoaded = (c) => c.loaded;
40
+ const selectLoading = (c) => c.loading;
41
+ const selectChangeState = (c) => c.changeState;
245
42
  // Create collection selectors for each `additionalCollectionState` property.
246
43
  // These all extend from `selectCollection`
247
- /** @type {?} */
248
44
  const extra = metadata.additionalCollectionState || {};
249
- /** @type {?} */
250
45
  const extraSelectors = {};
251
- Object.keys(extra).forEach((/**
252
- * @param {?} k
253
- * @return {?}
254
- */
255
- (k) => {
256
- extraSelectors['select' + k[0].toUpperCase() + k.slice(1)] = (/**
257
- * @param {?} c
258
- * @return {?}
259
- */
260
- (c) => ((/** @type {?} */ (c)))[k]);
261
- }));
262
- return (/** @type {?} */ (Object.assign({ selectCount,
46
+ Object.keys(extra).forEach((k) => {
47
+ extraSelectors['select' + k[0].toUpperCase() + k.slice(1)] = (c) => c[k];
48
+ });
49
+ return Object.assign({ selectCount,
263
50
  selectEntities,
264
51
  selectEntityMap,
265
52
  selectFilter,
@@ -267,36 +54,22 @@ export class EntitySelectorsFactory {
267
54
  selectKeys,
268
55
  selectLoaded,
269
56
  selectLoading,
270
- selectChangeState }, extraSelectors)));
57
+ selectChangeState }, extraSelectors);
271
58
  }
272
59
  // createCollectionSelectors implementation
273
- /**
274
- * @template T, S
275
- * @param {?} metadataOrName
276
- * @return {?}
277
- */
278
60
  create(metadataOrName) {
279
- /** @type {?} */
280
61
  const metadata = typeof metadataOrName === 'string'
281
62
  ? { entityName: metadataOrName }
282
63
  : metadataOrName;
283
- /** @type {?} */
284
64
  const entityName = metadata.entityName;
285
- /** @type {?} */
286
65
  const selectCollection = this.createCollectionSelector(entityName);
287
- /** @type {?} */
288
66
  const collectionSelectors = this.createCollectionSelectors(metadata);
289
- /** @type {?} */
290
67
  const entitySelectors = {};
291
- Object.keys(collectionSelectors).forEach((/**
292
- * @param {?} k
293
- * @return {?}
294
- */
295
- (k) => {
68
+ Object.keys(collectionSelectors).forEach((k) => {
296
69
  entitySelectors[k] = createSelector(selectCollection, collectionSelectors[k]);
297
- }));
298
- return (/** @type {?} */ (Object.assign({ entityName,
299
- selectCollection, selectEntityCache: this.selectEntityCache }, entitySelectors)));
70
+ });
71
+ return Object.assign({ entityName,
72
+ selectCollection, selectEntityCache: this.selectEntityCache }, entitySelectors);
300
73
  }
301
74
  }
302
75
  EntitySelectorsFactory.decorators = [
@@ -307,16 +80,4 @@ EntitySelectorsFactory.ctorParameters = () => [
307
80
  { type: EntityCollectionCreator, decorators: [{ type: Optional }] },
308
81
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [ENTITY_CACHE_SELECTOR_TOKEN,] }] }
309
82
  ];
310
- if (false) {
311
- /**
312
- * @type {?}
313
- * @private
314
- */
315
- EntitySelectorsFactory.prototype.entityCollectionCreator;
316
- /**
317
- * @type {?}
318
- * @private
319
- */
320
- EntitySelectorsFactory.prototype.selectEntityCache;
321
- }
322
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXNlbGVjdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9tb2R1bGVzL2RhdGEvIiwic291cmNlcyI6WyJzcmMvc2VsZWN0b3JzL2VudGl0eS1zZWxlY3RvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJN0QsT0FBTyxFQUFFLGNBQWMsRUFBWSxNQUFNLGFBQWEsQ0FBQztBQUl2RCxPQUFPLEVBQ0wsMkJBQTJCLEVBRTNCLHlCQUF5QixHQUMxQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSzFELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7OztBQVFoRix5Q0E2QkM7Ozs7OztJQXpCQywwQ0FBNEQ7Ozs7O0lBRzVELDZDQUE0RDs7Ozs7SUFHNUQsOENBQXVFOzs7OztJQUd2RSwyQ0FBNkQ7Ozs7O0lBRzdELHFEQUFvRTs7Ozs7SUFHcEUseUNBQXdFOzs7OztJQUd4RSwyQ0FBOEQ7Ozs7O0lBRzlELDRDQUErRDs7Ozs7SUFHL0QsZ0RBQTZFOzs7Ozs7Ozs7O0FBUS9FLHFDQXNDQzs7Ozs7O0lBcENDLHFDQUE0Qjs7Ozs7SUFLNUIsMkNBQXlFOzs7OztJQUd6RSxzQ0FBdUQ7Ozs7O0lBR3ZELHlDQUF1RDs7Ozs7SUFHdkQsNENBQWtFOzs7OztJQUdsRSwwQ0FBa0U7Ozs7O0lBR2xFLHVDQUF3RDs7Ozs7SUFHeEQsaURBQStEOzs7OztJQUcvRCxxQ0FBbUU7Ozs7O0lBR25FLHVDQUF5RDs7Ozs7SUFHekQsd0NBQTBEOzs7OztJQUcxRCw0Q0FBd0U7Ozs7OztBQUsxRSxNQUFNLE9BQU8sc0JBQXNCOzs7OztJQUlqQyxZQUNjLHVCQUFpRCxFQUc3RCxpQkFBdUM7UUFFdkMsSUFBSSxDQUFDLHVCQUF1QjtZQUMx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QUNaLGFBQWE7WUFDYixpQkFBaUIsSUFDZCxjQUFjLEdBQ2IsQ0FBQztJQUNULENBQUM7Ozs7Ozs7SUFzQ0QsTUFBTSxDQUNKLGNBQTBDOztjQUVwQyxRQUFRLEdBQ1osT0FBTyxjQUFjLEtBQUssUUFBUTtZQUNoQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFO1lBQ2hDLENBQUMsQ0FBQyxjQUFjOztjQUNkLFVBQVUsR0FBRyxRQUFRLENBQUMsVUFBVTs7Y0FDaEMsZ0JBQWdCLEdBR2xCLElBQUksQ0FBQyx3QkFBd0IsQ0FBSSxVQUFVLENBQUM7O2NBQzFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBSSxRQUFRLENBQUM7O2NBRWpFLGVBQWUsR0FFakIsRUFBRTtRQUNOLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxPQUFPOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUM3QyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUNqQyxnQkFBZ0IsRUFDaEIsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQ3ZCLENBQUM7UUFDSixDQUFDLEVBQUMsQ0FBQztRQUVILE9BQU8sbUNBQ0wsVUFBVTtZQUNWLGdCQUFnQixFQUNoQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCLElBQ3RDLGVBQWUsR0FDZCxDQUFDO0lBQ1QsQ0FBQzs7O1lBck1GLFVBQVU7Ozs7WUFyRkYsdUJBQXVCLHVCQTJGM0IsUUFBUTs0Q0FDUixRQUFRLFlBQ1IsTUFBTSxTQUFDLDJCQUEyQjs7Ozs7OztJQU5yQyx5REFBeUQ7Ozs7O0lBQ3pELG1EQUErQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8gUHJvZCBidWlsZCByZXF1aXJlcyBgTWVtb2l6ZWRTZWxlY3RvciBldmVuIHRob3VnaCBub3QgdXNlZC5cbmltcG9ydCB7IE1lbW9pemVkU2VsZWN0b3IgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBjcmVhdGVTZWxlY3RvciwgU2VsZWN0b3IgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnQG5ncngvZW50aXR5JztcblxuaW1wb3J0IHsgRW50aXR5Q2FjaGUgfSBmcm9tICcuLi9yZWR1Y2Vycy9lbnRpdHktY2FjaGUnO1xuaW1wb3J0IHtcbiAgRU5USVRZX0NBQ0hFX1NFTEVDVE9SX1RPS0VOLFxuICBFbnRpdHlDYWNoZVNlbGVjdG9yLFxuICBjcmVhdGVFbnRpdHlDYWNoZVNlbGVjdG9yLFxufSBmcm9tICcuL2VudGl0eS1jYWNoZS1zZWxlY3Rvcic7XG5pbXBvcnQgeyBFTlRJVFlfQ0FDSEVfTkFNRSB9IGZyb20gJy4uL3JlZHVjZXJzL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBFbnRpdHlDb2xsZWN0aW9uLFxuICBDaGFuZ2VTdGF0ZU1hcCxcbn0gZnJvbSAnLi4vcmVkdWNlcnMvZW50aXR5LWNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgRW50aXR5Q29sbGVjdGlvbkNyZWF0b3IgfSBmcm9tICcuLi9yZWR1Y2Vycy9lbnRpdHktY29sbGVjdGlvbi1jcmVhdG9yJztcbmltcG9ydCB7IEVudGl0eU1ldGFkYXRhIH0gZnJvbSAnLi4vZW50aXR5LW1ldGFkYXRhL2VudGl0eS1tZXRhZGF0YSc7XG5cbi8qKlxuICogVGhlIHNlbGVjdG9yIGZ1bmN0aW9ucyBmb3IgZW50aXR5IGNvbGxlY3Rpb24gbWVtYmVycyxcbiAqIFNlbGVjdHMgZnJvbSB0aGUgZW50aXR5IGNvbGxlY3Rpb24gdG8gdGhlIGNvbGxlY3Rpb24gbWVtYmVyXG4gKiBDb250cmFzdCB3aXRoIHtFbnRpdHlTZWxlY3RvcnN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbGxlY3Rpb25TZWxlY3RvcnM8VD4ge1xuICByZWFkb25seSBbc2VsZWN0b3I6IHN0cmluZ106IGFueTtcblxuICAvKiogQ291bnQgb2YgZW50aXRpZXMgaW4gdGhlIGNhY2hlZCBjb2xsZWN0aW9uLiAqL1xuICByZWFkb25seSBzZWxlY3RDb3VudDogU2VsZWN0b3I8RW50aXR5Q29sbGVjdGlvbjxUPiwgbnVtYmVyPjtcblxuICAvKiogQWxsIGVudGl0aWVzIGluIHRoZSBjYWNoZWQgY29sbGVjdGlvbi4gKi9cbiAgcmVhZG9ubHkgc2VsZWN0RW50aXRpZXM6IFNlbGVjdG9yPEVudGl0eUNvbGxlY3Rpb248VD4sIFRbXT47XG5cbiAgLyoqIE1hcCBvZiBlbnRpdHkga2V5cyB0byBlbnRpdGllcyAqL1xuICByZWFkb25seSBzZWxlY3RFbnRpdHlNYXA6IFNlbGVjdG9yPEVudGl0eUNvbGxlY3Rpb248VD4sIERpY3Rpb25hcnk8VD4+O1xuXG4gIC8qKiBGaWx0ZXIgcGF0dGVybiBhcHBsaWVkIGJ5IHRoZSBlbnRpdHkgY29sbGVjdGlvbidzIGZpbHRlciBmdW5jdGlvbiAqL1xuICByZWFkb25seSBzZWxlY3RGaWx0ZXI6IFNlbGVjdG9yPEVudGl0eUNvbGxlY3Rpb248VD4sIHN0cmluZz47XG5cbiAgLyoqIEVudGl0aWVzIGluIHRoZSBjYWNoZWQgY29sbGVjdGlvbiB0aGF0IHBhc3MgdGhlIGZpbHRlciBmdW5jdGlvbiAqL1xuICByZWFkb25seSBzZWxlY3RGaWx0ZXJlZEVudGl0aWVzOiBTZWxlY3RvcjxFbnRpdHlDb2xsZWN0aW9uPFQ+LCBUW10+O1xuXG4gIC8qKiBLZXlzIG9mIHRoZSBjYWNoZWQgY29sbGVjdGlvbiwgaW4gdGhlIGNvbGxlY3Rpb24ncyBuYXRpdmUgc29ydCBvcmRlciAqL1xuICByZWFkb25seSBzZWxlY3RLZXlzOiBTZWxlY3RvcjxFbnRpdHlDb2xsZWN0aW9uPFQ+LCBzdHJpbmdbXSB8IG51bWJlcltdPjtcblxuICAvKiogVHJ1ZSB3aGVuIHRoZSBjb2xsZWN0aW9uIGhhcyBiZWVuIGZ1bGx5IGxvYWRlZC4gKi9cbiAgcmVhZG9ubHkgc2VsZWN0TG9hZGVkOiBTZWxlY3RvcjxFbnRpdHlDb2xsZWN0aW9uPFQ+LCBib29sZWFuPjtcblxuICAvKiogVHJ1ZSB3aGVuIGEgbXVsdGktZW50aXR5IHF1ZXJ5IGNvbW1hbmQgaXMgaW4gcHJvZ3Jlc3MuICovXG4gIHJlYWRvbmx5IHNlbGVjdExvYWRpbmc6IFNlbGVjdG9yPEVudGl0eUNvbGxlY3Rpb248VD4sIGJvb2xlYW4+O1xuXG4gIC8qKiBDaGFuZ2VTdGF0ZSAoaW5jbHVkaW5nIG9yaWdpbmFsIHZhbHVlcykgb2YgZW50aXRpZXMgd2l0aCB1bnNhdmVkIGNoYW5nZXMgKi9cbiAgcmVhZG9ubHkgc2VsZWN0Q2hhbmdlU3RhdGU6IFNlbGVjdG9yPEVudGl0eUNvbGxlY3Rpb248VD4sIENoYW5nZVN0YXRlTWFwPFQ+Pjtcbn1cblxuLyoqXG4gKiBUaGUgc2VsZWN0b3IgZnVuY3Rpb25zIGZvciBlbnRpdHkgY29sbGVjdGlvbiBtZW1iZXJzLFxuICogU2VsZWN0cyBmcm9tIHN0b3JlIHJvb3QsIHRocm91Z2ggRW50aXR5Q2FjaGUsIHRvIHRoZSBlbnRpdHkgY29sbGVjdGlvbiBtZW1iZXJcbiAqIENvbnRyYXN0IHdpdGgge0NvbGxlY3Rpb25TZWxlY3RvcnN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eVNlbGVjdG9yczxUPiB7XG4gIC8qKiBOYW1lIG9mIHRoZSBlbnRpdHkgY29sbGVjdGlvbiBmb3IgdGhlc2Ugc2VsZWN0b3JzICovXG4gIHJlYWRvbmx5IGVudGl0eU5hbWU6IHN0cmluZztcblxuICByZWFkb25seSBbbmFtZTogc3RyaW5nXTogTWVtb2l6ZWRTZWxlY3RvcjxFbnRpdHlDb2xsZWN0aW9uPFQ+LCBhbnk+IHwgc3RyaW5nO1xuXG4gIC8qKiBUaGUgY2FjaGVkIEVudGl0eUNvbGxlY3Rpb24gaXRzZWxmICovXG4gIHJlYWRvbmx5IHNlbGVjdENvbGxlY3Rpb246IE1lbW9pemVkU2VsZWN0b3I8T2JqZWN0LCBFbnRpdHlDb2xsZWN0aW9uPFQ+PjtcblxuICAvKiogQ291bnQgb2YgZW50aXRpZXMgaW4gdGhlIGNhY2hlZCBjb2xsZWN0aW9uLiAqL1xuICByZWFkb25seSBzZWxlY3RDb3VudDogTWVtb2l6ZWRTZWxlY3RvcjxPYmplY3QsIG51bWJlcj47XG5cbiAgLyoqIEFsbCBlbnRpdGllcyBpbiB0aGUgY2FjaGVkIGNvbGxlY3Rpb24uICovXG4gIHJlYWRvbmx5IHNlbGVjdEVudGl0aWVzOiBNZW1vaXplZFNlbGVjdG9yPE9iamVjdCwgVFtdPjtcblxuICAvKiogVGhlIEVudGl0eUNhY2hlICovXG4gIHJlYWRvbmx5IHNlbGVjdEVudGl0eUNhY2hlOiBNZW1vaXplZFNlbGVjdG9yPE9iamVjdCwgRW50aXR5Q2FjaGU+O1xuXG4gIC8qKiBNYXAgb2YgZW50aXR5IGtleXMgdG8gZW50aXRpZXMgKi9cbiAgcmVhZG9ubHkgc2VsZWN0RW50aXR5TWFwOiBNZW1vaXplZFNlbGVjdG9yPE9iamVjdCwgRGljdGlvbmFyeTxUPj47XG5cbiAgLyoqIEZpbHRlciBwYXR0ZXJuIGFwcGxpZWQgYnkgdGhlIGVudGl0eSBjb2xsZWN0aW9uJ3MgZmlsdGVyIGZ1bmN0aW9uICovXG4gIHJlYWRvbmx5IHNlbGVjdEZpbHRlcjogTWVtb2l6ZWRTZWxlY3RvcjxPYmplY3QsIHN0cmluZz47XG5cbiAgLyoqIEVudGl0aWVzIGluIHRoZSBjYWNoZWQgY29sbGVjdGlvbiB0aGF0IHBhc3MgdGhlIGZpbHRlciBmdW5jdGlvbiAqL1xuICByZWFkb25seSBzZWxlY3RGaWx0ZXJlZEVudGl0aWVzOiBNZW1vaXplZFNlbGVjdG9yPE9iamVjdCwgVFtdPjtcblxuICAvKiogS2V5cyBvZiB0aGUgY2FjaGVkIGNvbGxlY3Rpb24sIGluIHRoZSBjb2xsZWN0aW9uJ3MgbmF0aXZlIHNvcnQgb3JkZXIgKi9cbiAgcmVhZG9ubHkgc2VsZWN0S2V5czogTWVtb2l6ZWRTZWxlY3RvcjxPYmplY3QsIHN0cmluZ1tdIHwgbnVtYmVyW10+O1xuXG4gIC8qKiBUcnVlIHdoZW4gdGhlIGNvbGxlY3Rpb24gaGFzIGJlZW4gZnVsbHkgbG9hZGVkLiAqL1xuICByZWFkb25seSBzZWxlY3RMb2FkZWQ6IE1lbW9pemVkU2VsZWN0b3I8T2JqZWN0LCBib29sZWFuPjtcblxuICAvKiogVHJ1ZSB3aGVuIGEgbXVsdGktZW50aXR5IHF1ZXJ5IGNvbW1hbmQgaXMgaW4gcHJvZ3Jlc3MuICovXG4gIHJlYWRvbmx5IHNlbGVjdExvYWRpbmc6IE1lbW9pemVkU2VsZWN0b3I8T2JqZWN0LCBib29sZWFuPjtcblxuICAvKiogQ2hhbmdlU3RhdGUgKGluY2x1ZGluZyBvcmlnaW5hbCB2YWx1ZXMpIG9mIGVudGl0aWVzIHdpdGggdW5zYXZlZCBjaGFuZ2VzICovXG4gIHJlYWRvbmx5IHNlbGVjdENoYW5nZVN0YXRlOiBNZW1vaXplZFNlbGVjdG9yPE9iamVjdCwgQ2hhbmdlU3RhdGVNYXA8VD4+O1xufVxuXG4vKiogQ3JlYXRlcyBFbnRpdHlTZWxlY3RvciBmdW5jdGlvbnMgZm9yIGVudGl0eSBjb2xsZWN0aW9ucy4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFbnRpdHlTZWxlY3RvcnNGYWN0b3J5IHtcbiAgcHJpdmF0ZSBlbnRpdHlDb2xsZWN0aW9uQ3JlYXRvcjogRW50aXR5Q29sbGVjdGlvbkNyZWF0b3I7XG4gIHByaXZhdGUgc2VsZWN0RW50aXR5Q2FjaGU6IEVudGl0eUNhY2hlU2VsZWN0b3I7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgZW50aXR5Q29sbGVjdGlvbkNyZWF0b3I/OiBFbnRpdHlDb2xsZWN0aW9uQ3JlYXRvcixcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoRU5USVRZX0NBQ0hFX1NFTEVDVE9SX1RPS0VOKVxuICAgIHNlbGVjdEVudGl0eUNhY2hlPzogRW50aXR5Q2FjaGVTZWxlY3RvclxuICApIHtcbiAgICB0aGlzLmVudGl0eUNvbGxlY3Rpb25DcmVhdG9yID1cbiAgICAgIGVudGl0eUNvbGxlY3Rpb25DcmVhdG9yIHx8IG5ldyBFbnRpdHlDb2xsZWN0aW9uQ3JlYXRvcigpO1xuICAgIHRoaXMuc2VsZWN0RW50aXR5Q2FjaGUgPVxuICAgICAgc2VsZWN0RW50aXR5Q2FjaGUgfHwgY3JlYXRlRW50aXR5Q2FjaGVTZWxlY3RvcihFTlRJVFlfQ0FDSEVfTkFNRSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBOZ1J4IHNlbGVjdG9yIGZyb20gdGhlIHN0b3JlIHJvb3QgdG8gdGhlIG5hbWVkIGNvbGxlY3Rpb24sXG4gICAqIGUuZy4gZnJvbSBPYmplY3QgdG8gSGVyb2VzLlxuICAgKiBAcGFyYW0gZW50aXR5TmFtZSB0aGUgbmFtZSBvZiB0aGUgY29sbGVjdGlvblxuICAgKi9cbiAgY3JlYXRlQ29sbGVjdGlvblNlbGVjdG9yPFxuICAgIFQgPSBhbnksXG4gICAgQyBleHRlbmRzIEVudGl0eUNvbGxlY3Rpb248VD4gPSBFbnRpdHlDb2xsZWN0aW9uPFQ+XG4gID4oZW50aXR5TmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgZ2V0Q29sbGVjdGlvbiA9IChjYWNoZTogRW50aXR5Q2FjaGUgPSB7fSkgPT5cbiAgICAgIDxDPihcbiAgICAgICAgKGNhY2hlW2VudGl0eU5hbWVdIHx8XG4gICAgICAgICAgdGhpcy5lbnRpdHlDb2xsZWN0aW9uQ3JlYXRvci5jcmVhdGU8VD4oZW50aXR5TmFtZSkpXG4gICAgICApO1xuICAgIHJldHVybiBjcmVhdGVTZWxlY3Rvcih0aGlzLnNlbGVjdEVudGl0eUNhY2hlLCBnZXRDb2xsZWN0aW9uKTtcbiAgfVxuXG4gIC8vLy8vLy8gY3JlYXRlQ29sbGVjdGlvblNlbGVjdG9ycyAvLy8vLy8vLy8vXG5cbiAgLy8gQmFzZWQgb24gQG5ncngvZW50aXR5L3N0YXRlX3NlbGVjdG9ycy50c1xuXG4gIC8vIHRzbGludDpkaXNhYmxlOnVuaWZpZWQtc2lnbmF0dXJlc1xuICAvLyBjcmVhdGVDb2xsZWN0aW9uU2VsZWN0b3JzKG1ldGFkYXRhKSBvdmVybG9hZFxuICAvKipcbiAgICogQ3JlYXRlcyBlbnRpdHkgY29sbGVjdGlvbiBzZWxlY3RvcnMgZnJvbSBtZXRhZGF0YS5cbiAgICogQHBhcmFtIG1ldGFkYXRhIC0gRW50aXR5TWV0YWRhdGEgZm9yIHRoZSBjb2xsZWN0aW9uLlxuICAgKiBNYXkgYmUgcGFydGlhbCBidXQgbXVjaCBoYXZlIGBlbnRpdHlOYW1lYC5cbiAgICovXG4gIGNyZWF0ZUNvbGxlY3Rpb25TZWxlY3RvcnM8XG4gICAgVCxcbiAgICBTIGV4dGVuZHMgQ29sbGVjdGlvblNlbGVjdG9yczxUPiA9IENvbGxlY3Rpb25TZWxlY3RvcnM8VD5cbiAgPihtZXRhZGF0YTogRW50aXR5TWV0YWRhdGE8VD4pOiBTO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlOnVuaWZpZWQtc2lnbmF0dXJlc1xuICAvLyBjcmVhdGVDb2xsZWN0aW9uU2VsZWN0b3JzKGVudGl0eU5hbWUpIG92ZXJsb2FkXG4gIC8qKlxuICAgKiBDcmVhdGVzIGRlZmF1bHQgZW50aXR5IGNvbGxlY3Rpb24gc2VsZWN0b3JzIGZvciBhbiBlbnRpdHkgdHlwZS5cbiAgICogVXNlIHRoZSBtZXRhZGF0YSBvdmVybG9hZCBmb3IgYWRkaXRpb25hbCBjb2xsZWN0aW9uIHNlbGVjdG9ycy5cbiAgICogQHBhcmFtIGVudGl0eU5hbWUgLSBuYW1lIG9mIHRoZSBlbnRpdHkgdHlwZVxuICAgKi9cbiAgY3JlYXRlQ29sbGVjdGlvblNlbGVjdG9yczxcbiAgICBULFxuICAgIFMgZXh0ZW5kcyBDb2xsZWN0aW9uU2VsZWN0b3JzPFQ+ID0gQ29sbGVjdGlvblNlbGVjdG9yczxUPlxuICA+KGVudGl0eU5hbWU6IHN0cmluZyk6IFM7XG5cbiAgLy8gY3JlYXRlQ29sbGVjdGlvblNlbGVjdG9ycyBpbXBsZW1lbnRhdGlvblxuICBjcmVhdGVDb2xsZWN0aW9uU2VsZWN0b3JzPFxuICAgIFQsXG4gICAgUyBleHRlbmRzIENvbGxlY3Rpb25TZWxlY3RvcnM8VD4gPSBDb2xsZWN0aW9uU2VsZWN0b3JzPFQ+XG4gID4obWV0YWRhdGFPck5hbWU6IEVudGl0eU1ldGFkYXRhPFQ+IHwgc3RyaW5nKTogUyB7XG4gICAgY29uc3QgbWV0YWRhdGEgPVxuICAgICAgdHlwZW9mIG1ldGFkYXRhT3JOYW1lID09PSAnc3RyaW5nJ1xuICAgICAgICA/IHsgZW50aXR5TmFtZTogbWV0YWRhdGFPck5hbWUgfVxuICAgICAgICA6IG1ldGFkYXRhT3JOYW1lO1xuICAgIGNvbnN0IHNlbGVjdEtleXMgPSAoYzogRW50aXR5Q29sbGVjdGlvbjxUPikgPT4gYy5pZHM7XG4gICAgY29uc3Qgc2VsZWN0RW50aXR5TWFwID0gKGM6IEVudGl0eUNvbGxlY3Rpb248VD4pID0+IGMuZW50aXRpZXM7XG5cbiAgICBjb25zdCBzZWxlY3RFbnRpdGllczogU2VsZWN0b3I8XG4gICAgICBFbnRpdHlDb2xsZWN0aW9uPFQ+LFxuICAgICAgVFtdXG4gICAgPiA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgc2VsZWN0S2V5cyxcbiAgICAgIHNlbGVjdEVudGl0eU1hcCxcbiAgICAgIChrZXlzOiAobnVtYmVyIHwgc3RyaW5nKVtdLCBlbnRpdGllczogRGljdGlvbmFyeTxUPik6IFRbXSA9PlxuICAgICAgICBrZXlzLm1hcCgoa2V5KSA9PiBlbnRpdGllc1trZXldIGFzIFQpXG4gICAgKTtcblxuICAgIGNvbnN0IHNlbGVjdENvdW50OiBTZWxlY3RvcjxFbnRpdHlDb2xsZWN0aW9uPFQ+LCBudW1iZXI+ID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICBzZWxlY3RLZXlzLFxuICAgICAgKGtleXMpID0+IGtleXMubGVuZ3RoXG4gICAgKTtcblxuICAgIC8vIEVudGl0eUNvbGxlY3Rpb24gc2VsZWN0b3JzIHRoYXQgZ28gYmV5b25kIHRoZSBuZ3J4L2VudGl0eS9FbnRpdHlTdGF0ZSBzZWxlY3RvcnNcbiAgICBjb25zdCBzZWxlY3RGaWx0ZXIgPSAoYzogRW50aXR5Q29sbGVjdGlvbjxUPikgPT4gYy5maWx0ZXI7XG5cbiAgICBjb25zdCBmaWx0ZXJGbiA9IG1ldGFkYXRhLmZpbHRlckZuO1xuICAgIGNvbnN0IHNlbGVjdEZpbHRlcmVkRW50aXRpZXM6IFNlbGVjdG9yPEVudGl0eUNvbGxlY3Rpb248VD4sIFRbXT4gPSBmaWx0ZXJGblxuICAgICAgPyBjcmVhdGVTZWxlY3RvcihcbiAgICAgICAgICBzZWxlY3RFbnRpdGllcyxcbiAgICAgICAgICBzZWxlY3RGaWx0ZXIsXG4gICAgICAgICAgKGVudGl0aWVzOiBUW10sIHBhdHRlcm46IGFueSk6IFRbXSA9PiBmaWx0ZXJGbihlbnRpdGllcywgcGF0dGVybilcbiAgICAgICAgKVxuICAgICAgOiBzZWxlY3RFbnRpdGllcztcblxuICAgIGNvbnN0IHNlbGVjdExvYWRlZCA9IChjOiBFbnRpdHlDb2xsZWN0aW9uPFQ+KSA9PiBjLmxvYWRlZDtcbiAgICBjb25zdCBzZWxlY3RMb2FkaW5nID0gKGM6IEVudGl0eUNvbGxlY3Rpb248VD4pID0+IGMubG9hZGluZztcbiAgICBjb25zdCBzZWxlY3RDaGFuZ2VTdGF0ZSA9IChjOiBFbnRpdHlDb2xsZWN0aW9uPFQ+KSA9PiBjLmNoYW5nZVN0YXRlO1xuXG4gICAgLy8gQ3JlYXRlIGNvbGxlY3Rpb24gc2VsZWN0b3JzIGZvciBlYWNoIGBhZGRpdGlvbmFsQ29sbGVjdGlvblN0YXRlYCBwcm9wZXJ0eS5cbiAgICAvLyBUaGVzZSBhbGwgZXh0ZW5kIGZyb20gYHNlbGVjdENvbGxlY3Rpb25gXG4gICAgY29uc3QgZXh0cmEgPSBtZXRhZGF0YS5hZGRpdGlvbmFsQ29sbGVjdGlvblN0YXRlIHx8IHt9O1xuICAgIGNvbnN0IGV4dHJhU2VsZWN0b3JzOiB7XG4gICAgICBbbmFtZTogc3RyaW5nXTogU2VsZWN0b3I8RW50aXR5Q29sbGVjdGlvbjxUPiwgYW55PjtcbiAgICB9ID0ge307XG4gICAgT2JqZWN0LmtleXMoZXh0cmEpLmZvckVhY2goKGspID0+IHtcbiAgICAgIGV4dHJhU2VsZWN0b3JzWydzZWxlY3QnICsga1swXS50b1VwcGVyQ2FzZSgpICsgay5zbGljZSgxKV0gPSAoXG4gICAgICAgIGM6IEVudGl0eUNvbGxlY3Rpb248VD5cbiAgICAgICkgPT4gKDxhbnk+Yylba107XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2VsZWN0Q291bnQsXG4gICAgICBzZWxlY3RFbnRpdGllcyxcbiAgICAgIHNlbGVjdEVudGl0eU1hcCxcbiAgICAgIHNlbGVjdEZpbHRlcixcbiAgICAgIHNlbGVjdEZpbHRlcmVkRW50aXRpZXMsXG4gICAgICBzZWxlY3RLZXlzLFxuICAgICAgc2VsZWN0TG9hZGVkLFxuICAgICAgc2VsZWN0TG9hZGluZyxcbiAgICAgIHNlbGVjdENoYW5nZVN0YXRlLFxuICAgICAgLi4uZXh0cmFTZWxlY3RvcnMsXG4gICAgfSBhcyBTO1xuICB9XG5cbiAgLy8vLy8vLyBjcmVhdGUgLy8vLy8vLy8vL1xuXG4gIC8vIGNyZWF0ZShtZXRhZGF0YSkgb3ZlcmxvYWRcbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIHN0b3JlLXJvb3RlZCBzZWxlY3RvcnMgZm9yIGFuIGVudGl0eSBjb2xsZWN0aW9uLlxuICAgKiB7RW50aXR5U2VsZWN0b3JzJEZhY3Rvcnl9IHR1cm5zIHRoZW0gaW50byBzZWxlY3RvcnMkLlxuICAgKlxuICAgKiBAcGFyYW0gbWV0YWRhdGEgLSBFbnRpdHlNZXRhZGF0YSBmb3IgdGhlIGNvbGxlY3Rpb24uXG4gICAqIE1heSBiZSBwYXJ0aWFsIGJ1dCBtdWNoIGhhdmUgYGVudGl0eU5hbWVgLlxuICAgKlxuICAgKiBCYXNlZCBvbiBuZ3J4L2VudGl0eS9zdGF0ZV9zZWxlY3RvcnMudHNcbiAgICogRGlmZmVycyBpbiB0aGF0IHRoZXNlIHNlbGVjdG9ycyBzZWxlY3QgZnJvbSB0aGUgTmdSeCBzdG9yZSByb290LFxuICAgKiB0aHJvdWdoIHRoZSBjb2xsZWN0aW9uLCB0byB0aGUgY29sbGVjdGlvbiBtZW1iZXJzLlxuICAgKi9cbiAgY3JlYXRlPFQsIFMgZXh0ZW5kcyBFbnRpdHlTZWxlY3RvcnM8VD4gPSBFbnRpdHlTZWxlY3RvcnM8VD4+KFxuICAgIG1ldGFkYXRhOiBFbnRpdHlNZXRhZGF0YTxUPlxuICApOiBTO1xuXG4gIC8vIGNyZWF0ZShlbnRpdHlOYW1lKSBvdmVybG9hZFxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgZGVmYXVsdCBzdG9yZS1yb290ZWQgc2VsZWN0b3JzIGZvciBhbiBlbnRpdHkgY29sbGVjdGlvbi5cbiAgICoge0VudGl0eVNlbGVjdG9ycyRGYWN0b3J5fSB0dXJucyB0aGVtIGludG8gc2VsZWN0b3JzJC5cbiAgICogVXNlIHRoZSBtZXRhZGF0YSBvdmVybG9hZCBmb3IgYWRkaXRpb25hbCBjb2xsZWN0aW9uIHNlbGVjdG9ycy5cbiAgICpcbiAgICogQHBhcmFtIGVudGl0eU5hbWUgLSBuYW1lIG9mIHRoZSBlbnRpdHkgdHlwZS5cbiAgICpcbiAgICogQmFzZWQgb24gbmdyeC9lbnRpdHkvc3RhdGVfc2VsZWN0b3JzLnRzXG4gICAqIERpZmZlcnMgaW4gdGhhdCB0aGVzZSBzZWxlY3RvcnMgc2VsZWN0IGZyb20gdGhlIE5nUnggc3RvcmUgcm9vdCxcbiAgICogdGhyb3VnaCB0aGUgY29sbGVjdGlvbiwgdG8gdGhlIGNvbGxlY3Rpb24gbWVtYmVycy5cbiAgICovXG4gIGNyZWF0ZTxULCBTIGV4dGVuZHMgRW50aXR5U2VsZWN0b3JzPFQ+ID0gRW50aXR5U2VsZWN0b3JzPFQ+PihcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dW5pZmllZC1zaWduYXR1cmVzXG4gICAgZW50aXR5TmFtZTogc3RyaW5nXG4gICk6IFM7XG5cbiAgLy8gY3JlYXRlQ29sbGVjdGlvblNlbGVjdG9ycyBpbXBsZW1lbnRhdGlvblxuICBjcmVhdGU8VCwgUyBleHRlbmRzIEVudGl0eVNlbGVjdG9yczxUPiA9IEVudGl0eVNlbGVjdG9yczxUPj4oXG4gICAgbWV0YWRhdGFPck5hbWU6IEVudGl0eU1ldGFkYXRhPFQ+IHwgc3RyaW5nXG4gICk6IFMge1xuICAgIGNvbnN0IG1ldGFkYXRhID1cbiAgICAgIHR5cGVvZiBtZXRhZGF0YU9yTmFtZSA9PT0gJ3N0cmluZydcbiAgICAgICAgPyB7IGVudGl0eU5hbWU6IG1ldGFkYXRhT3JOYW1lIH1cbiAgICAgICAgOiBtZXRhZGF0YU9yTmFtZTtcbiAgICBjb25zdCBlbnRpdHlOYW1lID0gbWV0YWRhdGEuZW50aXR5TmFtZTtcbiAgICBjb25zdCBzZWxlY3RDb2xsZWN0aW9uOiBTZWxlY3RvcjxcbiAgICAgIE9iamVjdCxcbiAgICAgIEVudGl0eUNvbGxlY3Rpb248VD5cbiAgICA+ID0gdGhpcy5jcmVhdGVDb2xsZWN0aW9uU2VsZWN0b3I8VD4oZW50aXR5TmFtZSk7XG4gICAgY29uc3QgY29sbGVjdGlvblNlbGVjdG9ycyA9IHRoaXMuY3JlYXRlQ29sbGVjdGlvblNlbGVjdG9yczxUPihtZXRhZGF0YSk7XG5cbiAgICBjb25zdCBlbnRpdHlTZWxlY3RvcnM6IHtcbiAgICAgIFtuYW1lOiBzdHJpbmddOiBTZWxlY3RvcjxFbnRpdHlDb2xsZWN0aW9uPFQ+LCBhbnk+O1xuICAgIH0gPSB7fTtcbiAgICBPYmplY3Qua2V5cyhjb2xsZWN0aW9uU2VsZWN0b3JzKS5mb3JFYWNoKChrKSA9PiB7XG4gICAgICBlbnRpdHlTZWxlY3RvcnNba10gPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgICAgc2VsZWN0Q29sbGVjdGlvbixcbiAgICAgICAgY29sbGVjdGlvblNlbGVjdG9yc1trXVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBlbnRpdHlOYW1lLFxuICAgICAgc2VsZWN0Q29sbGVjdGlvbixcbiAgICAgIHNlbGVjdEVudGl0eUNhY2hlOiB0aGlzLnNlbGVjdEVudGl0eUNhY2hlLFxuICAgICAgLi4uZW50aXR5U2VsZWN0b3JzLFxuICAgIH0gYXMgUztcbiAgfVxufVxuIl19
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXNlbGVjdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZGF0YS9zcmMvc2VsZWN0b3JzL2VudGl0eS1zZWxlY3RvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTdELE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxhQUFhLENBQUM7QUFJdkQsT0FBTyxFQUNMLDJCQUEyQixFQUUzQix5QkFBeUIsR0FDMUIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUsxRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQW9GaEYsK0RBQStEO0FBRS9ELE1BQU0sT0FBTyxzQkFBc0I7SUFJakMsWUFDYyx1QkFBaUQsRUFHN0QsaUJBQXVDO1FBRXZDLElBQUksQ0FBQyx1QkFBdUI7WUFDMUIsdUJBQXVCLElBQUksSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxpQkFBaUI7WUFDcEIsaUJBQWlCLElBQUkseUJBQXlCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHdCQUF3QixDQUd0QixVQUFrQjtRQUNsQixNQUFNLGFBQWEsR0FBRyxDQUFDLFFBQXFCLEVBQUUsRUFBRSxFQUFFLENBQzdDLENBQ0QsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQ2hCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUksVUFBVSxDQUFDLENBQUMsQ0FDdEQsQ0FBQztRQUNKLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBOEJELDJDQUEyQztJQUMzQyx5QkFBeUIs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UUFBUSxDQUFDLENBQUM7UUFFeEUsTUFBTSxlQUFlLEdBRWpCLEVBQUUsQ0FBQztRQUNQLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUM3QyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUNqQyxnQkFBZ0IsRUFDaEIsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQ3ZCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sZ0JBQ0wsVUFBVTtZQUNWLGdCQUFnQixFQUNoQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCLElBQ3RDLGVBQWUsQ0FDZCxDQUFDO0lBQ1QsQ0FBQzs7O1lBck1GLFVBQVU7Ozs7WUFyRkYsdUJBQXVCLHVCQTJGM0IsUUFBUTs0Q0FDUixRQUFRLFlBQ1IsTUFBTSxTQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8gUHJvZCBidWlsZCByZXF1aXJlcyBgTWVtb2l6ZWRTZWxlY3RvciBldmVuIHRob3VnaCBub3QgdXNlZC5cbmltcG9ydCB7IE1lbW9pemVkU2VsZWN0b3IgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBjcmVhdGVTZWxlY3RvciwgU2VsZWN0b3IgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnQG5ncngvZW50aXR5JztcblxuaW1wb3J0IHsgRW50aXR5Q2FjaGUgfSBmcm9tICcuLi9yZWR1Y2Vycy9lbnRpdHktY2FjaGUnO1xuaW1wb3J0IHtcbiAgRU5USVRZX0NBQ0hFX1NFTEVDVE9SX1RPS0VOLFxuICBFbnRpdHlDYWNoZVNlbGVjdG9yLFxuICBjcmVhdGVFbnRpdHlDYWNoZVNlbGVjdG9yLFxufSBmcm9tICcuL2VudGl0eS1jYWNoZS1zZWxlY3Rvcic7XG5pbXBvcnQgeyBFTlRJVFlfQ0FDSEVfTkFNRSB9IGZyb20gJy4uL3JlZHVjZXJzL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBFbnRpdHlDb2xsZWN0aW9uLFxuICBDaGFuZ2VTdGF0ZU1hcCxcbn0gZnJvbSAnLi4vcmVkdWNlcnMvZW50aXR5LWNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgRW50aXR5Q29sbGVjdGlvbkNyZWF0b3IgfSBmcm9tICcuLi9yZWR1Y2Vycy9lbnRpdHktY29sbGVjdGlvbi1jcmVhdG9yJztcbmltcG9ydCB7IEVudGl0eU1ldGFkYXRhIH0gZnJvbSAnLi4vZW50aXR5LW1ldGFkYXRhL2VudGl0eS1tZXRhZGF0YSc7XG5cbi8qKlxuICogVGhlIHNlbGVjdG9yIGZ1bmN0aW9ucyBmb3IgZW50aXR5IGNvbGxlY3Rpb24gbWVtYmVycyxcbiAqIFNlbGVjdHMgZnJvbSB0aGUgZW50aXR5IGNvbGxlY3Rpb24gdG8gdGhlIGNvbGxlY3Rpb24gbWVtYmVyXG4gKiBDb250cmFzdCB3aXRoIHtFbnRpdHlTZWxlY3RvcnN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbGxlY3Rpb25TZWxlY3RvcnM8VD4ge1xuICByZWFkb25seSBbc2VsZWN0b3I6IHN0cmluZ106IGFueTtcblxuICAvKiogQ291bnQgb2YgZW50aXRpZXMgaW4gdGhlIGNhY2hlZCBjb2xsZWN0aW9uLiAqL1xuICByZWFkb25seSBzZWxlY3RDb3VudDogU2VsZWN0b3I8RW50aXR5Q29sbGVjdGlvbjxUPiwgbnVtYmVyPjtcblxuICAvKiogQWxsIGVudGl0aWVzIGluIHRoZSBjYWNoZWQgY29sbGVjdGlvbi4gKi9cbiAgcmVhZG9ubHkgc2VsZWN0RW50aXRpZXM6IFNlbGVjdG9yPEVudGl0eUNvbGxlY3Rpb248VD4sIFRbXT47XG5cbiAgLyoqIE1hcCBvZiBlbnRpdHkga2V5cyB0byBlbnRpdGllcyAqL1xuICByZWFkb25seSBzZWxlY3RFbnRpdHlNYXA6IFNlbGVjdG9yPEVudGl0eUNvbGxlY3Rpb248VD4sIERpY3Rpb25hcnk8VD4+O1xuXG4gIC8qKiBGaWx0ZXIgcGF0dGVybiBhcHBsaWVkIGJ5IHRoZSBlbnRpdHkgY29sbGVjdGlvbidzIGZpbHRlciBmdW5jdGlvbiAqL1xuICByZWFkb25seSBzZWxlY3RGaWx0ZXI6IFNlbGVjdG9yPEVudGl0eUNvbGxlY3Rpb248VD4sIHN0cmluZz47XG5cbiAgLyoqIEVudGl0aWVzIGluIHRoZSBjYWNoZWQgY29sbGVjdGlvbiB0aGF0IHBhc3MgdGhlIGZpbHRlciBmdW5jdGlvbiAqL1xuICByZWFkb25seSBzZWxlY3RGaWx0ZXJlZEVudGl0aWVzOiBTZWxlY3RvcjxFbnRpdHlDb2xsZWN0aW9uPFQ+LCBUW10+O1xuXG4gIC8qKiBLZXlzIG9mIHRoZSBjYWNoZWQgY29sbGVjdGlvbiwgaW4gdGhlIGNvbGxlY3Rpb24ncyBuYXRpdmUgc29ydCBvcmRlciAqL1xuICByZWFkb25seSBzZWxlY3RLZXlzOiBTZWxlY3RvcjxFbnRpdHlDb2xsZWN0aW9uPFQ+LCBzdHJpbmdbXSB8IG51bWJlcltdPjtcblxuICAvKiogVHJ1ZSB3aGVuIHRoZSBjb2xsZWN0aW9uIGhhcyBiZWVuIGZ1bGx5IGxvYWRlZC4gKi9cbiAgcmVhZG9ubHkgc2VsZWN0TG9hZGVkOiBTZWxlY3RvcjxFbnRpdHlDb2xsZWN0aW9uPFQ+LCBib29sZWFuPjtcblxuICAvKiogVHJ1ZSB3aGVuIGEgbXVsdGktZW50aXR5IHF1ZXJ5IGNvbW1hbmQgaXMgaW4gcHJvZ3Jlc3MuICovXG4gIHJlYWRvbmx5IHNlbGVjdExvYWRpbmc6IFNlbGVjdG9yPEVudGl0eUNvbGxlY3Rpb248VD4sIGJvb2xlYW4+O1xuXG4gIC8qKiBDaGFuZ2VTdGF0ZSAoaW5jbHVkaW5nIG9yaWdpbmFsIHZhbHVlcykgb2YgZW50aXRpZXMgd2l0aCB1bnNhdmVkIGNoYW5nZXMgKi9cbiAgcmVhZG9ubHkgc2VsZWN0Q2hhbmdlU3RhdGU6IFNlbGVjdG9yPEVudGl0eUNvbGxlY3Rpb248VD4sIENoYW5nZVN0YXRlTWFwPFQ+Pjtcbn1cblxuLyoqXG4gKiBUaGUgc2VsZWN0b3IgZnVuY3Rpb25zIGZvciBlbnRpdHkgY29sbGVjdGlvbiBtZW1iZXJzLFxuICogU2VsZWN0cyBmcm9tIHN0b3JlIHJvb3QsIHRocm91Z2ggRW50aXR5Q2FjaGUsIHRvIHRoZSBlbnRpdHkgY29sbGVjdGlvbiBtZW1iZXJcbiAqIENvbnRyYXN0IHdpdGgge0NvbGxlY3Rpb25TZWxlY3RvcnN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eVNlbGVjdG9yczxUPiB7XG4gIC8qKiBOYW1lIG9mIHRoZSBlbnRpdHkgY29sbGVjdGlvbiBmb3IgdGhlc2Ugc2VsZWN0b3JzICovXG4gIHJlYWRvbmx5IGVudGl0eU5hbWU6IHN0cmluZztcblxuICByZWFkb25seSBbbmFtZTogc3RyaW5nXTogTWVtb2l6ZWRTZWxlY3RvcjxFbnRpdHlDb2xsZWN0aW9uPFQ+LCBhbnk+IHwgc3RyaW5nO1xuXG4gIC8qKiBUaGUgY2FjaGVkIEVudGl0eUNvbGxlY3Rpb24gaXRzZWxmICovXG4gIHJlYWRvbmx5IHNlbGVjdENvbGxlY3Rpb246IE1lbW9pemVkU2VsZWN0b3I8T2JqZWN0LCBFbnRpdHlDb2xsZWN0aW9uPFQ+PjtcblxuICAvKiogQ291bnQgb2YgZW50aXRpZXMgaW4gdGhlIGNhY2hlZCBjb2xsZWN0aW9uLiAqL1xuICByZWFkb25seSBzZWxlY3RDb3VudDogTWVtb2l6ZWRTZWxlY3RvcjxPYmplY3QsIG51bWJlcj47XG5cbiAgLyoqIEFsbCBlbnRpdGllcyBpbiB0aGUgY2FjaGVkIGNvbGxlY3Rpb24uICovXG4gIHJlYWRvbmx5IHNlbGVjdEVudGl0aWVzOiBNZW1vaXplZFNlbGVjdG9yPE9iamVjdCwgVFtdPjtcblxuICAvKiogVGhlIEVudGl0eUNhY2hlICovXG4gIHJlYWRvbmx5IHNlbGVjdEVudGl0eUNhY2hlOiBNZW1vaXplZFNlbGVjdG9yPE9iamVjdCwgRW50aXR5Q2FjaGU+O1xuXG4gIC8qKiBNYXAgb2YgZW50aXR5IGtleXMgdG8gZW50aXRpZXMgKi9cbiAgcmVhZG9ubHkgc2VsZWN0RW50aXR5TWFwOiBNZW1vaXplZFNlbGVjdG9yPE9iamVjdCwgRGljdGlvbmFyeTxUPj47XG5cbiAgLyoqIEZpbHRlciBwYXR0ZXJuIGFwcGxpZWQgYnkgdGhlIGVudGl0eSBjb2xsZWN0aW9uJ3MgZmlsdGVyIGZ1bmN0aW9uICovXG4gIHJlYWRvbmx5IHNlbGVjdEZpbHRlcjogTWVtb2l6ZWRTZWxlY3RvcjxPYmplY3QsIHN0cmluZz47XG5cbiAgLyoqIEVudGl0aWVzIGluIHRoZSBjYWNoZWQgY29sbGVjdGlvbiB0aGF0IHBhc3MgdGhlIGZpbHRlciBmdW5jdGlvbiAqL1xuICByZWFkb25seSBzZWxlY3RGaWx0ZXJlZEVudGl0aWVzOiBNZW1vaXplZFNlbGVjdG9yPE9iamVjdCwgVFtdPjtcblxuICAvKiogS2V5cyBvZiB0aGUgY2FjaGVkIGNvbGxlY3Rpb24sIGluIHRoZSBjb2xsZWN0aW9uJ3MgbmF0aXZlIHNvcnQgb3JkZXIgKi9cbiAgcmVhZG9ubHkgc2VsZWN0S2V5czogTWVtb2l6ZWRTZWxlY3RvcjxPYmplY3QsIHN0cmluZ1tdIHwgbnVtYmVyW10+O1xuXG4gIC8qKiBUcnVlIHdoZW4gdGhlIGNvbGxlY3Rpb24gaGFzIGJlZW4gZnVsbHkgbG9hZGVkLiAqL1xuICByZWFkb25seSBzZWxlY3RMb2FkZWQ6IE1lbW9pemVkU2VsZWN0b3I8T2JqZWN0LCBib29sZWFuPjtcblxuICAvKiogVHJ1ZSB3aGVuIGEgbXVsdGktZW50aXR5IHF1ZXJ5IGNvbW1hbmQgaXMgaW4gcHJvZ3Jlc3MuICovXG4gIHJlYWRvbmx5IHNlbGVjdExvYWRpbmc6IE1lbW9pemVkU2VsZWN0b3I8T2JqZWN0LCBib29sZWFuPjtcblxuICAvKiogQ2hhbmdlU3RhdGUgKGluY2x1ZGluZyBvcmlnaW5hbCB2YWx1ZXMpIG9mIGVudGl0aWVzIHdpdGggdW5zYXZlZCBjaGFuZ2VzICovXG4gIHJlYWRvbmx5IHNlbGVjdENoYW5nZVN0YXRlOiBNZW1vaXplZFNlbGVjdG9yPE9iamVjdCwgQ2hhbmdlU3RhdGVNYXA8VD4+O1xufVxuXG4vKiogQ3JlYXRlcyBFbnRpdHlTZWxlY3RvciBmdW5jdGlvbnMgZm9yIGVudGl0eSBjb2xsZWN0aW9ucy4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFbnRpdHlTZWxlY3RvcnNGYWN0b3J5IHtcbiAgcHJpdmF0ZSBlbnRpdHlDb2xsZWN0aW9uQ3JlYXRvcjogRW50aXR5Q29sbGVjdGlvbkNyZWF0b3I7XG4gIHByaXZhdGUgc2VsZWN0RW50aXR5Q2FjaGU6IEVudGl0eUNhY2hlU2VsZWN0b3I7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgZW50aXR5Q29sbGVjdGlvbkNyZWF0b3I/OiBFbnRpdHlDb2xsZWN0aW9uQ3JlYXRvcixcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoRU5USVRZX0NBQ0hFX1NFTEVDVE9SX1RPS0VOKVxuICAgIHNlbGVjdEVudGl0eUNhY2hlPzogRW50aXR5Q2FjaGVTZWxlY3RvclxuICApIHtcbiAgICB0aGlzLmVudGl0eUNvbGxlY3Rpb25DcmVhdG9yID1cbiAgICAgIGVudGl0eUNvbGxlY3Rpb25DcmVhdG9yIHx8IG5ldyBFbnRpdHlDb2xsZWN0aW9uQ3JlYXRvcigpO1xuICAgIHRoaXMuc2VsZWN0RW50aXR5Q2FjaGUgPVxuICAgICAgc2VsZWN0RW50aXR5Q2FjaGUgfHwgY3JlYXRlRW50aXR5Q2FjaGVTZWxlY3RvcihFTlRJVFlfQ0FDSEVfTkFNRSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBOZ1J4IHNlbGVjdG9yIGZyb20gdGhlIHN0b3JlIHJvb3QgdG8gdGhlIG5hbWVkIGNvbGxlY3Rpb24sXG4gICAqIGUuZy4gZnJvbSBPYmplY3QgdG8gSGVyb2VzLlxuICAgKiBAcGFyYW0gZW50aXR5TmFtZSB0aGUgbmFtZSBvZiB0aGUgY29sbGVjdGlvblxuICAgKi9cbiAgY3JlYXRlQ29sbGVjdGlvblNlbGVjdG9yPFxuICAgIFQgPSBhbnksXG4gICAgQyBleHRlbmRzIEVudGl0eUNvbGxlY3Rpb248VD4gPSBFbnRpdHlDb2xsZWN0aW9uPFQ+XG4gID4oZW50aXR5TmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgZ2V0Q29sbGVjdGlvbiA9IChjYWNoZTogRW50aXR5Q2FjaGUgPSB7fSkgPT5cbiAgICAgIDxDPihcbiAgICAgICAgKGNhY2hlW2VudGl0eU5hbWVdIHx8XG4gICAgICAgICAgdGhpcy5lbnRpdHlDb2xsZWN0aW9uQ3JlYXRvci5jcmVhdGU8VD4oZW50aXR5TmFtZSkpXG4gICAgICApO1xuICAgIHJldHVybiBjcmVhdGVTZWxlY3Rvcih0aGlzLnNlbGVjdEVudGl0eUNhY2hlLCBnZXRDb2xsZWN0aW9uKTtcbiAgfVxuXG4gIC8vLy8vLy8gY3JlYXRlQ29sbGVjdGlvblNlbGVjdG9ycyAvLy8vLy8vLy8vXG5cbiAgLy8gQmFzZWQgb24gQG5ncngvZW50aXR5L3N0YXRlX3NlbGVjdG9ycy50c1xuXG4gIC8vIHRzbGludDpkaXNhYmxlOnVuaWZpZWQtc2lnbmF0dXJlc1xuICAvLyBjcmVhdGVDb2xsZWN0aW9uU2VsZWN0b3JzKG1ldGFkYXRhKSBvdmVybG9hZFxuICAvKipcbiAgICogQ3JlYXRlcyBlbnRpdHkgY29sbGVjdGlvbiBzZWxlY3RvcnMgZnJvbSBtZXRhZGF0YS5cbiAgICogQHBhcmFtIG1ldGFkYXRhIC0gRW50aXR5TWV0YWRhdGEgZm9yIHRoZSBjb2xsZWN0aW9uLlxuICAgKiBNYXkgYmUgcGFydGlhbCBidXQgbXVjaCBoYXZlIGBlbnRpdHlOYW1lYC5cbiAgICovXG4gIGNyZWF0ZUNvbGxlY3Rpb25TZWxlY3RvcnM8XG4gICAgVCxcbiAgICBTIGV4dGVuZHMgQ29sbGVjdGlvblNlbGVjdG9yczxUPiA9IENvbGxlY3Rpb25TZWxlY3RvcnM8VD5cbiAgPihtZXRhZGF0YTogRW50aXR5TWV0YWRhdGE8VD4pOiBTO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlOnVuaWZpZWQtc2lnbmF0dXJlc1xuICAvLyBjcmVhdGVDb2xsZWN0aW9uU2VsZWN0b3JzKGVudGl0eU5hbWUpIG92ZXJsb2FkXG4gIC8qKlxuICAgKiBDcmVhdGVzIGRlZmF1bHQgZW50aXR5IGNvbGxlY3Rpb24gc2VsZWN0b3JzIGZvciBhbiBlbnRpdHkgdHlwZS5cbiAgICogVXNlIHRoZSBtZXRhZGF0YSBvdmVybG9hZCBmb3IgYWRkaXRpb25hbCBjb2xsZWN0aW9uIHNlbGVjdG9ycy5cbiAgICogQHBhcmFtIGVudGl0eU5hbWUgLSBuYW1lIG9mIHRoZSBlbnRpdHkgdHlwZVxuICAgKi9cbiAgY3JlYXRlQ29sbGVjdGlvblNlbGVjdG9yczxcbiAgICBULFxuICAgIFMgZXh0ZW5kcyBDb2xsZWN0aW9uU2VsZWN0b3JzPFQ+ID0gQ29sbGVjdGlvblNlbGVjdG9yczxUPlxuICA+KGVudGl0eU5hbWU6IHN0cmluZyk6IFM7XG5cbiAgLy8gY3JlYXRlQ29sbGVjdGlvblNlbGVjdG9ycyBpbXBsZW1lbnRhdGlvblxuICBjcmVhdGVDb2xsZWN0aW9uU2VsZWN0b3JzPFxuICAgIFQsXG4gICAgUyBleHRlbmRzIENvbGxlY3Rpb25TZWxlY3RvcnM8VD4gPSBDb2xsZWN0aW9uU2VsZWN0b3JzPFQ+XG4gID4obWV0YWRhdGFPck5hbWU6IEVudGl0eU1ldGFkYXRhPFQ+IHwgc3RyaW5nKTogUyB7XG4gICAgY29uc3QgbWV0YWRhdGEgPVxuICAgICAgdHlwZW9mIG1ldGFkYXRhT3JOYW1lID09PSAnc3RyaW5nJ1xuICAgICAgICA/IHsgZW50aXR5TmFtZTogbWV0YWRhdGFPck5hbWUgfVxuICAgICAgICA6IG1ldGFkYXRhT3JOYW1lO1xuICAgIGNvbnN0IHNlbGVjdEtleXMgPSAoYzogRW50aXR5Q29sbGVjdGlvbjxUPikgPT4gYy5pZHM7XG4gICAgY29uc3Qgc2VsZWN0RW50aXR5TWFwID0gKGM6IEVudGl0eUNvbGxlY3Rpb248VD4pID0+IGMuZW50aXRpZXM7XG5cbiAgICBjb25zdCBzZWxlY3RFbnRpdGllczogU2VsZWN0b3I8XG4gICAgICBFbnRpdHlDb2xsZWN0aW9uPFQ+LFxuICAgICAgVFtdXG4gICAgPiA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgc2VsZWN0S2V5cyxcbiAgICAgIHNlbGVjdEVudGl0eU1hcCxcbiAgICAgIChrZXlzOiAobnVtYmVyIHwgc3RyaW5nKVtdLCBlbnRpdGllczogRGljdGlvbmFyeTxUPik6IFRbXSA9PlxuICAgICAgICBrZXlzLm1hcCgoa2V5KSA9PiBlbnRpdGllc1trZXldIGFzIFQpXG4gICAgKTtcblxuICAgIGNvbnN0IHNlbGVjdENvdW50OiBTZWxlY3RvcjxFbnRpdHlDb2xsZWN0aW9uPFQ+LCBudW1iZXI+ID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICBzZWxlY3RLZXlzLFxuICAgICAgKGtleXMpID0+IGtleXMubGVuZ3RoXG4gICAgKTtcblxuICAgIC8vIEVudGl0eUNvbGxlY3Rpb24gc2VsZWN0b3JzIHRoYXQgZ28gYmV5b25kIHRoZSBuZ3J4L2VudGl0eS9FbnRpdHlTdGF0ZSBzZWxlY3RvcnNcbiAgICBjb25zdCBzZWxlY3RGaWx0ZXIgPSAoYzogRW50aXR5Q29sbGVjdGlvbjxUPikgPT4gYy5maWx0ZXI7XG5cbiAgICBjb25zdCBmaWx0ZXJGbiA9IG1ldGFkYXRhLmZpbHRlckZuO1xuICAgIGNvbnN0IHNlbGVjdEZpbHRlcmVkRW50aXRpZXM6IFNlbGVjdG9yPEVudGl0eUNvbGxlY3Rpb248VD4sIFRbXT4gPSBmaWx0ZXJGblxuICAgICAgPyBjcmVhdGVTZWxlY3RvcihcbiAgICAgICAgICBzZWxlY3RFbnRpdGllcyxcbiAgICAgICAgICBzZWxlY3RGaWx0ZXIsXG4gICAgICAgICAgKGVudGl0aWVzOiBUW10sIHBhdHRlcm46IGFueSk6IFRbXSA9PiBmaWx0ZXJGbihlbnRpdGllcywgcGF0dGVybilcbiAgICAgICAgKVxuICAgICAgOiBzZWxlY3RFbnRpdGllcztcblxuICAgIGNvbnN0IHNlbGVjdExvYWRlZCA9IChjOiBFbnRpdHlDb2xsZWN0aW9uPFQ+KSA9PiBjLmxvYWRlZDtcbiAgICBjb25zdCBzZWxlY3RMb2FkaW5nID0gKGM6IEVudGl0eUNvbGxlY3Rpb248VD4pID0+IGMubG9hZGluZztcbiAgICBjb25zdCBzZWxlY3RDaGFuZ2VTdGF0ZSA9IChjOiBFbnRpdHlDb2xsZWN0aW9uPFQ+KSA9PiBjLmNoYW5nZVN0YXRlO1xuXG4gICAgLy8gQ3JlYXRlIGNvbGxlY3Rpb24gc2VsZWN0b3JzIGZvciBlYWNoIGBhZGRpdGlvbmFsQ29sbGVjdGlvblN0YXRlYCBwcm9wZXJ0eS5cbiAgICAvLyBUaGVzZSBhbGwgZXh0ZW5kIGZyb20gYHNlbGVjdENvbGxlY3Rpb25gXG4gICAgY29uc3QgZXh0cmEgPSBtZXRhZGF0YS5hZGRpdGlvbmFsQ29sbGVjdGlvblN0YXRlIHx8IHt9O1xuICAgIGNvbnN0IGV4dHJhU2VsZWN0b3JzOiB7XG4gICAgICBbbmFtZTogc3RyaW5nXTogU2VsZWN0b3I8RW50aXR5Q29sbGVjdGlvbjxUPiwgYW55PjtcbiAgICB9ID0ge307XG4gICAgT2JqZWN0LmtleXMoZXh0cmEpLmZvckVhY2goKGspID0+IHtcbiAgICAgIGV4dHJhU2VsZWN0b3JzWydzZWxlY3QnICsga1swXS50b1VwcGVyQ2FzZSgpICsgay5zbGljZSgxKV0gPSAoXG4gICAgICAgIGM6IEVudGl0eUNvbGxlY3Rpb248VD5cbiAgICAgICkgPT4gKDxhbnk+Yylba107XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2VsZWN0Q291bnQsXG4gICAgICBzZWxlY3RFbnRpdGllcyxcbiAgICAgIHNlbGVjdEVudGl0eU1hcCxcbiAgICAgIHNlbGVjdEZpbHRlcixcbiAgICAgIHNlbGVjdEZpbHRlcmVkRW50aXRpZXMsXG4gICAgICBzZWxlY3RLZXlzLFxuICAgICAgc2VsZWN0TG9hZGVkLFxuICAgICAgc2VsZWN0TG9hZGluZyxcbiAgICAgIHNlbGVjdENoYW5nZVN0YXRlLFxuICAgICAgLi4uZXh0cmFTZWxlY3RvcnMsXG4gICAgfSBhcyBTO1xuICB9XG5cbiAgLy8vLy8vLyBjcmVhdGUgLy8vLy8vLy8vL1xuXG4gIC8vIGNyZWF0ZShtZXRhZGF0YSkgb3ZlcmxvYWRcbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIHN0b3JlLXJvb3RlZCBzZWxlY3RvcnMgZm9yIGFuIGVudGl0eSBjb2xsZWN0aW9uLlxuICAgKiB7RW50aXR5U2VsZWN0b3JzJEZhY3Rvcnl9IHR1cm5zIHRoZW0gaW50byBzZWxlY3RvcnMkLlxuICAgKlxuICAgKiBAcGFyYW0gbWV0YWRhdGEgLSBFbnRpdHlNZXRhZGF0YSBmb3IgdGhlIGNvbGxlY3Rpb24uXG4gICAqIE1heSBiZSBwYXJ0aWFsIGJ1dCBtdWNoIGhhdmUgYGVudGl0eU5hbWVgLlxuICAgKlxuICAgKiBCYXNlZCBvbiBuZ3J4L2VudGl0eS9zdGF0ZV9zZWxlY3RvcnMudHNcbiAgICogRGlmZmVycyBpbiB0aGF0IHRoZXNlIHNlbGVjdG9ycyBzZWxlY3QgZnJvbSB0aGUgTmdSeCBzdG9yZSByb290LFxuICAgKiB0aHJvdWdoIHRoZSBjb2xsZWN0aW9uLCB0byB0aGUgY29sbGVjdGlvbiBtZW1iZXJzLlxuICAgKi9cbiAgY3JlYXRlPFQsIFMgZXh0ZW5kcyBFbnRpdHlTZWxlY3RvcnM8VD4gPSBFbnRpdHlTZWxlY3RvcnM8VD4+KFxuICAgIG1ldGFkYXRhOiBFbnRpdHlNZXRhZGF0YTxUPlxuICApOiBTO1xuXG4gIC8vIGNyZWF0ZShlbnRpdHlOYW1lKSBvdmVybG9hZFxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgZGVmYXVsdCBzdG9yZS1yb290ZWQgc2VsZWN0b3JzIGZvciBhbiBlbnRpdHkgY29sbGVjdGlvbi5cbiAgICoge0VudGl0eVNlbGVjdG9ycyRGYWN0b3J5fSB0dXJucyB0aGVtIGludG8gc2VsZWN0b3JzJC5cbiAgICogVXNlIHRoZSBtZXRhZGF0YSBvdmVybG9hZCBmb3IgYWRkaXRpb25hbCBjb2xsZWN0aW9uIHNlbGVjdG9ycy5cbiAgICpcbiAgICogQHBhcmFtIGVudGl0eU5hbWUgLSBuYW1lIG9mIHRoZSBlbnRpdHkgdHlwZS5cbiAgICpcbiAgICogQmFzZWQgb24gbmdyeC9lbnRpdHkvc3RhdGVfc2VsZWN0b3JzLnRzXG4gICAqIERpZmZlcnMgaW4gdGhhdCB0aGVzZSBzZWxlY3RvcnMgc2VsZWN0IGZyb20gdGhlIE5nUnggc3RvcmUgcm9vdCxcbiAgICogdGhyb3VnaCB0aGUgY29sbGVjdGlvbiwgdG8gdGhlIGNvbGxlY3Rpb24gbWVtYmVycy5cbiAgICovXG4gIGNyZWF0ZTxULCBTIGV4dGVuZHMgRW50aXR5U2VsZWN0b3JzPFQ+ID0gRW50aXR5U2VsZWN0b3JzPFQ+PihcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dW5pZmllZC1zaWduYXR1cmVzXG4gICAgZW50aXR5TmFtZTogc3RyaW5nXG4gICk6IFM7XG5cbiAgLy8gY3JlYXRlQ29sbGVjdGlvblNlbGVjdG9ycyBpbXBsZW1lbnRhdGlvblxuICBjcmVhdGU8VCwgUyBleHRlbmRzIEVudGl0eVNlbGVjdG9yczxUPiA9IEVudGl0eVNlbGVjdG9yczxUPj4oXG4gICAgbWV0YWRhdGFPck5hbWU6IEVudGl0eU1ldGFkYXRhPFQ+IHwgc3RyaW5nXG4gICk6IFMge1xuICAgIGNvbnN0IG1ldGFkYXRhID1cbiAgICAgIHR5cGVvZiBtZXRhZGF0YU9yTmFtZSA9PT0gJ3N0cmluZydcbiAgICAgICAgPyB7IGVudGl0eU5hbWU6IG1ldGFkYXRhT3JOYW1lIH1cbiAgICAgICAgOiBtZXRhZGF0YU9yTmFtZTtcbiAgICBjb25zdCBlbnRpdHlOYW1lID0gbWV0YWRhdGEuZW50aXR5TmFtZTtcbiAgICBjb25zdCBzZWxlY3RDb2xsZWN0aW9uOiBTZWxlY3RvcjxcbiAgICAgIE9iamVjdCxcbiAgICAgIEVudGl0eUNvbGxlY3Rpb248VD5cbiAgICA+ID0gdGhpcy5jcmVhdGVDb2xsZWN0aW9uU2VsZWN0b3I8VD4oZW50aXR5TmFtZSk7XG4gICAgY29uc3QgY29sbGVjdGlvblNlbGVjdG9ycyA9IHRoaXMuY3JlYXRlQ29sbGVjdGlvblNlbGVjdG9yczxUPihtZXRhZGF0YSk7XG5cbiAgICBjb25zdCBlbnRpdHlTZWxlY3RvcnM6IHtcbiAgICAgIFtuYW1lOiBzdHJpbmddOiBTZWxlY3RvcjxFbnRpdHlDb2xsZWN0aW9uPFQ+LCBhbnk+O1xuICAgIH0gPSB7fTtcbiAgICBPYmplY3Qua2V5cyhjb2xsZWN0aW9uU2VsZWN0b3JzKS5mb3JFYWNoKChrKSA9PiB7XG4gICAgICBlbnRpdHlTZWxlY3RvcnNba10gPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgICAgc2VsZWN0Q29sbGVjdGlvbixcbiAgICAgICAgY29sbGVjdGlvblNlbGVjdG9yc1trXVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBlbnRpdHlOYW1lLFxuICAgICAgc2VsZWN0Q29sbGVjdGlvbixcbiAgICAgIHNlbGVjdEVudGl0eUNhY2hlOiB0aGlzLnNlbGVjdEVudGl0eUNhY2hlLFxuICAgICAgLi4uZW50aXR5U2VsZWN0b3JzLFxuICAgIH0gYXMgUztcbiAgfVxufVxuIl19
@@ -1,8 +1,3 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * Generated from: src/utils/correlation-id-generator.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
- */
6
1
  import { Injectable } from '@angular/core';
7
2
  /**
8
3
  * Generates a string id beginning 'CRID',
@@ -15,19 +10,12 @@ import { Injectable } from '@angular/core';
15
10
  */
16
11
  export class CorrelationIdGenerator {
17
12
  constructor() {
18
- /**
19
- * Seed for the ids
20
- */
13
+ /** Seed for the ids */
21
14
  this.seed = 0;
22
- /**
23
- * Prefix of the id, 'CRID;
24
- */
15
+ /** Prefix of the id, 'CRID; */
25
16
  this.prefix = 'CRID';
26
17
  }
27
- /**
28
- * Return the next correlation id
29
- * @return {?}
30
- */
18
+ /** Return the next correlation id */
31
19
  next() {
32
20
  this.seed += 1;
33
21
  return this.prefix + this.seed;
@@ -36,18 +24,4 @@ export class CorrelationIdGenerator {
36
24
  CorrelationIdGenerator.decorators = [
37
25
  { type: Injectable }
38
26
  ];
39
- if (false) {
40
- /**
41
- * Seed for the ids
42
- * @type {?}
43
- * @protected
44
- */
45
- CorrelationIdGenerator.prototype.seed;
46
- /**
47
- * Prefix of the id, 'CRID;
48
- * @type {?}
49
- * @protected
50
- */
51
- CorrelationIdGenerator.prototype.prefix;
52
- }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ycmVsYXRpb24taWQtZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL21vZHVsZXMvZGF0YS8iLCJzb3VyY2VzIjpbInNyYy91dGlscy9jb3JyZWxhdGlvbi1pZC1nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBWTNDLE1BQU0sT0FBTyxzQkFBc0I7SUFEbkM7Ozs7UUFHWSxTQUFJLEdBQUcsQ0FBQyxDQUFDOzs7O1FBRVQsV0FBTSxHQUFHLE1BQU0sQ0FBQztJQU01QixDQUFDOzs7OztJQUpDLElBQUk7UUFDRixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ2pDLENBQUM7OztZQVZGLFVBQVU7Ozs7Ozs7O0lBR1Qsc0NBQW1COzs7Ozs7SUFFbkIsd0NBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBhIHN0cmluZyBpZCBiZWdpbm5pbmcgJ0NSSUQnLFxuICogZm9sbG93ZWQgYnkgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaW50ZWdlciBmb3IgdXNlIGFzIGEgY29ycmVsYXRpb24gaWQuXG4gKiBBcyB0aGV5IGFyZSBwcm9kdWNlZCBsb2NhbGx5IGJ5IGEgc2luZ2xldG9uIHNlcnZpY2UsXG4gKiB0aGVzZSBpZHMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgdW5pcXVlIG9ubHlcbiAqIGZvciB0aGUgZHVyYXRpb24gb2YgYSBzaW5nbGUgY2xpZW50IGJyb3dzZXIgaW5zdGFuY2UuXG4gKiBOZ3J4IGVudGl0eSBkaXNwYXRjaGVyIHF1ZXJ5IGFuZCBzYXZlIG1ldGhvZHMgY2FsbCB0aGlzIHNlcnZpY2UgdG8gZ2VuZXJhdGUgZGVmYXVsdCBjb3JyZWxhdGlvbiBpZHMuXG4gKiBEbyBOT1QgdXNlIGZvciBlbnRpdHkga2V5cy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvcnJlbGF0aW9uSWRHZW5lcmF0b3Ige1xuICAvKiogU2VlZCBmb3IgdGhlIGlkcyAqL1xuICBwcm90ZWN0ZWQgc2VlZCA9IDA7XG4gIC8qKiBQcmVmaXggb2YgdGhlIGlkLCAnQ1JJRDsgKi9cbiAgcHJvdGVjdGVkIHByZWZpeCA9ICdDUklEJztcbiAgLyoqIFJldHVybiB0aGUgbmV4dCBjb3JyZWxhdGlvbiBpZCAqL1xuICBuZXh0KCkge1xuICAgIHRoaXMuc2VlZCArPSAxO1xuICAgIHJldHVybiB0aGlzLnByZWZpeCArIHRoaXMuc2VlZDtcbiAgfVxufVxuIl19
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ycmVsYXRpb24taWQtZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9kYXRhL3NyYy91dGlscy9jb3JyZWxhdGlvbi1pZC1nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQzs7Ozs7Ozs7R0FRRztBQUVILE1BQU0sT0FBTyxzQkFBc0I7SUFEbkM7UUFFRSx1QkFBdUI7UUFDYixTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLCtCQUErQjtRQUNyQixXQUFNLEdBQUcsTUFBTSxDQUFDO0lBTTVCLENBQUM7SUFMQyxxQ0FBcUM7SUFDckMsSUFBSTtRQUNGLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ2YsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDakMsQ0FBQzs7O1lBVkYsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBzdHJpbmcgaWQgYmVnaW5uaW5nICdDUklEJyxcbiAqIGZvbGxvd2VkIGJ5IGEgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGludGVnZXIgZm9yIHVzZSBhcyBhIGNvcnJlbGF0aW9uIGlkLlxuICogQXMgdGhleSBhcmUgcHJvZHVjZWQgbG9jYWxseSBieSBhIHNpbmdsZXRvbiBzZXJ2aWNlLFxuICogdGhlc2UgaWRzIGFyZSBndWFyYW50ZWVkIHRvIGJlIHVuaXF1ZSBvbmx5XG4gKiBmb3IgdGhlIGR1cmF0aW9uIG9mIGEgc2luZ2xlIGNsaWVudCBicm93c2VyIGluc3RhbmNlLlxuICogTmdyeCBlbnRpdHkgZGlzcGF0Y2hlciBxdWVyeSBhbmQgc2F2ZSBtZXRob2RzIGNhbGwgdGhpcyBzZXJ2aWNlIHRvIGdlbmVyYXRlIGRlZmF1bHQgY29ycmVsYXRpb24gaWRzLlxuICogRG8gTk9UIHVzZSBmb3IgZW50aXR5IGtleXMuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb3JyZWxhdGlvbklkR2VuZXJhdG9yIHtcbiAgLyoqIFNlZWQgZm9yIHRoZSBpZHMgKi9cbiAgcHJvdGVjdGVkIHNlZWQgPSAwO1xuICAvKiogUHJlZml4IG9mIHRoZSBpZCwgJ0NSSUQ7ICovXG4gIHByb3RlY3RlZCBwcmVmaXggPSAnQ1JJRCc7XG4gIC8qKiBSZXR1cm4gdGhlIG5leHQgY29ycmVsYXRpb24gaWQgKi9cbiAgbmV4dCgpIHtcbiAgICB0aGlzLnNlZWQgKz0gMTtcbiAgICByZXR1cm4gdGhpcy5wcmVmaXggKyB0aGlzLnNlZWQ7XG4gIH1cbn1cbiJdfQ==
@@ -1,35 +1,15 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * Generated from: src/utils/default-logger.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
- */
6
1
  import { Injectable } from '@angular/core';
7
2
  export class DefaultLogger {
8
- /**
9
- * @param {?=} message
10
- * @param {?=} extra
11
- * @return {?}
12
- */
13
3
  error(message, extra) {
14
4
  if (message) {
15
5
  extra ? console.error(message, extra) : console.error(message);
16
6
  }
17
7
  }
18
- /**
19
- * @param {?=} message
20
- * @param {?=} extra
21
- * @return {?}
22
- */
23
8
  log(message, extra) {
24
9
  if (message) {
25
10
  extra ? console.log(message, extra) : console.log(message);
26
11
  }
27
12
  }
28
- /**
29
- * @param {?=} message
30
- * @param {?=} extra
31
- * @return {?}
32
- */
33
13
  warn(message, extra) {
34
14
  if (message) {
35
15
  extra ? console.warn(message, extra) : console.warn(message);
@@ -39,4 +19,4 @@ export class DefaultLogger {
39
19
  DefaultLogger.decorators = [
40
20
  { type: Injectable }
41
21
  ];
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vbW9kdWxlcy9kYXRhLyIsInNvdXJjZXMiOlsic3JjL3V0aWxzL2RlZmF1bHQtbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxNQUFNLE9BQU8sYUFBYTs7Ozs7O0lBQ3hCLEtBQUssQ0FBQyxPQUFhLEVBQUUsS0FBVztRQUM5QixJQUFJLE9BQU8sRUFBRTtZQUNYLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDaEU7SUFDSCxDQUFDOzs7Ozs7SUFFRCxHQUFHLENBQUMsT0FBYSxFQUFFLEtBQVc7UUFDNUIsSUFBSSxPQUFPLEVBQUU7WUFDWCxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzVEO0lBQ0gsQ0FBQzs7Ozs7O0lBRUQsSUFBSSxDQUFDLE9BQWEsRUFBRSxLQUFXO1FBQzdCLElBQUksT0FBTyxFQUFFO1lBQ1gsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM5RDtJQUNILENBQUM7OztZQWxCRixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERlZmF1bHRMb2dnZXIgaW1wbGVtZW50cyBMb2dnZXIge1xuICBlcnJvcihtZXNzYWdlPzogYW55LCBleHRyYT86IGFueSkge1xuICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICBleHRyYSA/IGNvbnNvbGUuZXJyb3IobWVzc2FnZSwgZXh0cmEpIDogY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICBsb2cobWVzc2FnZT86IGFueSwgZXh0cmE/OiBhbnkpIHtcbiAgICBpZiAobWVzc2FnZSkge1xuICAgICAgZXh0cmEgPyBjb25zb2xlLmxvZyhtZXNzYWdlLCBleHRyYSkgOiBjb25zb2xlLmxvZyhtZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICB3YXJuKG1lc3NhZ2U/OiBhbnksIGV4dHJhPzogYW55KSB7XG4gICAgaWYgKG1lc3NhZ2UpIHtcbiAgICAgIGV4dHJhID8gY29uc29sZS53YXJuKG1lc3NhZ2UsIGV4dHJhKSA6IGNvbnNvbGUud2FybihtZXNzYWdlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2RhdGEvc3JjL3V0aWxzL2RlZmF1bHQtbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsTUFBTSxPQUFPLGFBQWE7SUFDeEIsS0FBSyxDQUFDLE9BQWEsRUFBRSxLQUFXO1FBQzlCLElBQUksT0FBTyxFQUFFO1lBQ1gsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNoRTtJQUNILENBQUM7SUFFRCxHQUFHLENBQUMsT0FBYSxFQUFFLEtBQVc7UUFDNUIsSUFBSSxPQUFPLEVBQUU7WUFDWCxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzVEO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFhLEVBQUUsS0FBVztRQUM3QixJQUFJLE9BQU8sRUFBRTtZQUNYLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDOUQ7SUFDSCxDQUFDOzs7WUFsQkYsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEZWZhdWx0TG9nZ2VyIGltcGxlbWVudHMgTG9nZ2VyIHtcbiAgZXJyb3IobWVzc2FnZT86IGFueSwgZXh0cmE/OiBhbnkpIHtcbiAgICBpZiAobWVzc2FnZSkge1xuICAgICAgZXh0cmEgPyBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIGV4dHJhKSA6IGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgbG9nKG1lc3NhZ2U/OiBhbnksIGV4dHJhPzogYW55KSB7XG4gICAgaWYgKG1lc3NhZ2UpIHtcbiAgICAgIGV4dHJhID8gY29uc29sZS5sb2cobWVzc2FnZSwgZXh0cmEpIDogY29uc29sZS5sb2cobWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgd2FybihtZXNzYWdlPzogYW55LCBleHRyYT86IGFueSkge1xuICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICBleHRyYSA/IGNvbnNvbGUud2FybihtZXNzYWdlLCBleHRyYSkgOiBjb25zb2xlLndhcm4obWVzc2FnZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,11 +1,5 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * Generated from: src/utils/default-pluralizer.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
- */
6
1
  import { Inject, Injectable, Optional } from '@angular/core';
7
2
  import { PLURAL_NAMES_TOKEN } from './interfaces';
8
- /** @type {?} */
9
3
  const uncountable = [
10
4
  // 'sheep',
11
5
  // 'fish',
@@ -19,28 +13,18 @@ const uncountable = [
19
13
  'series',
20
14
  ];
21
15
  export class DefaultPluralizer {
22
- /**
23
- * @param {?} pluralNames
24
- */
25
16
  constructor(pluralNames) {
26
17
  this.pluralNames = {};
27
18
  // merge each plural names object
28
19
  if (pluralNames) {
29
- pluralNames.forEach((/**
30
- * @param {?} pn
31
- * @return {?}
32
- */
33
- (pn) => this.registerPluralNames(pn)));
20
+ pluralNames.forEach((pn) => this.registerPluralNames(pn));
34
21
  }
35
22
  }
36
23
  /**
37
24
  * Pluralize a singular name using common English language pluralization rules
38
25
  * Examples: "company" -> "companies", "employee" -> "employees", "tax" -> "taxes"
39
- * @param {?} name
40
- * @return {?}
41
26
  */
42
27
  pluralize(name) {
43
- /** @type {?} */
44
28
  const plural = this.pluralNames[name];
45
29
  if (plural) {
46
30
  return plural;
@@ -67,8 +51,7 @@ export class DefaultPluralizer {
67
51
  }
68
52
  /**
69
53
  * Register a mapping of entity type name to the entity name's plural
70
- * @param {?} pluralNames {EntityPluralNames} plural names for entity types
71
- * @return {?}
54
+ * @param pluralNames {EntityPluralNames} plural names for entity types
72
55
  */
73
56
  registerPluralNames(pluralNames) {
74
57
  this.pluralNames = Object.assign(Object.assign({}, this.pluralNames), (pluralNames || {}));
@@ -81,8 +64,4 @@ DefaultPluralizer.decorators = [
81
64
  DefaultPluralizer.ctorParameters = () => [
82
65
  { type: Array, decorators: [{ type: Optional }, { type: Inject, args: [PLURAL_NAMES_TOKEN,] }] }
83
66
  ];
84
- if (false) {
85
- /** @type {?} */
86
- DefaultPluralizer.prototype.pluralNames;
87
- }
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1wbHVyYWxpemVyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL21vZHVsZXMvZGF0YS8iLCJzb3VyY2VzIjpbInNyYy91dGlscy9kZWZhdWx0LXBsdXJhbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFxQixrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7TUFFL0QsV0FBVyxHQUFHO0lBQ2xCLFdBQVc7SUFDWCxVQUFVO0lBQ1YsVUFBVTtJQUNWLFdBQVc7SUFDWCxVQUFVO0lBQ1YsYUFBYTtJQUNiLFdBQVc7SUFDWCxhQUFhO0lBQ2IsT0FBTztJQUNQLFFBQVE7Q0FDVDtBQUdELE1BQU0sT0FBTyxpQkFBaUI7Ozs7SUFHNUIsWUFHRSxXQUFnQztRQUxsQyxnQkFBVyxHQUFzQixFQUFFLENBQUM7UUFPbEMsaUNBQWlDO1FBQ2pDLElBQUksV0FBVyxFQUFFO1lBQ2YsV0FBVyxDQUFDLE9BQU87Ozs7WUFBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUM7U0FDM0Q7SUFDSCxDQUFDOzs7Ozs7O0lBTUQsU0FBUyxDQUFDLElBQVk7O2NBQ2QsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQ3JDLElBQUksTUFBTSxFQUFFO1lBQ1YsT0FBTyxNQUFNLENBQUM7U0FDZjtRQUNELG1DQUFtQztRQUNuQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2hELE9BQU8sSUFBSSxDQUFDO1lBQ1osWUFBWTtTQUNiO2FBQU0sSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxHQUFHLEdBQUcsQ0FBQztZQUNsQixnQkFBZ0I7U0FDakI7YUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDN0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUMvQyx5Q0FBeUM7U0FDMUM7YUFBTSxJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN6QyxPQUFPLElBQUksR0FBRyxJQUFJLENBQUM7U0FDcEI7YUFBTTtZQUNMLE9BQU8sSUFBSSxHQUFHLEdBQUcsQ0FBQztTQUNuQjtJQUNILENBQUM7Ozs7OztJQU1ELG1CQUFtQixDQUFDLFdBQThCO1FBQ2hELElBQUksQ0FBQyxXQUFXLG1DQUFRLElBQUksQ0FBQyxXQUFXLEdBQUssQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUUsQ0FBQztJQUNyRSxDQUFDOzs7WUEvQ0YsVUFBVTs7Ozt3Q0FLTixRQUFRLFlBQ1IsTUFBTSxTQUFDLGtCQUFrQjs7OztJQUo1Qix3Q0FBb0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbnRpdHlQbHVyYWxOYW1lcywgUExVUkFMX05BTUVTX1RPS0VOIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuY29uc3QgdW5jb3VudGFibGUgPSBbXG4gIC8vICdzaGVlcCcsXG4gIC8vICdmaXNoJyxcbiAgLy8gJ2RlZXInLFxuICAvLyAnbW9vc2UnLFxuICAvLyAncmljZScsXG4gIC8vICdzcGVjaWVzJyxcbiAgJ2VxdWlwbWVudCcsXG4gICdpbmZvcm1hdGlvbicsXG4gICdtb25leScsXG4gICdzZXJpZXMnLFxuXTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERlZmF1bHRQbHVyYWxpemVyIHtcbiAgcGx1cmFsTmFtZXM6IEVudGl0eVBsdXJhbE5hbWVzID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KFBMVVJBTF9OQU1FU19UT0tFTilcbiAgICBwbHVyYWxOYW1lczogRW50aXR5UGx1cmFsTmFtZXNbXVxuICApIHtcbiAgICAvLyBtZXJnZSBlYWNoIHBsdXJhbCBuYW1lcyBvYmplY3RcbiAgICBpZiAocGx1cmFsTmFtZXMpIHtcbiAgICAgIHBsdXJhbE5hbWVzLmZvckVhY2goKHBuKSA9PiB0aGlzLnJlZ2lzdGVyUGx1cmFsTmFtZXMocG4pKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGx1cmFsaXplIGEgc2luZ3VsYXIgbmFtZSB1c2luZyBjb21tb24gRW5nbGlzaCBsYW5ndWFnZSBwbHVyYWxpemF0aW9uIHJ1bGVzXG4gICAqIEV4YW1wbGVzOiBcImNvbXBhbnlcIiAtPiBcImNvbXBhbmllc1wiLCBcImVtcGxveWVlXCIgLT4gXCJlbXBsb3llZXNcIiwgXCJ0YXhcIiAtPiBcInRheGVzXCJcbiAgICovXG4gIHBsdXJhbGl6ZShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwbHVyYWwgPSB0aGlzLnBsdXJhbE5hbWVzW25hbWVdO1xuICAgIGlmIChwbHVyYWwpIHtcbiAgICAgIHJldHVybiBwbHVyYWw7XG4gICAgfVxuICAgIC8vIHNpbmd1bGFyIGFuZCBwbHVyYWwgYXJlIHRoZSBzYW1lXG4gICAgaWYgKHVuY291bnRhYmxlLmluZGV4T2YobmFtZS50b0xvd2VyQ2FzZSgpKSA+PSAwKSB7XG4gICAgICByZXR1cm4gbmFtZTtcbiAgICAgIC8vIHZvd2VsICsgeVxuICAgIH0gZWxzZSBpZiAoL1thZWlvdV15JC8udGVzdChuYW1lKSkge1xuICAgICAgcmV0dXJuIG5hbWUgKyAncyc7XG4gICAgICAvLyBjb25zb25hbnQgKyB5XG4gICAgfSBlbHNlIGlmIChuYW1lLmVuZHNXaXRoKCd5JykpIHtcbiAgICAgIHJldHVybiBuYW1lLnN1YnN0cigwLCBuYW1lLmxlbmd0aCAtIDEpICsgJ2llcyc7XG4gICAgICAvLyBlbmRpbmdzIHR5cGljYWxseSBwbHVyYWxpemVkIHdpdGggJ2VzJ1xuICAgIH0gZWxzZSBpZiAoL1tzfHNzfHNofGNofHh8el0kLy50ZXN0KG5hbWUpKSB7XG4gICAgICByZXR1cm4gbmFtZSArICdlcyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuYW1lICsgJ3MnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIG1hcHBpbmcgb2YgZW50aXR5IHR5cGUgbmFtZSB0byB0aGUgZW50aXR5IG5hbWUncyBwbHVyYWxcbiAgICogQHBhcmFtIHBsdXJhbE5hbWVzIHtFbnRpdHlQbHVyYWxOYW1lc30gcGx1cmFsIG5hbWVzIGZvciBlbnRpdHkgdHlwZXNcbiAgICovXG4gIHJlZ2lzdGVyUGx1cmFsTmFtZXMocGx1cmFsTmFtZXM6IEVudGl0eVBsdXJhbE5hbWVzKTogdm9pZCB7XG4gICAgdGhpcy5wbHVyYWxOYW1lcyA9IHsgLi4udGhpcy5wbHVyYWxOYW1lcywgLi4uKHBsdXJhbE5hbWVzIHx8IHt9KSB9O1xuICB9XG59XG4iXX0=
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1wbHVyYWxpemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9kYXRhL3NyYy91dGlscy9kZWZhdWx0LXBsdXJhbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBcUIsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFckUsTUFBTSxXQUFXLEdBQUc7SUFDbEIsV0FBVztJQUNYLFVBQVU7SUFDVixVQUFVO0lBQ1YsV0FBVztJQUNYLFVBQVU7SUFDVixhQUFhO0lBQ2IsV0FBVztJQUNYLGFBQWE7SUFDYixPQUFPO0lBQ1AsUUFBUTtDQUNULENBQUM7QUFHRixNQUFNLE9BQU8saUJBQWlCO0lBRzVCLFlBR0UsV0FBZ0M7UUFMbEMsZ0JBQVcsR0FBc0IsRUFBRSxDQUFDO1FBT2xDLGlDQUFpQztRQUNqQyxJQUFJLFdBQVcsRUFBRTtZQUNmLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzNEO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FBQyxJQUFZO1FBQ3BCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsSUFBSSxNQUFNLEVBQUU7WUFDVixPQUFPLE1BQU0sQ0FBQztTQUNmO1FBQ0QsbUNBQW1DO1FBQ25DLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEQsT0FBTyxJQUFJLENBQUM7WUFDWixZQUFZO1NBQ2I7YUFBTSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakMsT0FBTyxJQUFJLEdBQUcsR0FBRyxDQUFDO1lBQ2xCLGdCQUFnQjtTQUNqQjthQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQy9DLHlDQUF5QztTQUMxQzthQUFNLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pDLE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQztTQUNwQjthQUFNO1lBQ0wsT0FBTyxJQUFJLEdBQUcsR0FBRyxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILG1CQUFtQixDQUFDLFdBQThCO1FBQ2hELElBQUksQ0FBQyxXQUFXLG1DQUFRLElBQUksQ0FBQyxXQUFXLEdBQUssQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUUsQ0FBQztJQUNyRSxDQUFDOzs7WUEvQ0YsVUFBVTs7Ozt3Q0FLTixRQUFRLFlBQ1IsTUFBTSxTQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVudGl0eVBsdXJhbE5hbWVzLCBQTFVSQUxfTkFNRVNfVE9LRU4gfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5jb25zdCB1bmNvdW50YWJsZSA9IFtcbiAgLy8gJ3NoZWVwJyxcbiAgLy8gJ2Zpc2gnLFxuICAvLyAnZGVlcicsXG4gIC8vICdtb29zZScsXG4gIC8vICdyaWNlJyxcbiAgLy8gJ3NwZWNpZXMnLFxuICAnZXF1aXBtZW50JyxcbiAgJ2luZm9ybWF0aW9uJyxcbiAgJ21vbmV5JyxcbiAgJ3NlcmllcycsXG5dO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGVmYXVsdFBsdXJhbGl6ZXIge1xuICBwbHVyYWxOYW1lczogRW50aXR5UGx1cmFsTmFtZXMgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoUExVUkFMX05BTUVTX1RPS0VOKVxuICAgIHBsdXJhbE5hbWVzOiBFbnRpdHlQbHVyYWxOYW1lc1tdXG4gICkge1xuICAgIC8vIG1lcmdlIGVhY2ggcGx1cmFsIG5hbWVzIG9iamVjdFxuICAgIGlmIChwbHVyYWxOYW1lcykge1xuICAgICAgcGx1cmFsTmFtZXMuZm9yRWFjaCgocG4pID0+IHRoaXMucmVnaXN0ZXJQbHVyYWxOYW1lcyhwbikpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQbHVyYWxpemUgYSBzaW5ndWxhciBuYW1lIHVzaW5nIGNvbW1vbiBFbmdsaXNoIGxhbmd1YWdlIHBsdXJhbGl6YXRpb24gcnVsZXNcbiAgICogRXhhbXBsZXM6IFwiY29tcGFueVwiIC0+IFwiY29tcGFuaWVzXCIsIFwiZW1wbG95ZWVcIiAtPiBcImVtcGxveWVlc1wiLCBcInRheFwiIC0+IFwidGF4ZXNcIlxuICAgKi9cbiAgcGx1cmFsaXplKG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHBsdXJhbCA9IHRoaXMucGx1cmFsTmFtZXNbbmFtZV07XG4gICAgaWYgKHBsdXJhbCkge1xuICAgICAgcmV0dXJuIHBsdXJhbDtcbiAgICB9XG4gICAgLy8gc2luZ3VsYXIgYW5kIHBsdXJhbCBhcmUgdGhlIHNhbWVcbiAgICBpZiAodW5jb3VudGFibGUuaW5kZXhPZihuYW1lLnRvTG93ZXJDYXNlKCkpID49IDApIHtcbiAgICAgIHJldHVybiBuYW1lO1xuICAgICAgLy8gdm93ZWwgKyB5XG4gICAgfSBlbHNlIGlmICgvW2FlaW91XXkkLy50ZXN0KG5hbWUpKSB7XG4gICAgICByZXR1cm4gbmFtZSArICdzJztcbiAgICAgIC8vIGNvbnNvbmFudCArIHlcbiAgICB9IGVsc2UgaWYgKG5hbWUuZW5kc1dpdGgoJ3knKSkge1xuICAgICAgcmV0dXJuIG5hbWUuc3Vic3RyKDAsIG5hbWUubGVuZ3RoIC0gMSkgKyAnaWVzJztcbiAgICAgIC8vIGVuZGluZ3MgdHlwaWNhbGx5IHBsdXJhbGl6ZWQgd2l0aCAnZXMnXG4gICAgfSBlbHNlIGlmICgvW3N8c3N8c2h8Y2h8eHx6XSQvLnRlc3QobmFtZSkpIHtcbiAgICAgIHJldHVybiBuYW1lICsgJ2VzJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5hbWUgKyAncyc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgbWFwcGluZyBvZiBlbnRpdHkgdHlwZSBuYW1lIHRvIHRoZSBlbnRpdHkgbmFtZSdzIHBsdXJhbFxuICAgKiBAcGFyYW0gcGx1cmFsTmFtZXMge0VudGl0eVBsdXJhbE5hbWVzfSBwbHVyYWwgbmFtZXMgZm9yIGVudGl0eSB0eXBlc1xuICAgKi9cbiAgcmVnaXN0ZXJQbHVyYWxOYW1lcyhwbHVyYWxOYW1lczogRW50aXR5UGx1cmFsTmFtZXMpOiB2b2lkIHtcbiAgICB0aGlzLnBsdXJhbE5hbWVzID0geyAuLi50aGlzLnBsdXJhbE5hbWVzLCAuLi4ocGx1cmFsTmFtZXMgfHwge30pIH07XG4gIH1cbn1cbiJdfQ==