ng-mocks 11.2.7 → 11.4.0

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 (126) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/README.md +41 -3174
  3. package/dist/lib/common/core.helpers.d.ts +2 -2
  4. package/dist/lib/common/core.helpers.js +55 -27
  5. package/dist/lib/common/{core.reflect.body.d.ts → core.reflect.body-catch.d.ts} +0 -0
  6. package/dist/lib/common/core.reflect.body-catch.js +12 -0
  7. package/dist/lib/common/core.reflect.body-global.d.ts +3 -0
  8. package/dist/lib/common/core.reflect.body-global.js +11 -0
  9. package/dist/lib/common/core.reflect.directive-resolve.js +6 -4
  10. package/dist/lib/common/core.reflect.jit.d.ts +3 -0
  11. package/dist/lib/common/core.reflect.jit.js +11 -0
  12. package/dist/lib/common/core.reflect.module-resolve.js +6 -4
  13. package/dist/lib/common/core.reflect.pipe-resolve.js +6 -4
  14. package/dist/lib/common/core.tokens.d.ts +2 -2
  15. package/dist/lib/common/core.tokens.js +1 -1
  16. package/dist/lib/common/decorate.inputs.js +2 -2
  17. package/dist/lib/common/decorate.mock.d.ts +3 -0
  18. package/dist/lib/common/decorate.mock.js +13 -0
  19. package/dist/lib/common/decorate.outputs.js +2 -2
  20. package/dist/lib/common/decorate.queries.js +2 -2
  21. package/dist/lib/common/func.is-mock-control-value-accessor.js +2 -3
  22. package/dist/lib/common/func.is-mock-validator.js +2 -3
  23. package/dist/lib/common/func.is-ng-def.d.ts +7 -1
  24. package/dist/lib/common/func.is-ng-def.js +5 -1
  25. package/dist/lib/common/func.is-ng-injection-token.js +2 -3
  26. package/dist/lib/common/func.is-ng-module-def-with-providers.js +2 -3
  27. package/dist/lib/common/func.is-ng-type.d.ts +2 -2
  28. package/dist/lib/common/func.is-ng-type.js +6 -5
  29. package/dist/lib/common/mock-control-value-accessor.d.ts +3 -3
  30. package/dist/lib/common/mock-control-value-accessor.js +1 -1
  31. package/dist/lib/common/mock.js +31 -26
  32. package/dist/lib/common/ng-mocks-universe.d.ts +5 -0
  33. package/dist/lib/common/ng-mocks-universe.js +65 -7
  34. package/dist/lib/mock/clone-providers.js +23 -6
  35. package/dist/lib/mock/decorate-declaration.js +6 -6
  36. package/dist/lib/mock/to-existing-provider.d.ts +1 -1
  37. package/dist/lib/mock/to-factory-provider.d.ts +1 -1
  38. package/dist/lib/mock-builder/mock-builder-stash.js +3 -1
  39. package/dist/lib/mock-builder/mock-builder.js +2 -2
  40. package/dist/lib/mock-builder/mock-builder.performance.js +2 -2
  41. package/dist/lib/mock-builder/mock-builder.promise.js +4 -1
  42. package/dist/lib/mock-builder/promise/create-ng-mocks-overrides-token.js +2 -2
  43. package/dist/lib/mock-builder/promise/create-ng-mocks-touches-token.js +2 -2
  44. package/dist/lib/mock-builder/promise/get-override-meta.js +4 -4
  45. package/dist/lib/mock-builder/promise/get-root-provider-parameters.js +3 -3
  46. package/dist/lib/mock-builder/promise/init-module.js +2 -2
  47. package/dist/lib/mock-builder/promise/init-ng-modules.js +2 -2
  48. package/dist/lib/mock-component/mock-component.d.ts +1 -1
  49. package/dist/lib/mock-component/mock-component.js +9 -17
  50. package/dist/lib/mock-directive/mock-directive.d.ts +1 -1
  51. package/dist/lib/mock-directive/mock-directive.js +10 -23
  52. package/dist/lib/mock-helper/func.global-prepare.d.ts +2 -0
  53. package/dist/lib/mock-helper/func.global-prepare.js +9 -0
  54. package/dist/lib/mock-helper/mock-helper.auto-spy.js +2 -2
  55. package/dist/lib/mock-helper/mock-helper.d.ts +38 -0
  56. package/dist/lib/mock-helper/mock-helper.global-exclude.d.ts +4 -0
  57. package/dist/lib/mock-helper/mock-helper.global-exclude.js +9 -0
  58. package/dist/lib/mock-helper/mock-helper.global-keep.d.ts +4 -0
  59. package/dist/lib/mock-helper/mock-helper.global-keep.js +9 -0
  60. package/dist/lib/mock-helper/mock-helper.global-mock.d.ts +4 -0
  61. package/dist/lib/mock-helper/mock-helper.global-mock.js +9 -0
  62. package/dist/lib/mock-helper/mock-helper.global-replace.d.ts +3 -0
  63. package/dist/lib/mock-helper/mock-helper.global-replace.js +26 -0
  64. package/dist/lib/mock-helper/mock-helper.global-wipe.d.ts +4 -0
  65. package/dist/lib/mock-helper/mock-helper.global-wipe.js +11 -0
  66. package/dist/lib/mock-helper/mock-helper.guts.js +100 -37
  67. package/dist/lib/mock-helper/mock-helper.js +15 -1
  68. package/dist/lib/mock-helper/mock-helper.reset.js +2 -1
  69. package/dist/lib/mock-helper/mock-helper.stub-member.d.ts +2 -0
  70. package/dist/lib/mock-helper/mock-helper.stub-member.js +25 -0
  71. package/dist/lib/mock-helper/mock-helper.stub.js +2 -1
  72. package/dist/lib/mock-helper/mock-helper.throw-on-console.d.ts +2 -0
  73. package/dist/lib/mock-helper/mock-helper.throw-on-console.js +25 -0
  74. package/dist/lib/mock-instance/mock-instance.js +11 -7
  75. package/dist/lib/mock-module/mock-module.d.ts +2 -2
  76. package/dist/lib/mock-module/mock-module.js +7 -9
  77. package/dist/lib/mock-module/mock-ng-def.js +29 -12
  78. package/dist/lib/mock-pipe/mock-pipe.d.ts +2 -2
  79. package/dist/lib/mock-pipe/mock-pipe.js +18 -44
  80. package/dist/lib/mock-provider/mock-provider.d.ts +3 -3
  81. package/dist/lib/mock-provider/mock-provider.js +1 -1
  82. package/dist/lib/mock-render/func.generate-template.d.ts +2 -0
  83. package/dist/lib/mock-render/func.generate-template.js +87 -0
  84. package/dist/lib/mock-render/func.install-prop-reader.d.ts +2 -0
  85. package/dist/lib/mock-render/func.install-prop-reader.js +80 -0
  86. package/dist/lib/mock-render/mock-render.d.ts +16 -2
  87. package/dist/lib/mock-render/mock-render.js +111 -132
  88. package/dist/lib/mock-service/helper.resolve-provider.js +9 -12
  89. package/dist/lib/mock-service/helper.use-factory.js +3 -3
  90. package/dist/lib/mock-service/mock-provider.js +2 -1
  91. package/dist/lib/mock-service/mock-service.d.ts +4 -4
  92. package/dist/lib/mock-service/mock-service.js +1 -1
  93. package/examples/MockBuilder/test.deep.spec.ts +1 -1
  94. package/examples/MockBuilder/test.ng-mocks.spec.ts +1 -1
  95. package/examples/MockForms/test.spec.ts +2 -2
  96. package/examples/MockInstance/test.spec.ts +1 -1
  97. package/examples/MockObservable/test.spec.ts +7 -4
  98. package/examples/MockPipe/test.spec.ts +1 -1
  99. package/examples/MockProvider/test.spec.ts +5 -6
  100. package/examples/MockReactiveForms/test.spec.ts +2 -2
  101. package/examples/MockViewChild/test.spec.ts +3 -3
  102. package/examples/TestAttributeDirective/test.spec.ts +1 -1
  103. package/examples/TestHttpInterceptor/test.spec.ts +10 -4
  104. package/examples/TestHttpRequest/test.spec.ts +6 -4
  105. package/examples/TestLifecycleHooks/test.spec.ts +6 -2
  106. package/examples/TestLifecycleHooks/test.string.spec.ts +3 -2
  107. package/examples/TestLifecycleHooks/test.type-without-params.spec.ts +3 -2
  108. package/examples/TestMultiToken/test.spec.ts +3 -3
  109. package/examples/TestProvider/test.spec.ts +2 -3
  110. package/examples/TestProviderWithDependencies/test.spec.ts +7 -3
  111. package/examples/TestProviderWithUseClass/test.spec.ts +9 -3
  112. package/examples/TestProviderWithUseExisting/test.spec.ts +9 -3
  113. package/examples/TestProviderWithUseFactory/test.spec.ts +2 -3
  114. package/examples/TestProviderWithUseValue/test.spec.ts +4 -4
  115. package/examples/TestRoute/test.spec.ts +7 -7
  116. package/examples/TestRoutingGuard/test.spec.ts +8 -6
  117. package/examples/TestRoutingResolver/test.spec.ts +6 -4
  118. package/examples/TestToken/test.spec.ts +7 -6
  119. package/examples/main/test.spec.ts +2 -2
  120. package/examples/ngMocksFaster/test.spec.ts +2 -2
  121. package/package.json +2 -3
  122. package/dist/lib/common/core.reflect.body.js +0 -12
  123. package/dist/lib/common/core.reflect.d.ts +0 -6
  124. package/dist/lib/common/core.reflect.js +0 -10
  125. package/dist/lib/common/mock-of.d.ts +0 -3
  126. package/dist/lib/common/mock-of.js +0 -23
@@ -1,4 +1,26 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __values = (this && this.__values) || function(o) {
14
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
15
+ if (m) return m.call(o);
16
+ if (o && typeof o.length === "number") return {
17
+ next: function () {
18
+ if (o && i >= o.length) o = void 0;
19
+ return { value: o && o[i++], done: !o };
20
+ }
21
+ };
22
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
23
+ };
2
24
  var __read = (this && this.__read) || function (o, n) {
3
25
  var m = typeof Symbol === "function" && o[Symbol.iterator];
4
26
  if (!m) return o;
@@ -19,126 +41,21 @@ var __spread = (this && this.__spread) || function () {
19
41
  for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
20
42
  return ar;
21
43
  };
22
- var __values = (this && this.__values) || function(o) {
23
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
24
- if (m) return m.call(o);
25
- if (o && typeof o.length === "number") return {
26
- next: function () {
27
- if (o && i >= o.length) o = void 0;
28
- return { value: o && o[i++], done: !o };
29
- }
30
- };
31
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
32
- };
33
44
  Object.defineProperty(exports, "__esModule", { value: true });
34
45
  exports.MockRender = void 0;
35
46
  var core_1 = require("@angular/core");
36
47
  var testing_1 = require("@angular/core/testing");
37
- var rxjs_1 = require("rxjs");
48
+ var core_helpers_1 = require("../common/core.helpers");
38
49
  var core_reflect_directive_resolve_1 = require("../common/core.reflect.directive-resolve");
50
+ var func_is_ng_def_1 = require("../common/func.is-ng-def");
39
51
  var mock_helper_1 = require("../mock-helper/mock-helper");
40
- var helper_mock_service_1 = require("../mock-service/helper.mock-service");
41
- var solveOutput = function (output) {
42
- if (typeof output === 'function') {
43
- return '($event)';
44
- }
45
- if (output && typeof output === 'object' && output instanceof core_1.EventEmitter) {
46
- return '.emit($event)';
47
- }
48
- if (output && typeof output === 'object' && output instanceof rxjs_1.Subject) {
49
- return '.next($event)';
50
- }
51
- return '=$event';
52
- };
53
- var createProperty = function (pointComponentInstance, key) {
54
- return {
55
- get: function () {
56
- if (typeof pointComponentInstance[key] === 'function') {
57
- return function () {
58
- var args = [];
59
- for (var _i = 0; _i < arguments.length; _i++) {
60
- args[_i] = arguments[_i];
61
- }
62
- return pointComponentInstance[key].apply(pointComponentInstance, __spread(args));
63
- };
64
- }
65
- return pointComponentInstance[key];
66
- },
67
- set: function (v) { return (pointComponentInstance[key] = v); },
68
- };
69
- };
70
- var extractAllKeys = function (instance) { return __spread(helper_mock_service_1.default.extractPropertiesFromPrototype(Object.getPrototypeOf(instance)), helper_mock_service_1.default.extractMethodsFromPrototype(Object.getPrototypeOf(instance)), Object.keys(instance)); };
71
- var extractOwnKeys = function (instance) { return __spread(Object.getOwnPropertyNames(instance), Object.keys(instance)); };
72
- var installProxy = function (componentInstance, pointComponentInstance) {
73
- var e_1, _a;
74
- if (!pointComponentInstance) {
75
- return;
76
- }
77
- var exists = extractOwnKeys(componentInstance);
78
- try {
79
- for (var _b = __values(extractAllKeys(pointComponentInstance)), _c = _b.next(); !_c.done; _c = _b.next()) {
80
- var key = _c.value;
81
- if (exists.indexOf(key) !== -1) {
82
- continue;
83
- }
84
- Object.defineProperty(componentInstance, key, createProperty(pointComponentInstance, key));
85
- exists.push(key);
86
- }
87
- }
88
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
89
- finally {
90
- try {
91
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
92
- }
93
- finally { if (e_1) throw e_1.error; }
94
- }
95
- };
96
- var generateTemplateAttrWrap = function (prop, type) { return (type === 'i' ? "[" + prop + "]" : "(" + prop + ")"); };
97
- var generateTemplateAttrWithParams = function (params, prop, type) {
98
- return " " + generateTemplateAttrWrap(prop, type) + "=\"" + prop + (type === 'o' ? solveOutput(params[prop]) : '') + "\"";
99
- };
100
- var generateTemplateAttrWithoutParams = function (key, value, type) {
101
- return " " + generateTemplateAttrWrap(key, type) + "=\"" + value + (type === 'o' ? '.emit($event)' : '') + "\"";
102
- };
103
- var generateTemplateAttr = function (params, attr, type) {
104
- var e_2, _a;
105
- var mockTemplate = '';
106
- try {
107
- for (var attr_1 = __values(attr), attr_1_1 = attr_1.next(); !attr_1_1.done; attr_1_1 = attr_1.next()) {
108
- var definition = attr_1_1.value;
109
- var _b = __read(definition.split(': '), 2), property = _b[0], alias = _b[1];
110
- mockTemplate += params
111
- ? generateTemplateAttrWithParams(params, alias || property, type)
112
- : generateTemplateAttrWithoutParams(alias || property, property, type);
113
- }
114
- }
115
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
116
- finally {
117
- try {
118
- if (attr_1_1 && !attr_1_1.done && (_a = attr_1.return)) _a.call(attr_1);
119
- }
120
- finally { if (e_2) throw e_2.error; }
121
- }
122
- return mockTemplate;
123
- };
124
- var generateTemplate = function (declaration, _a) {
125
- var selector = _a.selector, params = _a.params, inputs = _a.inputs, outputs = _a.outputs;
126
- var mockTemplate = '';
127
- if (typeof declaration === 'string') {
128
- mockTemplate = declaration;
129
- }
130
- else if (selector) {
131
- mockTemplate += "<" + selector;
132
- mockTemplate += generateTemplateAttr(params, inputs, 'i');
133
- mockTemplate += generateTemplateAttr(params, outputs, 'o');
134
- mockTemplate += "></" + selector + ">";
135
- }
136
- return mockTemplate;
137
- };
52
+ var mock_service_1 = require("../mock-service/mock-service");
53
+ var func_generate_template_1 = require("./func.generate-template");
54
+ var func_install_prop_reader_1 = require("./func.install-prop-reader");
138
55
  var applyParamsToFixtureInstanceGetData = function (params, keys) { return (!params && keys ? keys : []); };
139
56
  var applyParamsToFixtureInstance = function (instance, params, inputs, outputs) {
140
- var e_3, _a, e_4, _b;
141
- installProxy(instance, params);
57
+ var e_1, _a, e_2, _b;
58
+ func_install_prop_reader_1.default(instance, params);
142
59
  try {
143
60
  for (var _c = __values(applyParamsToFixtureInstanceGetData(params, inputs)), _d = _c.next(); !_d.done; _d = _c.next()) {
144
61
  var definition = _d.value;
@@ -146,12 +63,12 @@ var applyParamsToFixtureInstance = function (instance, params, inputs, outputs)
146
63
  instance[property] = undefined;
147
64
  }
148
65
  }
149
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
66
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
150
67
  finally {
151
68
  try {
152
69
  if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
153
70
  }
154
- finally { if (e_3) throw e_3.error; }
71
+ finally { if (e_1) throw e_1.error; }
155
72
  }
156
73
  try {
157
74
  for (var _f = __values(applyParamsToFixtureInstanceGetData(params, outputs)), _g = _f.next(); !_g.done; _g = _f.next()) {
@@ -160,14 +77,48 @@ var applyParamsToFixtureInstance = function (instance, params, inputs, outputs)
160
77
  instance[property] = new core_1.EventEmitter();
161
78
  }
162
79
  }
163
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
80
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
164
81
  finally {
165
82
  try {
166
83
  if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
167
84
  }
168
- finally { if (e_4) throw e_4.error; }
85
+ finally { if (e_2) throw e_2.error; }
169
86
  }
170
87
  };
88
+ var registerTemplateMiddleware = function (template, meta) {
89
+ var child = core_helpers_1.extendClass(template);
90
+ var providers = meta.providers || [];
91
+ providers = __spread(providers, [
92
+ {
93
+ provide: template,
94
+ useExisting: child,
95
+ },
96
+ ]);
97
+ meta.providers = providers;
98
+ if (func_is_ng_def_1.isNgDef(template, 'c')) {
99
+ core_1.Component(meta)(child);
100
+ }
101
+ else {
102
+ core_1.Directive(meta)(child);
103
+ }
104
+ testing_1.TestBed.configureTestingModule({
105
+ declarations: [child],
106
+ });
107
+ };
108
+ var reflectTemplate = function (template) {
109
+ if (!func_is_ng_def_1.isNgDef(template, 'c') && !func_is_ng_def_1.isNgDef(template, 'd')) {
110
+ return {};
111
+ }
112
+ var meta = __assign({}, core_reflect_directive_resolve_1.default(template));
113
+ if (meta.selector && meta.selector.match(/[\[\],]/)) {
114
+ meta.selector = '';
115
+ }
116
+ if (!meta.selector) {
117
+ meta.selector = "ng-mocks-" + template.name;
118
+ registerTemplateMiddleware(template, meta);
119
+ }
120
+ return meta;
121
+ };
171
122
  var generateFixture = function (_a) {
172
123
  var params = _a.params, options = _a.options, inputs = _a.inputs, outputs = _a.outputs;
173
124
  var MockRenderComponent = /** @class */ (function () {
@@ -177,12 +128,46 @@ var generateFixture = function (_a) {
177
128
  return MockRenderComponent;
178
129
  }());
179
130
  core_1.Component(options)(MockRenderComponent);
180
- mock_helper_1.ngMocks.flushTestBed();
181
131
  testing_1.TestBed.configureTestingModule({
182
132
  declarations: [MockRenderComponent],
183
133
  });
184
134
  return testing_1.TestBed.createComponent(MockRenderComponent);
185
135
  };
136
+ var fixtureFactory = function (template, meta, params, flags) {
137
+ var mockTemplate = func_generate_template_1.default(template, __assign(__assign({}, meta), { params: params }));
138
+ var options = { providers: flags.providers, selector: 'mock-render', template: mockTemplate };
139
+ var fixture = generateFixture(__assign(__assign({}, meta), { params: params, options: options }));
140
+ if (flags.detectChanges) {
141
+ fixture.detectChanges();
142
+ }
143
+ return fixture;
144
+ };
145
+ var isExpectedRender = function (template) {
146
+ return typeof template === 'string' || func_is_ng_def_1.isNgDef(template, 'c') || func_is_ng_def_1.isNgDef(template, 'd');
147
+ };
148
+ var renderDeclaration = function (fixture, template, params) {
149
+ fixture.point = fixture.debugElement.children[0] || fixture.debugElement.childNodes[0];
150
+ if (func_is_ng_def_1.isNgDef(template, 'd')) {
151
+ Object.defineProperty(fixture.point, 'componentInstance', {
152
+ configurable: true,
153
+ get: function () { return mock_helper_1.ngMocks.get(fixture.point, template); },
154
+ });
155
+ }
156
+ tryWhen(!params, function () { var _a; return func_install_prop_reader_1.default(fixture.componentInstance, (_a = fixture.point) === null || _a === void 0 ? void 0 : _a.componentInstance); });
157
+ };
158
+ var renderInjection = function (fixture, template, params) {
159
+ var instance = testing_1.TestBed.get(template);
160
+ if (params) {
161
+ mock_helper_1.ngMocks.stub(instance, params);
162
+ }
163
+ fixture.point = mock_service_1.MockService(core_1.DebugElement, {
164
+ childNodes: [],
165
+ children: [],
166
+ componentInstance: instance,
167
+ nativeElement: mock_service_1.MockService(HTMLElement),
168
+ });
169
+ func_install_prop_reader_1.default(fixture.componentInstance, fixture.point.componentInstance, true);
170
+ };
186
171
  var tryWhen = function (flag, callback) {
187
172
  if (!flag) {
188
173
  return;
@@ -196,24 +181,18 @@ var tryWhen = function (flag, callback) {
196
181
  }
197
182
  };
198
183
  function MockRender(template, params, flags) {
199
- var _a;
200
184
  if (flags === void 0) { flags = true; }
201
185
  var flagsObject = typeof flags === 'boolean' ? { detectChanges: flags } : flags;
202
- var inputs;
203
- var outputs;
204
- var selector;
205
- if (typeof template !== 'string') {
206
- (_a = core_reflect_directive_resolve_1.default(template), inputs = _a.inputs, outputs = _a.outputs, selector = _a.selector);
207
- }
208
- var mockTemplate = generateTemplate(template, { selector: selector, params: params, inputs: inputs, outputs: outputs });
209
- var options = { providers: flagsObject.providers, selector: 'mock-render', template: mockTemplate };
210
- var fixture = generateFixture({ params: params, options: options, inputs: inputs, outputs: outputs });
211
- if (flagsObject.detectChanges) {
212
- fixture.detectChanges();
186
+ var meta = typeof template === 'string' || func_is_ng_def_1.isNgDef(template, 't') ? {} : reflectTemplate(template);
187
+ mock_helper_1.ngMocks.flushTestBed();
188
+ var fixture = fixtureFactory(template, meta, params, flagsObject);
189
+ if (isExpectedRender(template)) {
190
+ renderDeclaration(fixture, template, params);
191
+ }
192
+ else {
193
+ renderInjection(fixture, template, params);
213
194
  }
214
- fixture.point = fixture.debugElement.children[0] || fixture.debugElement.childNodes[0];
215
- tryWhen(!params, function () { var _a; return installProxy(fixture.componentInstance, (_a = fixture.point) === null || _a === void 0 ? void 0 : _a.componentInstance); });
216
195
  return fixture;
217
196
  }
218
197
  exports.MockRender = MockRender;
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1yZW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvbW9jay1yZW5kZXIvbW9jay1yZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNDQUF3RDtBQUN4RCxpREFBZ0Q7QUFDaEQsNkJBQStCO0FBRS9CLDJGQUFtRjtBQUVuRiwwREFBcUQ7QUFDckQsMkVBQW9FO0FBSXBFLElBQU0sV0FBVyxHQUFHLFVBQUMsTUFBVztJQUM5QixJQUFJLE9BQU8sTUFBTSxLQUFLLFVBQVUsRUFBRTtRQUNoQyxPQUFPLFVBQVUsQ0FBQztLQUNuQjtJQUNELElBQUksTUFBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxNQUFNLFlBQVksbUJBQVksRUFBRTtRQUMxRSxPQUFPLGVBQWUsQ0FBQztLQUN4QjtJQUNELElBQUksTUFBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxNQUFNLFlBQVksY0FBTyxFQUFFO1FBQ3JFLE9BQU8sZUFBZSxDQUFDO0tBQ3hCO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBRUYsSUFBTSxjQUFjLEdBQUcsVUFBQyxzQkFBOEMsRUFBRSxHQUFXO0lBQ2pGLE9BQU87UUFDTCxHQUFHLEVBQUU7WUFDSCxJQUFJLE9BQU8sc0JBQXNCLENBQUMsR0FBRyxDQUFDLEtBQUssVUFBVSxFQUFFO2dCQUNyRCxPQUFPO29CQUFDLGNBQWM7eUJBQWQsVUFBYyxFQUFkLHFCQUFjLEVBQWQsSUFBYzt3QkFBZCx5QkFBYzs7b0JBQUssT0FBQSxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsT0FBM0Isc0JBQXNCLFdBQVMsSUFBSTtnQkFBbkMsQ0FBb0MsQ0FBQzthQUNqRTtZQUVELE9BQU8sc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsQ0FBQztRQUNELEdBQUcsRUFBRSxVQUFDLENBQU0s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YSxFQUFFLENBQUM7S0FDekI7SUFDRCxPQUFPLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxzQkFBTSxPQUFBLFlBQVksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLFFBQUUsT0FBTyxDQUFDLEtBQUssMENBQUUsaUJBQWlCLENBQUMsQ0FBQSxFQUFBLENBQUMsQ0FBQztJQUVsRyxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRVEsZ0NBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGVzdEJlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCBjb3JlUmVmbGVjdERpcmVjdGl2ZVJlc29sdmUgZnJvbSAnLi4vY29tbW9uL2NvcmUucmVmbGVjdC5kaXJlY3RpdmUtcmVzb2x2ZSc7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSAnLi4vY29tbW9uL2NvcmUudHlwZXMnO1xuaW1wb3J0IHsgbmdNb2NrcyB9IGZyb20gJy4uL21vY2staGVscGVyL21vY2staGVscGVyJztcbmltcG9ydCBoZWxwZXJNb2NrU2VydmljZSBmcm9tICcuLi9tb2NrLXNlcnZpY2UvaGVscGVyLm1vY2stc2VydmljZSc7XG5cbmltcG9ydCB7IElNb2NrUmVuZGVyT3B0aW9ucywgTW9ja2VkQ29tcG9uZW50Rml4dHVyZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBzb2x2ZU91dHB1dCA9IChvdXRwdXQ6IGFueSk6IHN0cmluZyA9PiB7XG4gIGlmICh0eXBlb2Ygb3V0cHV0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuICcoJGV2ZW50KSc7XG4gIH1cbiAgaWYgKG91dHB1dCAmJiB0eXBlb2Ygb3V0cHV0ID09PSAnb2JqZWN0JyAmJiBvdXRwdXQgaW5zdGFuY2VvZiBFdmVudEVtaXR0ZXIpIHtcbiAgICByZXR1cm4gJy5lbWl0KCRldmVudCknO1xuICB9XG4gIGlmIChvdXRwdXQgJiYgdHlwZW9mIG91dHB1dCA9PT0gJ29iamVjdCcgJiYgb3V0cHV0IGluc3RhbmNlb2YgU3ViamVjdCkge1xuICAgIHJldHVybiAnLm5leHQoJGV2ZW50KSc7XG4gIH1cblxuICByZXR1cm4gJz0kZXZlbnQnO1xufTtcblxuY29uc3QgY3JlYXRlUHJvcGVydHkgPSAocG9pbnRDb21wb25lbnRJbnN0YW5jZTogUmVjb3JkPGtleW9mIGFueSwgYW55Piwga2V5OiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQ6ICgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgcG9pbnRDb21wb25lbnRJbnN0YW5jZVtrZXldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IHBvaW50Q29tcG9uZW50SW5zdGFuY2Vba2V5XSguLi5hcmdzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBvaW50Q29tcG9uZW50SW5zdGFuY2Vba2V5XTtcbiAgICB9LFxuICAgIHNldDogKHY6IGFueSkgPT4gKHBvaW50Q29tcG9uZW50SW5zdGFuY2Vba2V5XSA9IHYpLFxuICB9O1xufTtcblxuY29uc3QgZXh0cmFjdEFsbEtleXMgPSAoaW5zdGFuY2U6IG9iamVjdCkgPT4gW1xuICAuLi5oZWxwZXJNb2NrU2VydmljZS5leHRyYWN0UHJvcGVydGllc0Zyb21Qcm90b3R5cGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKGluc3RhbmNlKSksXG4gIC4uLmhlbHBlck1vY2tTZXJ2aWNlLmV4dHJhY3RNZXRob2RzRnJvbVByb3RvdHlwZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoaW5zdGFuY2UpKSxcbiAgLi4uT2JqZWN0LmtleXMoaW5zdGFuY2UpLFxuXTtcblxuY29uc3QgZXh0cmFjdE93bktleXMgPSAoaW5zdGFuY2U6IG9iamVjdCkgPT4gWy4uLk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluc3RhbmNlKSwgLi4uT2JqZWN0LmtleXMoaW5zdGFuY2UpXTtcblxuY29uc3QgaW5zdGFsbFByb3h5ID0gKFxuICBjb21wb25lbnRJbnN0YW5jZTogUmVjb3JkPGtleW9mIGFueSwgYW55PixcbiAgcG9pbnRDb21wb25lbnRJbnN0YW5jZT86IFJlY29yZDxrZXlvZiBhbnksIGFueT4sXG4pOiB2b2lkID0+IHtcbiAgaWYgKCFwb2ludENvbXBvbmVudEluc3RhbmNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZXhpc3RzID0gZXh0cmFjdE93bktleXMoY29tcG9uZW50SW5zdGFuY2UpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBleHRyYWN0QWxsS2V5cyhwb2ludENvbXBvbmVudEluc3RhbmNlKSkge1xuICAgIGlmIChleGlzdHMuaW5kZXhPZihrZXkpICE9PSAtMSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbXBvbmVudEluc3RhbmNlLCBrZXksIGNyZWF0ZVByb3BlcnR5KHBvaW50Q29tcG9uZW50SW5zdGFuY2UsIGtleSkpO1xuICAgIGV4aXN0cy5wdXNoKGtleSk7XG4gIH1cbn07XG5cbmNvbnN0IGdlbmVyYXRlVGVtcGxhdGVBdHRyV3JhcCA9IChwcm9wOiBzdHJpbmcsIHR5cGU6ICdpJyB8ICdvJykgPT4gKHR5cGUgPT09ICdpJyA/IGBbJHtwcm9wfV1gIDogYCgke3Byb3B9KWApO1xuXG5jb25zdCBnZW5lcmF0ZVRlbXBsYXRlQXR0cldpdGhQYXJhbXMgPSAocGFyYW1zOiBhbnksIHByb3A6IHN0cmluZywgdHlwZTogJ2knIHwgJ28nKTogc3RyaW5nID0+XG4gIGAgJHtnZW5lcmF0ZVRlbXBsYXRlQXR0cldyYXAocHJvcCwgdHlwZSl9PVwiJHtwcm9wfSR7dHlwZSA9PT0gJ28nID8gc29sdmVPdXRwdXQocGFyYW1zW3Byb3BdKSA6ICcnfVwiYDtcblxuY29uc3QgZ2VuZXJhdGVUZW1wbGF0ZUF0dHJXaXRob3V0UGFyYW1zID0gKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCB0eXBlOiAnaScgfCAnbycpOiBzdHJpbmcgPT5cbiAgYCAke2dlbmVyYXRlVGVtcGxhdGVBdHRyV3JhcChrZXksIHR5cGUpfT1cIiR7dmFsdWV9JHt0eXBlID09PSAnbycgPyAnLmVtaXQoJGV2ZW50KScgOiAnJ31cImA7XG5cbmNvbnN0IGdlbmVyYXRlVGVtcGxhdGVBdHRyID0gKHBhcmFtczogYW55LCBhdHRyOiBhbnksIHR5cGU6ICdpJyB8ICdvJykgPT4ge1xuICBsZXQgbW9ja1RlbXBsYXRlID0gJyc7XG4gIGZvciAoY29uc3QgZGVmaW5pdGlvbiBvZiBhdHRyKSB7XG4gICAgY29uc3QgW3Byb3BlcnR5LCBhbGlhc10gPSBkZWZpbml0aW9uLnNwbGl0KCc6ICcpO1xuICAgIG1vY2tUZW1wbGF0ZSArPSBwYXJhbXNcbiAgICAgID8gZ2VuZXJhdGVUZW1wbGF0ZUF0dHJXaXRoUGFyYW1zKHBhcmFtcywgYWxpYXMgfHwgcHJvcGVydHksIHR5cGUpXG4gICAgICA6IGdlbmVyYXRlVGVtcGxhdGVBdHRyV2l0aG91dFBhcmFtcyhhbGlhcyB8fCBwcm9wZXJ0eSwgcHJvcGVydHksIHR5cGUpO1xuICB9XG5cbiAgcmV0dXJuIG1vY2tUZW1wbGF0ZTtcbn07XG5cbmNvbnN0IGdlbmVyYXRlVGVtcGxhdGUgPSAoZGVjbGFyYXRpb246IGFueSwgeyBzZWxlY3RvciwgcGFyYW1zLCBpbnB1dHMsIG91dHB1dHMgfTogYW55KTogc3RyaW5nID0+IHtcbiAgbGV0IG1vY2tUZW1wbGF0ZSA9ICcnO1xuXG4gIGlmICh0eXBlb2YgZGVjbGFyYXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgbW9ja1RlbXBsYXRlID0gZGVjbGFyYXRpb247XG4gIH0gZWxzZSBpZiAoc2VsZWN0b3IpIHtcbiAgICBtb2NrVGVtcGxhdGUgKz0gYDwke3NlbGVjdG9yfWA7XG4gICAgbW9ja1RlbXBsYXRlICs9IGdlbmVyYXRlVGVtcGxhdGVBdHRyKHBhcmFtcywgaW5wdXRzLCAnaScpO1xuICAgIG1vY2tUZW1wbGF0ZSArPSBnZW5lcmF0ZVRlbXBsYXRlQXR0cihwYXJhbXMsIG91dHB1dHMsICdvJyk7XG4gICAgbW9ja1RlbXBsYXRlICs9IGA+PC8ke3NlbGVjdG9yfT5gO1xuICB9XG5cbiAgcmV0dXJuIG1vY2tUZW1wbGF0ZTtcbn07XG5cbmNvbnN0IGFwcGx5UGFyYW1zVG9GaXh0dXJlSW5zdGFuY2VHZXREYXRhID0gKHBhcmFtczogYW55LCBrZXlzOiBzdHJpbmdbXSkgPT4gKCFwYXJhbXMgJiYga2V5cyA/IGtleXMgOiBbXSk7XG5cbmNvbnN0IGFwcGx5UGFyYW1zVG9GaXh0dXJlSW5zdGFuY2UgPSAoXG4gIGluc3RhbmNlOiBSZWNvcmQ8a2V5b2YgYW55LCBhbnk+LFxuICBwYXJhbXM6IGFueSxcbiAgaW5wdXRzOiBzdHJpbmdbXSxcbiAgb3V0cHV0czogc3RyaW5nW10sXG4pOiB2b2lkID0+IHtcbiAgaW5zdGFsbFByb3h5KGluc3RhbmNlLCBwYXJhbXMpO1xuICBmb3IgKGNvbnN0IGRlZmluaXRpb24gb2YgYXBwbHlQYXJhbXNUb0ZpeHR1cmVJbnN0YW5jZUdldERhdGEocGFyYW1zLCBpbnB1dHMpKSB7XG4gICAgY29uc3QgW3Byb3BlcnR5XSA9IGRlZmluaXRpb24uc3BsaXQoJzogJyk7XG4gICAgaW5zdGFuY2VbcHJvcGVydHldID0gdW5kZWZpbmVkO1xuICB9XG4gIGZvciAoY29uc3QgZGVmaW5pdGlvbiBvZiBhcHBseVBhcmFtc1RvRml4dHVyZUluc3RhbmNlR2V0RGF0YShwYXJhbXMsIG91dHB1dHMpKSB7XG4gICAgY29uc3QgW3Byb3BlcnR5XSA9IGRlZmluaXRpb24uc3BsaXQoJzogJyk7XG4gICAgaW5zdGFuY2VbcHJvcGVydHldID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICB9XG59O1xuXG5jb25zdCBnZW5lcmF0ZUZpeHR1cmUgPSAoeyBwYXJhbXMsIG9wdGlvbnMsIGlucHV0cywgb3V0cHV0cyB9OiBhbnkpID0+IHtcbiAgY2xhc3MgTW9ja1JlbmRlckNvbXBvbmVudCB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgYXBwbHlQYXJhbXNUb0ZpeHR1cmVJbnN0YW5jZSh0aGlzLCBwYXJhbXMsIGlucHV0cywgb3V0cHV0cyk7XG4gICAgfVxuICB9XG5cbiAgQ29tcG9uZW50KG9wdGlvbnMpKE1vY2tSZW5kZXJDb21wb25lbnQpO1xuICBuZ01vY2tzLmZsdXNoVGVzdEJlZCgpO1xuICBUZXN0QmVkLmNvbmZpZ3VyZVRlc3RpbmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW01vY2tSZW5kZXJDb21wb25lbnRdLFxuICB9KTtcblxuICByZXR1cm4gVGVzdEJlZC5jcmVhdGVDb21wb25lbnQoTW9ja1JlbmRlckNvbXBvbmVudCk7XG59O1xuXG5jb25zdCB0cnlXaGVuID0gKGZsYWc6IGJvb2xlYW4sIGNhbGxiYWNrOiAoKSA9PiB2b2lkKSA9PiB7XG4gIGlmICghZmxhZykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyeSB7XG4gICAgLy8gaXZ5IHRocm93cyBFcnJvcjogRXhwZWN0aW5nIGluc3RhbmNlIG9mIERPTSBFbGVtZW50XG4gICAgY2FsbGJhY2soKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIG5vdGhpbmcgdG8gZG9cbiAgfVxufTtcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pa2UxOHQvbmctbW9ja3MjbW9ja3JlbmRlclxuICovXG5mdW5jdGlvbiBNb2NrUmVuZGVyPE1Db21wb25lbnQ+KFxuICB0ZW1wbGF0ZTogVHlwZTxNQ29tcG9uZW50PixcbiAgcGFyYW1zOiB1bmRlZmluZWQsXG4gIGRldGVjdENoYW5nZXM/OiBib29sZWFuIHwgSU1vY2tSZW5kZXJPcHRpb25zLFxuKTogTW9ja2VkQ29tcG9uZW50Rml4dHVyZTxNQ29tcG9uZW50LCBNQ29tcG9uZW50PjtcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pa2UxOHQvbmctbW9ja3MjbW9ja3JlbmRlclxuICovXG5mdW5jdGlvbiBNb2NrUmVuZGVyPE1Db21wb25lbnQsIFRDb21wb25lbnQgZXh0ZW5kcyBvYmplY3Q+KFxuICB0ZW1wbGF0ZTogVHlwZTxNQ29tcG9uZW50PixcbiAgcGFyYW1zOiBUQ29tcG9uZW50LFxuICBkZXRlY3RDaGFuZ2VzPzogYm9vbGVhbiB8IElNb2NrUmVuZGVyT3B0aW9ucyxcbik6IE1vY2tlZENvbXBvbmVudEZpeHR1cmU8TUNvbXBvbmVudCwgVENvbXBvbmVudD47XG5cbi8qKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaWtlMTh0L25nLW1vY2tzI21vY2tyZW5kZXJcbiAqL1xuZnVuY3Rpb24gTW9ja1JlbmRlcjxNQ29tcG9uZW50LCBUQ29tcG9uZW50IGV4dGVuZHMgb2JqZWN0ID0gUmVjb3JkPGtleW9mIGFueSwgYW55Pj4oXG4gIHRlbXBsYXRlOiBUeXBlPE1Db21wb25lbnQ+LFxuICBwYXJhbXM6IFRDb21wb25lbnQsXG4gIGRldGVjdENoYW5nZXM/OiBib29sZWFuIHwgSU1vY2tSZW5kZXJPcHRpb25zLFxuKTogTW9ja2VkQ29tcG9uZW50Rml4dHVyZTxNQ29tcG9uZW50LCBUQ29tcG9uZW50PjtcblxuLyoqXG4gKiBXaXRob3V0IHBhcmFtcyB3ZSBzaG91bGRuJ3QgYXV0b2NvbXBsZXRlIGFueSBrZXlzIG9mIGFueSB0eXBlcy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pa2UxOHQvbmctbW9ja3MjbW9ja3JlbmRlclxuICovXG5mdW5jdGlvbiBNb2NrUmVuZGVyPE1Db21wb25lbnQ+KHRlbXBsYXRlOiBUeXBlPE1Db21wb25lbnQ+KTogTW9ja2VkQ29tcG9uZW50Rml4dHVyZTxNQ29tcG9uZW50LCBNQ29tcG9uZW50PjtcblxuLyoqXG4gKiBXaXRob3V0IHBhcmFtcyB3ZSBzaG91bGRuJ3QgYXV0b2NvbXBsZXRlIGFueSBrZXlzIG9mIGFueSB0eXBlcy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pa2UxOHQvbmctbW9ja3MjbW9ja3JlbmRlclxuICovXG5mdW5jdGlvbiBNb2NrUmVuZGVyPE1Db21wb25lbnQgPSB2b2lkPih0ZW1wbGF0ZTogc3RyaW5nKTogTW9ja2VkQ29tcG9uZW50Rml4dHVyZTxNQ29tcG9uZW50PjtcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pa2UxOHQvbmctbW9ja3MjbW9ja3JlbmRlclxuICovXG5mdW5jdGlvbiBNb2NrUmVuZGVyPE1Db21wb25lbnQgPSB2b2lkPihcbiAgdGVtcGxhdGU6IHN0cmluZyxcbiAgcGFyYW1zOiBSZWNvcmQ8a2V5b2YgYW55LCBhbnk+LFxuICBkZXRlY3RDaGFuZ2VzPzogYm9vbGVhbiB8IElNb2NrUmVuZGVyT3B0aW9ucyxcbik6IE1vY2tlZENvbXBvbmVudEZpeHR1cmU8TUNvbXBvbmVudCwgUmVjb3JkPGtleW9mIGFueSwgYW55Pj47XG5cbi8qKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaWtlMTh0L25nLW1vY2tzI21vY2tyZW5kZXJcbiAqL1xuZnVuY3Rpb24gTW9ja1JlbmRlcjxNQ29tcG9uZW50LCBUQ29tcG9uZW50IGV4dGVuZHMgUmVjb3JkPGtleW9mIGFueSwgYW55PiA9IFJlY29yZDxrZXlvZiBhbnksIGFueT4+KFxuICB0ZW1wbGF0ZTogc3RyaW5nLFxuICBwYXJhbXM6IFRDb21wb25lbnQsXG4gIGRldGVjdENoYW5nZXM/OiBib29sZWFuIHwgSU1vY2tSZW5kZXJPcHRpb25zLFxuKTogTW9ja2VkQ29tcG9uZW50Rml4dHVyZTxNQ29tcG9uZW50LCBUQ29tcG9uZW50PjtcblxuZnVuY3Rpb24gTW9ja1JlbmRlcjxNQ29tcG9uZW50LCBUQ29tcG9uZW50IGV4dGVuZHMgUmVjb3JkPGtleW9mIGFueSwgYW55Pj4oXG4gIHRlbXBsYXRlOiBzdHJpbmcgfCBUeXBlPE1Db21wb25lbnQ+LFxuICBwYXJhbXM/OiBUQ29tcG9uZW50LFxuICBmbGFnczogYm9vbGVhbiB8IElNb2NrUmVuZGVyT3B0aW9ucyA9IHRydWUsXG4pOiBNb2NrZWRDb21wb25lbnRGaXh0dXJlPE1Db21wb25lbnQsIFRDb21wb25lbnQ+IHtcbiAgY29uc3QgZmxhZ3NPYmplY3Q6IElNb2NrUmVuZGVyT3B0aW9ucyA9IHR5cGVvZiBmbGFncyA9PT0gJ2Jvb2xlYW4nID8geyBkZXRlY3RDaGFuZ2VzOiBmbGFncyB9IDogZmxhZ3M7XG5cbiAgbGV0IGlucHV0czogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gIGxldCBvdXRwdXRzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgbGV0IHNlbGVjdG9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlmICh0eXBlb2YgdGVtcGxhdGUgIT09ICdzdHJpbmcnKSB7XG4gICAgKHsgaW5wdXRzLCBvdXRwdXRzLCBzZWxlY3RvciB9ID0gY29yZVJlZmxlY3REaXJlY3RpdmVSZXNvbHZlKHRlbXBsYXRlKSk7XG4gIH1cblxuICBjb25zdCBtb2NrVGVtcGxhdGUgPSBnZW5lcmF0ZVRlbXBsYXRlKHRlbXBsYXRlLCB7IHNlbGVjdG9yLCBwYXJhbXMsIGlucHV0cywgb3V0cHV0cyB9KTtcbiAgY29uc3Qgb3B0aW9uczogQ29tcG9uZW50ID0geyBwcm92aWRlcnM6IGZsYWdzT2JqZWN0LnByb3ZpZGVycywgc2VsZWN0b3I6ICdtb2NrLXJlbmRlcicsIHRlbXBsYXRlOiBtb2NrVGVtcGxhdGUgfTtcbiAgY29uc3QgZml4dHVyZTogYW55ID0gZ2VuZXJhdGVGaXh0dXJlKHsgcGFyYW1zLCBvcHRpb25zLCBpbnB1dHMsIG91dHB1dHMgfSk7XG4gIGlmIChmbGFnc09iamVjdC5kZXRlY3RDaGFuZ2VzKSB7XG4gICAgZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbiAgZml4dHVyZS5wb2ludCA9IGZpeHR1cmUuZGVidWdFbGVtZW50LmNoaWxkcmVuWzBdIHx8IGZpeHR1cmUuZGVidWdFbGVtZW50LmNoaWxkTm9kZXNbMF07XG4gIHRyeVdoZW4oIXBhcmFtcywgKCkgPT4gaW5zdGFsbFByb3h5KGZpeHR1cmUuY29tcG9uZW50SW5zdGFuY2UsIGZpeHR1cmUucG9pbnQ/LmNvbXBvbmVudEluc3RhbmNlKSk7XG5cbiAgcmV0dXJuIGZpeHR1cmU7XG59XG5cbmV4cG9ydCB7IE1vY2tSZW5kZXIgfTtcbiJdfQ==
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1yZW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvbW9jay1yZW5kZXIvbW9jay1yZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0NBQWlHO0FBQ2pHLGlEQUFrRTtBQUVsRSx1REFBcUQ7QUFDckQsMkZBQW1GO0FBRW5GLDJEQUFtRDtBQUNuRCwwREFBcUQ7QUFDckQsNkRBQTJEO0FBRTNELG1FQUE0RDtBQUM1RCx1RUFBK0Q7QUFHL0QsSUFBTSxtQ0FBbUMsR0FBRyxVQUFDLE1BQVcsRUFBRSxJQUFjLElBQUssT0FBQSxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBN0IsQ0FBNkIsQ0FBQztBQUUzRyxJQUFNLDRCQUE0QixHQUFHLFVBQ25DLFFBQWdDLEVBQ2hDLE1BQVcsRUFDWCxNQUFnQixFQUNoQixPQUFpQjs7SUFFakIsa0NBQXFCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDOztRQUN4QyxLQUF5QixJQUFBLEtBQUEsU0FBQSxtQ0FBbUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUEsZ0JBQUEsNEJBQUU7WUFBekUsSUFBTSxVQUFVLFdBQUE7WUFDYixJQUFBLEtBQUEsT0FBYSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFBLEVBQWxDLFFBQVEsUUFBMEIsQ0FBQztZQUMxQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsU0FBUyxDQUFDO1NBQ2hDOzs7Ozs7Ozs7O1FBQ0QsS0FBeUIsSUFBQSxLQUFBLFNBQUEsbUNBQW1DLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFBLGdCQUFBLDRCQUFFO1lBQTFFLElBQU0sVUFBVSxXQUFBO1lBQ2IsSUFBQSxLQUFBLE9BQWEsVUFBVSxD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LHFCQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkIsSUFBTSxPQUFPLEdBQVEsY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3pFLElBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDOUIsaUJBQWlCLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUM5QztTQUFNO1FBQ0wsZUFBZSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDNUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRVEsZ0NBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIERlYnVnRWxlbWVudCwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRGaXh0dXJlLCBUZXN0QmVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcblxuaW1wb3J0IHsgZXh0ZW5kQ2xhc3MgfSBmcm9tICcuLi9jb21tb24vY29yZS5oZWxwZXJzJztcbmltcG9ydCBjb3JlUmVmbGVjdERpcmVjdGl2ZVJlc29sdmUgZnJvbSAnLi4vY29tbW9uL2NvcmUucmVmbGVjdC5kaXJlY3RpdmUtcmVzb2x2ZSc7XG5pbXBvcnQgeyBBbnlUeXBlLCBUeXBlIH0gZnJvbSAnLi4vY29tbW9uL2NvcmUudHlwZXMnO1xuaW1wb3J0IHsgaXNOZ0RlZiB9IGZyb20gJy4uL2NvbW1vbi9mdW5jLmlzLW5nLWRlZic7XG5pbXBvcnQgeyBuZ01vY2tzIH0gZnJvbSAnLi4vbW9jay1oZWxwZXIvbW9jay1oZWxwZXInO1xuaW1wb3J0IHsgTW9ja1NlcnZpY2UgfSBmcm9tICcuLi9tb2NrLXNlcnZpY2UvbW9jay1zZXJ2aWNlJztcblxuaW1wb3J0IGZ1bmNHZW5lcmF0ZVRlbXBsYXRlIGZyb20gJy4vZnVuYy5nZW5lcmF0ZS10ZW1wbGF0ZSc7XG5pbXBvcnQgZnVuY0luc3RhbGxQcm9wUmVhZGVyIGZyb20gJy4vZnVuYy5pbnN0YWxsLXByb3AtcmVhZGVyJztcbmltcG9ydCB7IElNb2NrUmVuZGVyT3B0aW9ucywgTW9ja2VkQ29tcG9uZW50Rml4dHVyZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBhcHBseVBhcmFtc1RvRml4dHVyZUluc3RhbmNlR2V0RGF0YSA9IChwYXJhbXM6IGFueSwga2V5czogc3RyaW5nW10pID0+ICghcGFyYW1zICYmIGtleXMgPyBrZXlzIDogW10pO1xuXG5jb25zdCBhcHBseVBhcmFtc1RvRml4dHVyZUluc3RhbmNlID0gKFxuICBpbnN0YW5jZTogUmVjb3JkPGtleW9mIGFueSwgYW55PixcbiAgcGFyYW1zOiBhbnksXG4gIGlucHV0czogc3RyaW5nW10sXG4gIG91dHB1dHM6IHN0cmluZ1tdLFxuKTogdm9pZCA9PiB7XG4gIGZ1bmNJbnN0YWxsUHJvcFJlYWRlcihpbnN0YW5jZSwgcGFyYW1zKTtcbiAgZm9yIChjb25zdCBkZWZpbml0aW9uIG9mIGFwcGx5UGFyYW1zVG9GaXh0dXJlSW5zdGFuY2VHZXREYXRhKHBhcmFtcywgaW5wdXRzKSkge1xuICAgIGNvbnN0IFtwcm9wZXJ0eV0gPSBkZWZpbml0aW9uLnNwbGl0KCc6ICcpO1xuICAgIGluc3RhbmNlW3Byb3BlcnR5XSA9IHVuZGVmaW5lZDtcbiAgfVxuICBmb3IgKGNvbnN0IGRlZmluaXRpb24gb2YgYXBwbHlQYXJhbXNUb0ZpeHR1cmVJbnN0YW5jZUdldERhdGEocGFyYW1zLCBvdXRwdXRzKSkge1xuICAgIGNvbnN0IFtwcm9wZXJ0eV0gPSBkZWZpbml0aW9uLnNwbGl0KCc6ICcpO1xuICAgIGluc3RhbmNlW3Byb3BlcnR5XSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgfVxufTtcblxuY29uc3QgcmVnaXN0ZXJUZW1wbGF0ZU1pZGRsZXdhcmUgPSAodGVtcGxhdGU6IEFueVR5cGU8YW55PiwgbWV0YTogRGlyZWN0aXZlKTogdm9pZCA9PiB7XG4gIGNvbnN0IGNoaWxkID0gZXh0ZW5kQ2xhc3ModGVtcGxhdGUpO1xuXG4gIGxldCBwcm92aWRlcnMgPSBtZXRhLnByb3ZpZGVycyB8fCBbXTtcbiAgcHJvdmlkZXJzID0gW1xuICAgIC4uLnByb3ZpZGVycyxcbiAgICB7XG4gICAgICBwcm92aWRlOiB0ZW1wbGF0ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBjaGlsZCxcbiAgICB9LFxuICBdO1xuICBtZXRhLnByb3ZpZGVycyA9IHByb3ZpZGVycztcblxuICBpZiAoaXNOZ0RlZih0ZW1wbGF0ZSwgJ2MnKSkge1xuICAgIENvbXBvbmVudChtZXRhKShjaGlsZCk7XG4gIH0gZWxzZSB7XG4gICAgRGlyZWN0aXZlKG1ldGEpKGNoaWxkKTtcbiAgfVxuICBUZXN0QmVkLmNvbmZpZ3VyZVRlc3RpbmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW2NoaWxkXSxcbiAgfSk7XG59O1xuXG5jb25zdCByZWZsZWN0VGVtcGxhdGUgPSAodGVtcGxhdGU6IEFueVR5cGU8YW55Pik6IERpcmVjdGl2ZSA9PiB7XG4gIGlmICghaXNOZ0RlZih0ZW1wbGF0ZSwgJ2MnKSAmJiAhaXNOZ0RlZih0ZW1wbGF0ZSwgJ2QnKSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IG1ldGEgPSB7IC4uLmNvcmVSZWZsZWN0RGlyZWN0aXZlUmVzb2x2ZSh0ZW1wbGF0ZSkgfTtcblxuICBpZiAobWV0YS5zZWxlY3RvciAmJiBtZXRhLnNlbGVjdG9yLm1hdGNoKC9bXFxbXFxdLF0vKSkge1xuICAgIG1ldGEuc2VsZWN0b3IgPSAnJztcbiAgfVxuXG4gIGlmICghbWV0YS5zZWxlY3Rvcikge1xuICAgIG1ldGEuc2VsZWN0b3IgPSBgbmctbW9ja3MtJHt0ZW1wbGF0ZS5uYW1lfWA7XG4gICAgcmVnaXN0ZXJUZW1wbGF0ZU1pZGRsZXdhcmUodGVtcGxhdGUsIG1ldGEpO1xuICB9XG5cbiAgcmV0dXJuIG1ldGE7XG59O1xuXG5jb25zdCBnZW5lcmF0ZUZpeHR1cmUgPSAoeyBwYXJhbXMsIG9wdGlvbnMsIGlucHV0cywgb3V0cHV0cyB9OiBhbnkpID0+IHtcbiAgY2xhc3MgTW9ja1JlbmRlckNvbXBvbmVudCB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgYXBwbHlQYXJhbXNUb0ZpeHR1cmVJbnN0YW5jZSh0aGlzLCBwYXJhbXMsIGlucHV0cywgb3V0cHV0cyk7XG4gICAgfVxuICB9XG5cbiAgQ29tcG9uZW50KG9wdGlvbnMpKE1vY2tSZW5kZXJDb21wb25lbnQpO1xuICBUZXN0QmVkLmNvbmZpZ3VyZVRlc3RpbmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW01vY2tSZW5kZXJDb21wb25lbnRdLFxuICB9KTtcblxuICByZXR1cm4gVGVzdEJlZC5jcmVhdGVDb21wb25lbnQoTW9ja1JlbmRlckNvbXBvbmVudCk7XG59O1xuXG5jb25zdCBmaXh0dXJlRmFjdG9yeSA9IDxUPih0ZW1wbGF0ZTogYW55LCBtZXRhOiBEaXJlY3RpdmUsIHBhcmFtczogYW55LCBmbGFnczogYW55KTogQ29tcG9uZW50Rml4dHVyZTxUPiA9PiB7XG4gIGNvbnN0IG1vY2tUZW1wbGF0ZSA9IGZ1bmNHZW5lcmF0ZVRlbXBsYXRlKHRlbXBsYXRlLCB7IC4uLm1ldGEsIHBhcmFtcyB9KTtcbiAgY29uc3Qgb3B0aW9uczogQ29tcG9uZW50ID0geyBwcm92aWRlcnM6IGZsYWdzLnByb3ZpZGVycywgc2VsZWN0b3I6ICdtb2NrLXJlbmRlcicsIHRlbXBsYXRlOiBtb2NrVGVtcGxhdGUgfTtcbiAgY29uc3QgZml4dHVyZTogYW55ID0gZ2VuZXJhdGVGaXh0dXJlKHsgLi4ubWV0YSwgcGFyYW1zLCBvcHRpb25zIH0pO1xuICBpZiAoZmxhZ3MuZGV0ZWN0Q2hhbmdlcykge1xuICAgIGZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmV0dXJuIGZpeHR1cmU7XG59O1xuXG5jb25zdCBpc0V4cGVjdGVkUmVuZGVyID0gKHRlbXBsYXRlOiBhbnkpOiBib29sZWFuID0+XG4gIHR5cGVvZiB0ZW1wbGF0ZSA9PT0gJ3N0cmluZycgfHwgaXNOZ0RlZih0ZW1wbGF0ZSwgJ2MnKSB8fCBpc05nRGVmKHRlbXBsYXRlLCAnZCcpO1xuXG5jb25zdCByZW5kZXJEZWNsYXJhdGlvbiA9IChmaXh0dXJlOiBhbnksIHRlbXBsYXRlOiBhbnksIHBhcmFtczogYW55KTogdm9pZCA9PiB7XG4gIGZpeHR1cmUucG9pbnQgPSBmaXh0dXJlLmRlYnVnRWxlbWVudC5jaGlsZHJlblswXSB8fCBmaXh0dXJlLmRlYnVnRWxlbWVudC5jaGlsZE5vZGVzWzBdO1xuICBpZiAoaXNOZ0RlZih0ZW1wbGF0ZSwgJ2QnKSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmaXh0dXJlLnBvaW50LCAnY29tcG9uZW50SW5zdGFuY2UnLCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQ6ICgpID0+IG5nTW9ja3MuZ2V0KGZpeHR1cmUucG9pbnQsIHRlbXBsYXRlKSxcbiAgICB9KTtcbiAgfVxuICB0cnlXaGVuKCFwYXJhbXMsICgpID0+IGZ1bmNJbnN0YWxsUHJvcFJlYWRlcihmaXh0dXJlLmNvbXBvbmVudEluc3RhbmNlLCBmaXh0dXJlLnBvaW50Py5jb21wb25lbnRJbnN0YW5jZSkpO1xufTtcblxuY29uc3QgcmVuZGVySW5qZWN0aW9uID0gKGZpeHR1cmU6IGFueSwgdGVtcGxhdGU6IGFueSwgcGFyYW1zOiBhbnkpOiB2b2lkID0+IHtcbiAgY29uc3QgaW5zdGFuY2UgPSBUZXN0QmVkLmdldCh0ZW1wbGF0ZSk7XG4gIGlmIChwYXJhbXMpIHtcbiAgICBuZ01vY2tzLnN0dWIoaW5zdGFuY2UsIHBhcmFtcyk7XG4gIH1cbiAgZml4dHVyZS5wb2ludCA9IE1vY2tTZXJ2aWNlKERlYnVnRWxlbWVudCwge1xuICAgIGNoaWxkTm9kZXM6IFtdLFxuICAgIGNoaWxkcmVuOiBbXSxcbiAgICBjb21wb25lbnRJbnN0YW5jZTogaW5zdGFuY2UsXG4gICAgbmF0aXZlRWxlbWVudDogTW9ja1NlcnZpY2UoSFRNTEVsZW1lbnQpLFxuICB9KTtcbiAgZnVuY0luc3RhbGxQcm9wUmVhZGVyKGZpeHR1cmUuY29tcG9uZW50SW5zdGFuY2UsIGZpeHR1cmUucG9pbnQuY29tcG9uZW50SW5zdGFuY2UsIHRydWUpO1xufTtcblxuY29uc3QgdHJ5V2hlbiA9IChmbGFnOiBib29sZWFuLCBjYWxsYmFjazogKCkgPT4gdm9pZCkgPT4ge1xuICBpZiAoIWZsYWcpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdHJ5IHtcbiAgICAvLyBpdnkgdGhyb3dzIEVycm9yOiBFeHBlY3RpbmcgaW5zdGFuY2Ugb2YgRE9NIEVsZW1lbnRcbiAgICBjYWxsYmFjaygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gbm90aGluZyB0byBkb1xuICB9XG59O1xuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2lrZTE4dC9uZy1tb2NrcyNtb2NrcmVuZGVyXG4gKi9cbmZ1bmN0aW9uIE1vY2tSZW5kZXI8TUNvbXBvbmVudD4oXG4gIHRlbXBsYXRlOiBJbmplY3Rpb25Ub2tlbjxNQ29tcG9uZW50PixcbiAgcGFyYW1zPzogdW5kZWZpbmVkLFxuICBkZXRlY3RDaGFuZ2VzPzogYm9vbGVhbiB8IElNb2NrUmVuZGVyT3B0aW9ucyxcbik6IE1vY2tlZENvbXBvbmVudEZpeHR1cmU8TUNvbXBvbmVudCwgdm9pZD47XG5cbi8qKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaWtlMTh0L25nLW1vY2tzI21vY2tyZW5kZXJcbiAqL1xuZnVuY3Rpb24gTW9ja1JlbmRlcjxNQ29tcG9uZW50PihcbiAgdGVtcGxhdGU6IFR5cGU8TUNvbXBvbmVudD4sXG4gIHBhcmFtczogdW5kZWZpbmVkLFxuICBkZXRlY3RDaGFuZ2VzPzogYm9vbGVhbiB8IElNb2NrUmVuZGVyT3B0aW9ucyxcbik6IE1vY2tlZENvbXBvbmVudEZpeHR1cmU8TUNvbXBvbmVudCwgTUNvbXBvbmVudD47XG5cbi8qKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaWtlMTh0L25nLW1vY2tzI21vY2tyZW5kZXJcbiAqL1xuZnVuY3Rpb24gTW9ja1JlbmRlcjxNQ29tcG9uZW50LCBUQ29tcG9uZW50IGV4dGVuZHMgb2JqZWN0PihcbiAgdGVtcGxhdGU6IFR5cGU8TUNvbXBvbmVudD4sXG4gIHBhcmFtczogVENvbXBvbmVudCxcbiAgZGV0ZWN0Q2hhbmdlcz86IGJvb2xlYW4gfCBJTW9ja1JlbmRlck9wdGlvbnMsXG4pOiBNb2NrZWRDb21wb25lbnRGaXh0dXJlPE1Db21wb25lbnQsIFRDb21wb25lbnQ+O1xuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2lrZTE4dC9uZy1tb2NrcyNtb2NrcmVuZGVyXG4gKi9cbmZ1bmN0aW9uIE1vY2tSZW5kZXI8TUNvbXBvbmVudCwgVENvbXBvbmVudCBleHRlbmRzIG9iamVjdCA9IFJlY29yZDxrZXlvZiBhbnksIGFueT4+KFxuICB0ZW1wbGF0ZTogVHlwZTxNQ29tcG9uZW50PixcbiAgcGFyYW1zOiBUQ29tcG9uZW50LFxuICBkZXRlY3RDaGFuZ2VzPzogYm9vbGVhbiB8IElNb2NrUmVuZGVyT3B0aW9ucyxcbik6IE1vY2tlZENvbXBvbmVudEZpeHR1cmU8TUNvbXBvbmVudCwgVENvbXBvbmVudD47XG5cbi8qKlxuICogV2l0aG91dCBwYXJhbXMgd2Ugc2hvdWxkIG5vdCBhdXRvY29tcGxldGUgYW55IGtleXMgb2YgYW55IHR5cGVzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2lrZTE4dC9uZy1tb2NrcyNtb2NrcmVuZGVyXG4gKi9cbmZ1bmN0aW9uIE1vY2tSZW5kZXI8TUNvbXBvbmVudD4odGVtcGxhdGU6IFR5cGU8TUNvbXBvbmVudD4pOiBNb2NrZWRDb21wb25lbnRGaXh0dXJlPE1Db21wb25lbnQsIE1Db21wb25lbnQ+O1xuXG4vKipcbiAqIEFuIGVtcHR5IHN0cmluZyBkb2VzIG5vdCBoYXZlIHBvaW50LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2lrZTE4dC9uZy1tb2NrcyNtb2NrcmVuZGVyXG4gKi9cbmZ1bmN0aW9uIE1vY2tSZW5kZXIodGVtcGxhdGU6ICcnKTogQ29tcG9uZW50Rml4dHVyZTx2b2lkPiAmIHsgcG9pbnQ6IHVuZGVmaW5lZCB9O1xuXG4vKipcbiAqIFdpdGhvdXQgcGFyYW1zIHdlIHNob3VsZCBub3QgYXV0b2NvbXBsZXRlIGFueSBrZXlzIG9mIGFueSB0eXBlcy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pa2UxOHQvbmctbW9ja3MjbW9ja3JlbmRlclxuICovXG5mdW5jdGlvbiBNb2NrUmVuZGVyPE1Db21wb25lbnQgPSB2b2lkPih0ZW1wbGF0ZTogc3RyaW5nKTogTW9ja2VkQ29tcG9uZW50Rml4dHVyZTxNQ29tcG9uZW50PjtcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pa2UxOHQvbmctbW9ja3MjbW9ja3JlbmRlclxuICovXG5mdW5jdGlvbiBNb2NrUmVuZGVyPE1Db21wb25lbnQgPSB2b2lkPihcbiAgdGVtcGxhdGU6IHN0cmluZyxcbiAgcGFyYW1zOiBSZWNvcmQ8a2V5b2YgYW55LCBhbnk+LFxuICBkZXRlY3RDaGFuZ2VzPzogYm9vbGVhbiB8IElNb2NrUmVuZGVyT3B0aW9ucyxcbik6IE1vY2tlZENvbXBvbmVudEZpeHR1cmU8TUNvbXBvbmVudCwgUmVjb3JkPGtleW9mIGFueSwgYW55Pj47XG5cbi8qKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaWtlMTh0L25nLW1vY2tzI21vY2tyZW5kZXJcbiAqL1xuZnVuY3Rpb24gTW9ja1JlbmRlcjxNQ29tcG9uZW50LCBUQ29tcG9uZW50IGV4dGVuZHMgUmVjb3JkPGtleW9mIGFueSwgYW55PiA9IFJlY29yZDxrZXlvZiBhbnksIGFueT4+KFxuICB0ZW1wbGF0ZTogc3RyaW5nLFxuICBwYXJhbXM6IFRDb21wb25lbnQsXG4gIGRldGVjdENoYW5nZXM/OiBib29sZWFuIHwgSU1vY2tSZW5kZXJPcHRpb25zLFxuKTogTW9ja2VkQ29tcG9uZW50Rml4dHVyZTxNQ29tcG9uZW50LCBUQ29tcG9uZW50PjtcblxuZnVuY3Rpb24gTW9ja1JlbmRlcjxNQ29tcG9uZW50LCBUQ29tcG9uZW50IGV4dGVuZHMgUmVjb3JkPGtleW9mIGFueSwgYW55Pj4oXG4gIHRlbXBsYXRlOiBzdHJpbmcgfCBUeXBlPE1Db21wb25lbnQ+IHwgSW5qZWN0aW9uVG9rZW48TUNvbXBvbmVudD4sXG4gIHBhcmFtcz86IFRDb21wb25lbnQsXG4gIGZsYWdzOiBib29sZWFuIHwgSU1vY2tSZW5kZXJPcHRpb25zID0gdHJ1ZSxcbik6IGFueSB7XG4gIGNvbnN0IGZsYWdzT2JqZWN0OiBJTW9ja1JlbmRlck9wdGlvbnMgPSB0eXBlb2YgZmxhZ3MgPT09ICdib29sZWFuJyA/IHsgZGV0ZWN0Q2hhbmdlczogZmxhZ3MgfSA6IGZsYWdzO1xuICBjb25zdCBtZXRhOiBEaXJlY3RpdmUgPSB0eXBlb2YgdGVtcGxhdGUgPT09ICdzdHJpbmcnIHx8IGlzTmdEZWYodGVtcGxhdGUsICd0JykgPyB7fSA6IHJlZmxlY3RUZW1wbGF0ZSh0ZW1wbGF0ZSk7XG5cbiAgbmdNb2Nrcy5mbHVzaFRlc3RCZWQoKTtcbiAgY29uc3QgZml4dHVyZTogYW55ID0gZml4dHVyZUZhY3RvcnkodGVtcGxhdGUsIG1ldGEsIHBhcmFtcywgZmxhZ3NPYmplY3QpO1xuICBpZiAoaXNFeHBlY3RlZFJlbmRlcih0ZW1wbGF0ZSkpIHtcbiAgICByZW5kZXJEZWNsYXJhdGlvbihmaXh0dXJlLCB0ZW1wbGF0ZSwgcGFyYW1zKTtcbiAgfSBlbHNlIHtcbiAgICByZW5kZXJJbmplY3Rpb24oZml4dHVyZSwgdGVtcGxhdGUsIHBhcmFtcyk7XG4gIH1cblxuICByZXR1cm4gZml4dHVyZTtcbn1cblxuZXhwb3J0IHsgTW9ja1JlbmRlciB9O1xuIl19
@@ -52,7 +52,7 @@ var anyDiffers = function (a, b) {
52
52
  }
53
53
  return false;
54
54
  };
55
- var createFromResolution = function (provide, resolution, multi) {
55
+ var createFromResolution = function (provide, resolution) {
56
56
  var mockDef = resolution;
57
57
  var existingMock = ng_mocks_universe_1.default.builtProviders.get(provide);
58
58
  if (existingMock) {
@@ -65,7 +65,7 @@ var createFromResolution = function (provide, resolution, multi) {
65
65
  useClass: mockDef,
66
66
  };
67
67
  }
68
- return multi && typeof mockDef === 'object' ? __assign(__assign({}, mockDef), { multi: multi }) : mockDef;
68
+ return mockDef;
69
69
  };
70
70
  var isSuitableProvider = function (provider, provide) {
71
71
  return ng_mocks_universe_1.default.builtProviders.has(core_tokens_1.NG_MOCKS_INTERCEPTORS) &&
@@ -126,10 +126,10 @@ var createPredefinedMockProvider = function (provider, provide) {
126
126
  }
127
127
  return undefined;
128
128
  };
129
- var createMockProvider = function (provider, provide, resolutions, change) {
129
+ var createMockProvider = function (provider, provide, change) {
130
130
  var _a;
131
131
  var mockDef = createPredefinedMockProvider(provider, provide);
132
- if (!mockDef && ng_mocks_universe_1.default.flags.has('skipMock')) {
132
+ if (!mockDef && ng_mocks_universe_1.default.flags.has('skipMock') && ng_mocks_universe_1.default.getResolution(provide) !== 'mock') {
133
133
  (_a = ng_mocks_universe_1.default.config.get('ngMocksDepsSkip')) === null || _a === void 0 ? void 0 : _a.add(provide);
134
134
  mockDef = provider;
135
135
  }
@@ -137,9 +137,6 @@ var createMockProvider = function (provider, provide, resolutions, change) {
137
137
  mockDef = mock_provider_1.default(provider);
138
138
  }
139
139
  mockDef = replaceWithMocks(provider, provide, mockDef);
140
- if (!func_is_ng_injection_token_1.isNgInjectionToken(provide) || provider !== mockDef) {
141
- resolutions.set(provide, mockDef);
142
- }
143
140
  if (!areEqualDefs(mockDef, provider, provide)) {
144
141
  change();
145
142
  }
@@ -164,7 +161,7 @@ var areEqualDefs = function (mockDef, provider, provide) {
164
161
  return !providerDiffers;
165
162
  };
166
163
  var isPreconfiguredDependency = function (provider, provide) {
167
- // we shouldn't touch excluded providers.
164
+ // we should not touch excluded providers.
168
165
  if (ng_mocks_universe_1.default.builtProviders.has(provide) && ng_mocks_universe_1.default.builtProviders.get(provide) === null) {
169
166
  return true;
170
167
  }
@@ -176,7 +173,7 @@ var isPreconfiguredDependency = function (provider, provide) {
176
173
  // tries to resolve a provider based on current universe state.
177
174
  exports.default = (function (provider, resolutions, changed) {
178
175
  var _a = parseProvider(provider, changed), provide = _a.provide, multi = _a.multi, change = _a.change;
179
- // we shouldn't touch our system providers.
176
+ // we should not touch our system providers.
180
177
  if (provider && typeof provider === 'object' && provider.useExisting && provider.useExisting.__ngMocksSkip) {
181
178
  return provider;
182
179
  }
@@ -184,9 +181,9 @@ exports.default = (function (provider, resolutions, changed) {
184
181
  return change();
185
182
  }
186
183
  if (resolutions.has(provide)) {
187
- return createFromResolution(provide, resolutions.get(provide), multi);
184
+ return createFromResolution(provide, resolutions.get(provide));
188
185
  }
189
- var mockDef = createMockProvider(provider, provide, resolutions, change);
186
+ var mockDef = createMockProvider(provider, provide, change);
190
187
  return multi && typeof mockDef === 'object' ? __assign(__assign({}, mockDef), { multi: multi }) : mockDef;
191
188
  });
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLnJlc29sdmUtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvbW9jay1zZXJ2aWNlL2hlbHBlci5yZXNvbHZlLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUEyRDtBQUMzRCxxREFBOEQ7QUFDOUQsaUVBQTBEO0FBQzFELG1GQUEwRTtBQUMxRSxpRUFBMEQ7QUFFMUQsNkRBQXNEO0FBQ3RELGlEQUEyQztBQUUzQyxJQUFNLFVBQVUsR0FBRyxVQUFDLENBQU0sRUFBRSxDQUFNOztJQUFFLGNBQWlCO1NBQWpCLFVBQWlCLEVBQWpCLHFCQUFpQixFQUFqQixJQUFpQjtRQUFqQiw2QkFBaUI7OztRQUNuRCxLQUFrQixJQUFBLFNBQUEsU0FBQSxJQUFJLENBQUEsMEJBQUEsNENBQUU7WUFBbkIsSUFBTSxHQUFHLGlCQUFBO1lBQ1osSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNyQixPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7Ozs7Ozs7OztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsSUFBTSxvQkFBb0IsR0FBRyxVQUFDLE9BQVksRUFBRSxVQUFlLEVBQUUsS0FBZTtJQUMxRSxJQUFJLE9BQU8sR0FBRyxVQUFVLENBQUM7SUFFekIsSUFBTSxZQUFZLEdBQUcsMkJBQWUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pFLElBQUksWUFBWSxFQUFFO1FBQ2hCLE9BQU8sR0FBRyxZQUFZLENBQUM7S0FDeEI7SUFFRCxtRUFBbUU7SUFDbkUsSUFBSSxPQUFPLE9BQU8sS0FBSyxVQUFVLEVBQUU7UUFDakMsT0FBTyxHQUFHO1lBQ1IsT0FBTyxTQUFBO1lBQ1AsUUFBUSxFQUFFLE9BQU87U0FDbEIsQ0FBQztLQUNIO0lBRUQsT0FBTyxLQUFLLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsdUJBQU0sT0FBTyxLQUFFLEtBQUssT0FBQSxJQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDaEYsQ0FBQyxDQUFDO0FBRUYsSUFBTSxrQkFBa0IsR0FBRyxVQUFDLFFBQWEsRUFBRSxPQUFZO0lBQ3JELE9BQUEsMkJBQWUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLG1DQUFxQixDQUFDO1FBQ3pELDJCQUFlLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxtQ0FBcUIsQ0FBQyxLQUFLLElBQUk7UUFDbEUsK0NBQWtCLENBQUMsT0FBTyxDQUFDO1FBQzNCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsS0FBSyxrQ0FBa0M7UUFDekQsT0FBTyxLQUFLLFFBQVE7QUFKcEIsQ0FJb0IsQ0FBQztBQUV2QixJQUFNLG1CQUFtQixHQUFHLFVBQUMsUUFBYSxFQUFFLE9BQVk7SUFDdEQsSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUU7UUFDekMsSUFBSSxRQUFRLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUU7WUFDNUMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELElBQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUM5RCxJQUFJLENBQUMsMkJBQWUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLDJCQUFlLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDaEgsT0FBTyxJQUFJLENBQUM7U0FDYjtLQUNGO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUM7QUFFRixJQUFNLGFBQWEsR0FBRyxVQUNwQixRQUFhLEVBQ2IsUUFBYTtJQU1iLElBQU0sT0FBTyxHQUFHLDJCQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUMsSUFBTSxLQUFLLEdBQUcsUUFBUSxLQUFLLE9BQU8sSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUV2RCxPQUFPO1FBQ0wsTUFBTSxFQUFFO1lBQ04sSUFBSSxRQUFRLEVBQUU7Z0JBQ1osUUFBUSxFQUFFLENBQUM7YUFDWjtRQUNILENBQUM7UUFDRCxLQUFLLE9BQUE7UUFDTCxPQUFPLFNBQUE7S0FDUixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsaUdBQWlHO0FBQ2pHLElBQU0sZ0JBQWdCLEdBQUcsVUFBQyxRQUFhLEVBQUUsT0FBWSxFQUFFLE9BQVk7SUFDakUsSUFBSSxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO1FBQ3ZELElBQU0sUUFBUSxHQUFHLDZCQUFpQixDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV0RSxPQUFPLFFBQVEsS0FBSyxPQUFPLENBQUMsUUFBUTtZQUNsQyxDQUFDLENBQUMsT0FBTztZQUNULENBQUMsdUJBQ00sT0FBTyxLQUNWLFFBQVEsVUFBQSxHQUNULENBQUM7S0FDUDtJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUVGLElBQU0sNEJBQTRCLEdBQUcsVUFBQyxRQUFhLEVBQUUsT0FBWTtJQUMvRCx3RUFBd0U7SUFDeEUsSUFBSSwyQkFBZSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDL0MsSUFBTSxPQUFPLEdBQUcsMkJBQWUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVELElBQUksT0FBTyxLQUFLLE9BQU8sRUFBRTtZQUN2QixPQUFPLFFBQVEsQ0FBQztTQUNqQjtRQUNELElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRTtZQUN6QixPQUFPO2dCQUNMLE9BQU8sU0FBQTtnQkFDUCxRQUFRLEVBQUUsU0FBUzthQUNwQixDQUFDO1NBQ0g7UUFFRCxPQUFPLE9BQU8sQ0FBQztLQUNoQjtJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQUVGLElBQU0sa0JBQWtCLEdBQUcsVUFBQyxRQUFhLEVBQUUsT0FBWSxFQUFFLFdBQTBCLEVBQUUsTUFBa0I7O0lBQ3JHLElBQUksT0FBTyxHQUFHLDRCQUE0QixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUU5RCxJQUFJLENBQUMsT0FBTyxJQUFJLDJCQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUNyRCxNQUFBLDJCQUFlLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQywwQ0FBRSxHQUFHLENBQUMsT0FBTyxFQUFFO1FBQzVELE9BQU8sR0FBRyxRQUFRLENBQUM7S0FDcEI7SUFDRCxJQUFJLENBQUMsT0FBTyxFQUFFO1FBQ1osT0FBTyxHQUFHLHVCQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDbEM7SUFFRCxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2RCxJQUFJLENBQUMsK0NBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksUUFBUSxLQUFLLE9BQU8sRUFBRTtRQUN4RCxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNuQztJQUNELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRTtRQUM3QyxNQUFNLEVBQUUsQ0FBQztLQUNWO0lBQ0QsZ0RBQWdEO0lBQ2hELElBQUksT0FBTyxFQUFFO1FBQ1gsMkJBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3RDO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUYsSUFBTSxZQUFZLEdBQUcsVUFBQyxPQUFZLEVBQUUsUUFBYSxFQUFFLE9BQVk7SUFDN0QsSUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQzVCLElBQUksVUFBVSxHQUFHLENBQUMsT0FBTyxDQUFDO0lBQzFCLElBQUksUUFBUSxJQUFJLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRTtRQUN0QyxVQUFVLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztLQUNwSDtJQUNELElBQUksUUFBUSxLQUFLLE9BQU8sSUFBSSxPQUFPLEtBQUssUUFBUSxFQUFFO1FBQ2hELGVBQWUsR0FBRyxJQUFJLENBQUM7S0FDeEI7U0FBTSxJQUFJLFFBQVEsS0FBSyxPQUFPLElBQUksVUFBVSxFQUFFO1FBQzdDLGVBQWUsR0FBRyxJQUFJLENBQUM7S0FDeEI7SUFFRCxPQUFPLENBQUMsZUFBZSxDQUFDO0FBQzFCLENBQUMsQ0FBQztBQUVGLElBQU0seUJBQXlCLEdBQUcsVUFBQyxRQUFhLEVBQUUsT0FBWTtJQUM1RCwwQ0FBMEM7SUFDMUMsSUFBSSwyQkFBZSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksMkJBQWUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRTtRQUN2RyxPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsSUFBSSxPQUFPLEtBQUssUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUU7UUFDekMsZ0NBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSwyQkFBZSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztLQUM3RTtJQUVELE9BQU8sbUJBQW1CLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQztBQUVGLCtEQUErRDtBQUMvRCxtQkFBZSxVQUFDLFFBQWEsRUFBRSxXQUEwQixFQUFFLE9BQW9CO0lBQ3ZFLElBQUEsS0FBNkIsYUFBYSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBM0QsT0FBTyxhQUFBLEVBQUUsS0FBSyxXQUFBLEVBQUUsTUFBTSxZQUFxQyxDQUFDO0lBQ3BFLDRDQUE0QztJQUM1QyxJQUFJLFFBQVEsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksUUFBUSxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRTtRQUMxRyxPQUFPLFFBQVEsQ0FBQztLQUNqQjtJQUNELElBQUkseUJBQXlCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQ2hELE9BQU8sTUFBTSxFQUFFLENBQUM7S0FDakI7SUFDRCxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDNUIsT0FBTyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUN2RTtJQUVELElBQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTNFLE9BQU8sS0FBSyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLHVCQUFNLE9BQU8sS0FBRSxLQUFLLE9BQUEsSUFBRyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQ2hGLENBQUMsRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dHJhY3REZXBlbmRlbmN5IH0gZnJvbSAnLi4vY29tbW9uL2NvcmUuaGVscGVycyc7XG5pbXBvcnQgeyBOR19NT0NLU19JTlRFUkNFUFRPUlMgfSBmcm9tICcuLi9jb21tb24vY29yZS50b2tlbnMnO1xuaW1wb3J0IGZ1bmNHZXRQcm92aWRlciBmcm9tICcuLi9jb21tb24vZnVuYy5nZXQtcHJvdmlkZXInO1xuaW1wb3J0IHsgaXNOZ0luamVjdGlvblRva2VuIH0gZnJvbSAnLi4vY29tbW9uL2Z1bmMuaXMtbmctaW5qZWN0aW9uLXRva2VuJztcbmltcG9ydCBuZ01vY2tzVW5pdmVyc2UgZnJvbSAnLi4vY29tbW9uL25nLW1vY2tzLXVuaXZlcnNlJztcblxuaW1wb3J0IGhlbHBlck1vY2tTZXJ2aWNlIGZyb20gJy4vaGVscGVyLm1vY2stc2VydmljZSc7XG5pbXBvcnQgbW9ja1Byb3ZpZGVyIGZyb20gJy4vbW9jay1wcm92aWRlcic7XG5cbmNvbnN0IGFueURpZmZlcnMgPSAoYTogYW55LCBiOiBhbnksIC4uLmtleXM6IHN0cmluZ1tdKTogYm9vbGVhbiA9PiB7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBpZiAoYVtrZXldICE9PSBiW2tleV0pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZyb21SZXNvbHV0aW9uID0gKHByb3ZpZGU6IGFueSwgcmVzb2x1dGlvbjogYW55LCBtdWx0aT86IGJvb2xlYW4pID0+IHtcbiAgbGV0IG1vY2tEZWYgPSByZXNvbHV0aW9uO1xuXG4gIGNvbnN0IGV4aXN0aW5nTW9jayA9IG5nTW9ja3NVbml2ZXJzZS5idWlsdFByb3ZpZGVycy5nZXQocHJvdmlkZSk7XG4gIGlmIChleGlzdGluZ01vY2spIHtcbiAgICBtb2NrRGVmID0gZXhpc3RpbmdNb2NrO1xuICB9XG5cbiAgLy8gQSBjYXNlIHdoZW4gYSBwcm92aWRlciBpcyBhY3R1YWxseSBhIGNvbXBvbmVudCwgZGlyZWN0aXZlLCBwaXBlLlxuICBpZiAodHlwZW9mIG1vY2tEZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICBtb2NrRGVmID0ge1xuICAgICAgcHJvdmlkZSxcbiAgICAgIHVzZUNsYXNzOiBtb2NrRGVmLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbXVsdGkgJiYgdHlwZW9mIG1vY2tEZWYgPT09ICdvYmplY3QnID8geyAuLi5tb2NrRGVmLCBtdWx0aSB9IDogbW9ja0RlZjtcbn07XG5cbmNvbnN0IGlzU3VpdGFibGVQcm92aWRlciA9IChwcm92aWRlcjogYW55LCBwcm92aWRlOiBhbnkpOiBib29sZWFuID0+XG4gIG5nTW9ja3NVbml2ZXJzZS5idWlsdFByb3ZpZGVycy5oYXMoTkdfTU9DS1NfSU5URVJDRVBUT1JTKSAmJlxuICBuZ01vY2tzVW5pdmVyc2UuYnVpbHRQcm92aWRlcnMuZ2V0KE5HX01PQ0tTX0lOVEVSQ0VQVE9SUykgPT09IG51bGwgJiZcbiAgaXNOZ0luamVjdGlvblRva2VuKHByb3ZpZGUpICYmXG4gIHByb3ZpZGUudG9TdHJpbmcoKSA9PT0gJ0luamVjdGlvblRva2VuIEhUVFBfSU5URVJDRVBUT1JTJyAmJlxuICBwcm92aWRlICE9PSBwcm92aWRlcjtcblxuY29uc3QgZXhjbHVkZUludGVyY2VwdG9ycyA9IChwcm92aWRlcjogYW55LCBwcm92aWRlOiBhbnkpOiBib29sZWFuID0+IHtcbiAgaWYgKGlzU3VpdGFibGVQcm92aWRlcihwcm92aWRlciwgcHJvdmlkZSkpIHtcbiAgICBpZiAocHJvdmlkZXIudXNlRmFjdG9yeSB8fCBwcm92aWRlci51c2VWYWx1ZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGludGVyY2VwdG9yID0gcHJvdmlkZXIudXNlRXhpc3RpbmcgfHwgcHJvdmlkZXIudXNlQ2xhc3M7XG4gICAgaWYgKCFuZ01vY2tzVW5pdmVyc2UuYnVpbHRQcm92aWRlcnMuaGFzKGludGVyY2VwdG9yKSB8fCBuZ01vY2tzVW5pdmVyc2UuYnVpbHRQcm92aWRlcnMuZ2V0KGludGVyY2VwdG9yKSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuY29uc3QgcGFyc2VQcm92aWRlciA9IChcbiAgcHJvdmlkZXI6IGFueSxcbiAgY2FsbGJhY2s6IGFueSxcbik6IHtcbiAgY2hhbmdlOiAoKSA9PiB2b2lkO1xuICBtdWx0aTogYm9vbGVhbjtcbiAgcHJvdmlkZTogYW55O1xufSA9PiB7XG4gIGNvbnN0IHByb3ZpZGUgPSBmdW5jR2V0UHJvdmlkZXIocHJvdmlkZXIpO1xuICBjb25zdCBtdWx0aSA9IHByb3ZpZGVyICE9PSBwcm92aWRlICYmICEhcHJvdmlkZXIubXVsdGk7XG5cbiAgcmV0dXJuIHtcbiAgICBjaGFuZ2U6ICgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfVxuICAgIH0sXG4gICAgbXVsdGksXG4gICAgcHJvdmlkZSxcbiAgfTtcbn07XG5cbi8vIGlmIHRoZSBwcm92aWRlciBpcyBhIHZhbHVlLCB3ZSBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIHZhbHVlIGFuZCB0byByZXBsYWNlIGFsbCBtb2NrIGluc3RhbmNlcy5cbmNvbnN0IHJlcGxhY2VXaXRoTW9ja3MgPSAocHJvdmlkZXI6IGFueSwgcHJvdmlkZTogYW55LCBtb2NrRGVmOiBhbnkpID0+IHtcbiAgaWYgKHByb3ZpZGUgIT09IHByb3ZpZGVyICYmIG1vY2tEZWYgJiYgbW9ja0RlZi51c2VWYWx1ZSkge1xuICAgIGNvbnN0IHVzZVZhbHVlID0gaGVscGVyTW9ja1NlcnZpY2UucmVwbGFjZVdpdGhNb2Nrcyhtb2NrRGVmLnVzZVZhbHVlKTtcblxuICAgIHJldHVybiB1c2VWYWx1ZSA9PT0gbW9ja0RlZi51c2VWYWx1ZVxuICAgICAgPyBtb2NrRGVmXG4gICAgICA6IHtcbiAgICAgICAgICAuLi5tb2NrRGVmLFxuICAgICAgICAgIHVzZVZhbHVlLFxuICAgICAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG1vY2tEZWY7XG59O1xuXG5jb25zdCBjcmVhdGVQcmVkZWZpbmVkTW9ja1Byb3ZpZGVyID0gKHByb3ZpZGVyOiBhbnksIHByb3ZpZGU6IGFueSk6IGFueSA9PiB7XG4gIC8vIFRoZW4gd2UgY2hlY2sgZGVjaXNpb25zIHdoZXRoZXIgd2Ugc2hvdWxkIGtlZXAgb3IgcmVwbGFjZSBhIHByb3ZpZGVyLlxuICBpZiAobmdNb2Nrc1VuaXZlcnNlLmJ1aWx0UHJvdmlkZXJzLmhhcyhwcm92aWRlKSkge1xuICAgIGNvbnN0IG1vY2tEZWYgPSBuZ01vY2tzVW5pdmVyc2UuYnVpbHRQcm92aWRlcnMuZ2V0KHByb3ZpZGUpO1xuICAgIGlmIChtb2NrRGVmID09PSBwcm92aWRlKSB7XG4gICAgICByZXR1cm4gcHJvdmlkZXI7XG4gICAgfVxuICAgIGlmIChtb2NrRGVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHByb3ZpZGUsXG4gICAgICAgIHVzZVZhbHVlOiB1bmRlZmluZWQsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBtb2NrRGVmO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IGNyZWF0ZU1vY2tQcm92aWRlciA9IChwcm92aWRlcjogYW55LCBwcm92aWRlOiBhbnksIHJlc29sdXRpb25zOiBNYXA8YW55LCBhbnk+LCBjaGFuZ2U6ICgpID0+IHZvaWQpID0+IHtcbiAgbGV0IG1vY2tEZWYgPSBjcmVhdGVQcmVkZWZpbmVkTW9ja1Byb3ZpZGVyKHByb3ZpZGVyLCBwcm92aWRlKTtcblxuICBpZiAoIW1vY2tEZWYgJiYgbmdNb2Nrc1VuaXZlcnNlLmZsYWdzLmhhcygnc2tpcE1vY2snKSkge1xuICAgIG5nTW9ja3NVbml2ZXJzZS5jb25maWcuZ2V0KCduZ01vY2tzRGVwc1NraXAnKT8uYWRkKHByb3ZpZGUpO1xuICAgIG1vY2tEZWYgPSBwcm92aWRlcjtcbiAgfVxuICBpZiAoIW1vY2tEZWYpIHtcbiAgICBtb2NrRGVmID0gbW9ja1Byb3ZpZGVyKHByb3ZpZGVyKTtcbiAgfVxuXG4gIG1vY2tEZWYgPSByZXBsYWNlV2l0aE1vY2tzKHByb3ZpZGVyLCBwcm92aWRlLCBtb2NrRGVmKTtcbiAgaWYgKCFpc05nSW5qZWN0aW9uVG9rZW4ocHJvdmlkZSkgfHwgcHJvdmlkZXIgIT09IG1vY2tEZWYpIHtcbiAgICByZXNvbHV0aW9ucy5zZXQocHJvdmlkZSwgbW9ja0RlZik7XG4gIH1cbiAgaWYgKCFhcmVFcXVhbERlZnMobW9ja0RlZiwgcHJvdmlkZXIsIHByb3ZpZGUpKSB7XG4gICAgY2hhbmdlKCk7XG4gIH1cbiAgLy8gVG91Y2hpbmcgb25seSB3aGVuIHdlIHJlYWxseSBwcm92aWRlIGEgdmFsdWUuXG4gIGlmIChtb2NrRGVmKSB7XG4gICAgbmdNb2Nrc1VuaXZlcnNlLnRvdWNoZXMuYWRkKHByb3ZpZGUpO1xuICB9XG5cbiAgcmV0dXJuIG1vY2tEZWY7XG59O1xuXG5jb25zdCBhcmVFcXVhbERlZnMgPSAobW9ja0RlZjogYW55LCBwcm92aWRlcjogYW55LCBwcm92aWRlOiBhbnkpOiBib29sZWFuID0+IHtcbiAgbGV0IHByb3ZpZGVyRGlmZmVycyA9IGZhbHNlO1xuICBsZXQgZGVmRGlmZmVycyA9ICFtb2NrRGVmO1xuICBpZiAocHJvdmlkZXIgJiYgbW9ja0RlZiAmJiAhZGVmRGlmZmVycykge1xuICAgIGRlZkRpZmZlcnMgPSBhbnlEaWZmZXJzKHByb3ZpZGVyLCBtb2NrRGVmLCAncHJvdmlkZScsICd1c2VWYWx1ZScsICd1c2VDbGFzcycsICd1c2VFeGlzdGluZycsICd1c2VGYWN0b3J5JywgJ2RlcHMnKTtcbiAgfVxuICBpZiAocHJvdmlkZXIgPT09IHByb3ZpZGUgJiYgbW9ja0RlZiAhPT0gcHJvdmlkZXIpIHtcbiAgICBwcm92aWRlckRpZmZlcnMgPSB0cnVlO1xuICB9IGVsc2UgaWYgKHByb3ZpZGVyICE9PSBwcm92aWRlICYmIGRlZkRpZmZlcnMpIHtcbiAgICBwcm92aWRlckRpZmZlcnMgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuICFwcm92aWRlckRpZmZlcnM7XG59O1xuXG5jb25zdCBpc1ByZWNvbmZpZ3VyZWREZXBlbmRlbmN5ID0gKHByb3ZpZGVyOiBhbnksIHByb3ZpZGU6IGFueSk6IGJvb2xlYW4gPT4ge1xuICAvLyAgd2Ugc2hvdWxkbid0IHRvdWNoIGV4Y2x1ZGVkIHByb3ZpZGVycy5cbiAgaWYgKG5nTW9ja3NVbml2ZXJzZS5idWlsdFByb3ZpZGVycy5oYXMocHJvdmlkZSkgJiYgbmdNb2Nrc1VuaXZlcnNlLmJ1aWx0UHJvdmlkZXJzLmdldChwcm92aWRlKSA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHByb3ZpZGUgIT09IHByb3ZpZGVyICYmIHByb3ZpZGVyLmRlcHMpIHtcbiAgICBleHRyYWN0RGVwZW5kZW5jeShwcm92aWRlci5kZXBzLCBuZ01vY2tzVW5pdmVyc2UuY29uZmlnLmdldCgnbmdNb2Nrc0RlcHMnKSk7XG4gIH1cblxuICByZXR1cm4gZXhjbHVkZUludGVyY2VwdG9ycyhwcm92aWRlciwgcHJvdmlkZSk7XG59O1xuXG4vLyB0cmllcyB0byByZXNvbHZlIGEgcHJvdmlkZXIgYmFzZWQgb24gY3VycmVudCB1bml2ZXJzZSBzdGF0ZS5cbmV4cG9ydCBkZWZhdWx0IChwcm92aWRlcjogYW55LCByZXNvbHV0aW9uczogTWFwPGFueSwgYW55PiwgY2hhbmdlZD86ICgpID0+IHZvaWQpID0+IHtcbiAgY29uc3QgeyBwcm92aWRlLCBtdWx0aSwgY2hhbmdlIH0gPSBwYXJzZVByb3ZpZGVyKHByb3ZpZGVyLCBjaGFuZ2VkKTtcbiAgLy8gIHdlIHNob3VsZG4ndCB0b3VjaCBvdXIgc3lzdGVtIHByb3ZpZGVycy5cbiAgaWYgKHByb3ZpZGVyICYmIHR5cGVvZiBwcm92aWRlciA9PT0gJ29iamVjdCcgJiYgcHJvdmlkZXIudXNlRXhpc3RpbmcgJiYgcHJvdmlkZXIudXNlRXhpc3RpbmcuX19uZ01vY2tzU2tpcCkge1xuICAgIHJldHVybiBwcm92aWRlcjtcbiAgfVxuICBpZiAoaXNQcmVjb25maWd1cmVkRGVwZW5kZW5jeShwcm92aWRlciwgcHJvdmlkZSkpIHtcbiAgICByZXR1cm4gY2hhbmdlKCk7XG4gIH1cbiAgaWYgKHJlc29sdXRpb25zLmhhcyhwcm92aWRlKSkge1xuICAgIHJldHVybiBjcmVhdGVGcm9tUmVzb2x1dGlvbihwcm92aWRlLCByZXNvbHV0aW9ucy5nZXQocHJvdmlkZSksIG11bHRpKTtcbiAgfVxuXG4gIGNvbnN0IG1vY2tEZWYgPSBjcmVhdGVNb2NrUHJvdmlkZXIocHJvdmlkZXIsIHByb3ZpZGUsIHJlc29sdXRpb25zLCBjaGFuZ2UpO1xuXG4gIHJldHVybiBtdWx0aSAmJiB0eXBlb2YgbW9ja0RlZiA9PT0gJ29iamVjdCcgPyB7IC4uLm1vY2tEZWYsIG11bHRpIH0gOiBtb2NrRGVmO1xufTtcbiJdfQ==
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLnJlc29sdmUtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvbW9jay1zZXJ2aWNlL2hlbHBlci5yZXNvbHZlLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUEyRDtBQUMzRCxxREFBOEQ7QUFDOUQsaUVBQTBEO0FBQzFELG1GQUEwRTtBQUMxRSxpRUFBMEQ7QUFFMUQsNkRBQXNEO0FBQ3RELGlEQUEyQztBQUUzQyxJQUFNLFVBQVUsR0FBRyxVQUFDLENBQU0sRUFBRSxDQUFNOztJQUFFLGNBQWlCO1NBQWpCLFVBQWlCLEVBQWpCLHFCQUFpQixFQUFqQixJQUFpQjtRQUFqQiw2QkFBaUI7OztRQUNuRCxLQUFrQixJQUFBLFNBQUEsU0FBQSxJQUFJLENBQUEsMEJBQUEsNENBQUU7WUFBbkIsSUFBTSxHQUFHLGlCQUFBO1lBQ1osSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNyQixPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7Ozs7Ozs7OztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsSUFBTSxvQkFBb0IsR0FBRyxVQUFDLE9BQVksRUFBRSxVQUFlO0lBQ3pELElBQUksT0FBTyxHQUFHLFVBQVUsQ0FBQztJQUV6QixJQUFNLFlBQVksR0FBRywyQkFBZSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakUsSUFBSSxZQUFZLEVBQUU7UUFDaEIsT0FBTyxHQUFHLFlBQVksQ0FBQztLQUN4QjtJQUVELG1FQUFtRTtJQUNuRSxJQUFJLE9BQU8sT0FBTyxLQUFLLFVBQVUsRUFBRTtRQUNqQyxPQUFPLEdBQUc7WUFDUixPQUFPLFNBQUE7WUFDUCxRQUFRLEVBQUUsT0FBTztTQUNsQixDQUFDO0tBQ0g7SUFFRCxPQUFP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Q0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUU7UUFDaEQsT0FBTyxNQUFNLEVBQUUsQ0FBQztLQUNqQjtJQUNELElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUM1QixPQUFPLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDaEU7SUFFRCxJQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTlELE9BQU8sS0FBSyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLHVCQUFNLE9BQU8sS0FBRSxLQUFLLE9BQUEsSUFBRyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQ2hGLENBQUMsRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dHJhY3REZXBlbmRlbmN5IH0gZnJvbSAnLi4vY29tbW9uL2NvcmUuaGVscGVycyc7XG5pbXBvcnQgeyBOR19NT0NLU19JTlRFUkNFUFRPUlMgfSBmcm9tICcuLi9jb21tb24vY29yZS50b2tlbnMnO1xuaW1wb3J0IGZ1bmNHZXRQcm92aWRlciBmcm9tICcuLi9jb21tb24vZnVuYy5nZXQtcHJvdmlkZXInO1xuaW1wb3J0IHsgaXNOZ0luamVjdGlvblRva2VuIH0gZnJvbSAnLi4vY29tbW9uL2Z1bmMuaXMtbmctaW5qZWN0aW9uLXRva2VuJztcbmltcG9ydCBuZ01vY2tzVW5pdmVyc2UgZnJvbSAnLi4vY29tbW9uL25nLW1vY2tzLXVuaXZlcnNlJztcblxuaW1wb3J0IGhlbHBlck1vY2tTZXJ2aWNlIGZyb20gJy4vaGVscGVyLm1vY2stc2VydmljZSc7XG5pbXBvcnQgbW9ja1Byb3ZpZGVyIGZyb20gJy4vbW9jay1wcm92aWRlcic7XG5cbmNvbnN0IGFueURpZmZlcnMgPSAoYTogYW55LCBiOiBhbnksIC4uLmtleXM6IHN0cmluZ1tdKTogYm9vbGVhbiA9PiB7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBpZiAoYVtrZXldICE9PSBiW2tleV0pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZyb21SZXNvbHV0aW9uID0gKHByb3ZpZGU6IGFueSwgcmVzb2x1dGlvbjogYW55KSA9PiB7XG4gIGxldCBtb2NrRGVmID0gcmVzb2x1dGlvbjtcblxuICBjb25zdCBleGlzdGluZ01vY2sgPSBuZ01vY2tzVW5pdmVyc2UuYnVpbHRQcm92aWRlcnMuZ2V0KHByb3ZpZGUpO1xuICBpZiAoZXhpc3RpbmdNb2NrKSB7XG4gICAgbW9ja0RlZiA9IGV4aXN0aW5nTW9jaztcbiAgfVxuXG4gIC8vIEEgY2FzZSB3aGVuIGEgcHJvdmlkZXIgaXMgYWN0dWFsbHkgYSBjb21wb25lbnQsIGRpcmVjdGl2ZSwgcGlwZS5cbiAgaWYgKHR5cGVvZiBtb2NrRGVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgbW9ja0RlZiA9IHtcbiAgICAgIHByb3ZpZGUsXG4gICAgICB1c2VDbGFzczogbW9ja0RlZixcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG1vY2tEZWY7XG59O1xuXG5jb25zdCBpc1N1aXRhYmxlUHJvdmlkZXIgPSAocHJvdmlkZXI6IGFueSwgcHJvdmlkZTogYW55KTogYm9vbGVhbiA9PlxuICBuZ01vY2tzVW5pdmVyc2UuYnVpbHRQcm92aWRlcnMuaGFzKE5HX01PQ0tTX0lOVEVSQ0VQVE9SUykgJiZcbiAgbmdNb2Nrc1VuaXZlcnNlLmJ1aWx0UHJvdmlkZXJzLmdldChOR19NT0NLU19JTlRFUkNFUFRPUlMpID09PSBudWxsICYmXG4gIGlzTmdJbmplY3Rpb25Ub2tlbihwcm92aWRlKSAmJlxuICBwcm92aWRlLnRvU3RyaW5nKCkgPT09ICdJbmplY3Rpb25Ub2tlbiBIVFRQX0lOVEVSQ0VQVE9SUycgJiZcbiAgcHJvdmlkZSAhPT0gcHJvdmlkZXI7XG5cbmNvbnN0IGV4Y2x1ZGVJbnRlcmNlcHRvcnMgPSAocHJvdmlkZXI6IGFueSwgcHJvdmlkZTogYW55KTogYm9vbGVhbiA9PiB7XG4gIGlmIChpc1N1aXRhYmxlUHJvdmlkZXIocHJvdmlkZXIsIHByb3ZpZGUpKSB7XG4gICAgaWYgKHByb3ZpZGVyLnVzZUZhY3RvcnkgfHwgcHJvdmlkZXIudXNlVmFsdWUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcmNlcHRvciA9IHByb3ZpZGVyLnVzZUV4aXN0aW5nIHx8IHByb3ZpZGVyLnVzZUNsYXNzO1xuICAgIGlmICghbmdNb2Nrc1VuaXZlcnNlLmJ1aWx0UHJvdmlkZXJzLmhhcyhpbnRlcmNlcHRvcikgfHwgbmdNb2Nrc1VuaXZlcnNlLmJ1aWx0UHJvdmlkZXJzLmdldChpbnRlcmNlcHRvcikgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmNvbnN0IHBhcnNlUHJvdmlkZXIgPSAoXG4gIHByb3ZpZGVyOiBhbnksXG4gIGNhbGxiYWNrOiBhbnksXG4pOiB7XG4gIGNoYW5nZTogKCkgPT4gdm9pZDtcbiAgbXVsdGk6IGJvb2xlYW47XG4gIHByb3ZpZGU6IGFueTtcbn0gPT4ge1xuICBjb25zdCBwcm92aWRlID0gZnVuY0dldFByb3ZpZGVyKHByb3ZpZGVyKTtcbiAgY29uc3QgbXVsdGkgPSBwcm92aWRlciAhPT0gcHJvdmlkZSAmJiAhIXByb3ZpZGVyLm11bHRpO1xuXG4gIHJldHVybiB7XG4gICAgY2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG11bHRpLFxuICAgIHByb3ZpZGUsXG4gIH07XG59O1xuXG4vLyBpZiB0aGUgcHJvdmlkZXIgaXMgYSB2YWx1ZSwgd2UgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSB2YWx1ZSBhbmQgdG8gcmVwbGFjZSBhbGwgbW9jayBpbnN0YW5jZXMuXG5jb25zdCByZXBsYWNlV2l0aE1vY2tzID0gKHByb3ZpZGVyOiBhbnksIHByb3ZpZGU6IGFueSwgbW9ja0RlZjogYW55KSA9PiB7XG4gIGlmIChwcm92aWRlICE9PSBwcm92aWRlciAmJiBtb2NrRGVmICYmIG1vY2tEZWYudXNlVmFsdWUpIHtcbiAgICBjb25zdCB1c2VWYWx1ZSA9IGhlbHBlck1vY2tTZXJ2aWNlLnJlcGxhY2VXaXRoTW9ja3MobW9ja0RlZi51c2VWYWx1ZSk7XG5cbiAgICByZXR1cm4gdXNlVmFsdWUgPT09IG1vY2tEZWYudXNlVmFsdWVcbiAgICAgID8gbW9ja0RlZlxuICAgICAgOiB7XG4gICAgICAgICAgLi4ubW9ja0RlZixcbiAgICAgICAgICB1c2VWYWx1ZSxcbiAgICAgICAgfTtcbiAgfVxuXG4gIHJldHVybiBtb2NrRGVmO1xufTtcblxuY29uc3QgY3JlYXRlUHJlZGVmaW5lZE1vY2tQcm92aWRlciA9IChwcm92aWRlcjogYW55LCBwcm92aWRlOiBhbnkpOiBhbnkgPT4ge1xuICAvLyBUaGVuIHdlIGNoZWNrIGRlY2lzaW9ucyB3aGV0aGVyIHdlIHNob3VsZCBrZWVwIG9yIHJlcGxhY2UgYSBwcm92aWRlci5cbiAgaWYgKG5nTW9ja3NVbml2ZXJzZS5idWlsdFByb3ZpZGVycy5oYXMocHJvdmlkZSkpIHtcbiAgICBjb25zdCBtb2NrRGVmID0gbmdNb2Nrc1VuaXZlcnNlLmJ1aWx0UHJvdmlkZXJzLmdldChwcm92aWRlKTtcbiAgICBpZiAobW9ja0RlZiA9PT0gcHJvdmlkZSkge1xuICAgICAgcmV0dXJuIHByb3ZpZGVyO1xuICAgIH1cbiAgICBpZiAobW9ja0RlZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcm92aWRlLFxuICAgICAgICB1c2VWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbW9ja0RlZjtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBjcmVhdGVNb2NrUHJvdmlkZXIgPSAocHJvdmlkZXI6IGFueSwgcHJvdmlkZTogYW55LCBjaGFuZ2U6ICgpID0+IHZvaWQpID0+IHtcbiAgbGV0IG1vY2tEZWYgPSBjcmVhdGVQcmVkZWZpbmVkTW9ja1Byb3ZpZGVyKHByb3ZpZGVyLCBwcm92aWRlKTtcblxuICBpZiAoIW1vY2tEZWYgJiYgbmdNb2Nrc1VuaXZlcnNlLmZsYWdzLmhhcygnc2tpcE1vY2snKSAmJiBuZ01vY2tzVW5pdmVyc2UuZ2V0UmVzb2x1dGlvbihwcm92aWRlKSAhPT0gJ21vY2snKSB7XG4gICAgbmdNb2Nrc1VuaXZlcnNlLmNvbmZpZy5nZXQoJ25nTW9ja3NEZXBzU2tpcCcpPy5hZGQocHJvdmlkZSk7XG4gICAgbW9ja0RlZiA9IHByb3ZpZGVyO1xuICB9XG4gIGlmICghbW9ja0RlZikge1xuICAgIG1vY2tEZWYgPSBtb2NrUHJvdmlkZXIocHJvdmlkZXIpO1xuICB9XG5cbiAgbW9ja0RlZiA9IHJlcGxhY2VXaXRoTW9ja3MocHJvdmlkZXIsIHByb3ZpZGUsIG1vY2tEZWYpO1xuICBpZiAoIWFyZUVxdWFsRGVmcyhtb2NrRGVmLCBwcm92aWRlciwgcHJvdmlkZSkpIHtcbiAgICBjaGFuZ2UoKTtcbiAgfVxuICAvLyBUb3VjaGluZyBvbmx5IHdoZW4gd2UgcmVhbGx5IHByb3ZpZGUgYSB2YWx1ZS5cbiAgaWYgKG1vY2tEZWYpIHtcbiAgICBuZ01vY2tzVW5pdmVyc2UudG91Y2hlcy5hZGQocHJvdmlkZSk7XG4gIH1cblxuICByZXR1cm4gbW9ja0RlZjtcbn07XG5cbmNvbnN0IGFyZUVxdWFsRGVmcyA9IChtb2NrRGVmOiBhbnksIHByb3ZpZGVyOiBhbnksIHByb3ZpZGU6IGFueSk6IGJvb2xlYW4gPT4ge1xuICBsZXQgcHJvdmlkZXJEaWZmZXJzID0gZmFsc2U7XG4gIGxldCBkZWZEaWZmZXJzID0gIW1vY2tEZWY7XG4gIGlmIChwcm92aWRlciAmJiBtb2NrRGVmICYmICFkZWZEaWZmZXJzKSB7XG4gICAgZGVmRGlmZmVycyA9IGFueURpZmZlcnMocHJvdmlkZXIsIG1vY2tEZWYsICdwcm92aWRlJywgJ3VzZVZhbHVlJywgJ3VzZUNsYXNzJywgJ3VzZUV4aXN0aW5nJywgJ3VzZUZhY3RvcnknLCAnZGVwcycpO1xuICB9XG4gIGlmIChwcm92aWRlciA9PT0gcHJvdmlkZSAmJiBtb2NrRGVmICE9PSBwcm92aWRlcikge1xuICAgIHByb3ZpZGVyRGlmZmVycyA9IHRydWU7XG4gIH0gZWxzZSBpZiAocHJvdmlkZXIgIT09IHByb3ZpZGUgJiYgZGVmRGlmZmVycykge1xuICAgIHByb3ZpZGVyRGlmZmVycyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gIXByb3ZpZGVyRGlmZmVycztcbn07XG5cbmNvbnN0IGlzUHJlY29uZmlndXJlZERlcGVuZGVuY3kgPSAocHJvdmlkZXI6IGFueSwgcHJvdmlkZTogYW55KTogYm9vbGVhbiA9PiB7XG4gIC8vICB3ZSBzaG91bGQgbm90IHRvdWNoIGV4Y2x1ZGVkIHByb3ZpZGVycy5cbiAgaWYgKG5nTW9ja3NVbml2ZXJzZS5idWlsdFByb3ZpZGVycy5oYXMocHJvdmlkZSkgJiYgbmdNb2Nrc1VuaXZlcnNlLmJ1aWx0UHJvdmlkZXJzLmdldChwcm92aWRlKSA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHByb3ZpZGUgIT09IHByb3ZpZGVyICYmIHByb3ZpZGVyLmRlcHMpIHtcbiAgICBleHRyYWN0RGVwZW5kZW5jeShwcm92aWRlci5kZXBzLCBuZ01vY2tzVW5pdmVyc2UuY29uZmlnLmdldCgnbmdNb2Nrc0RlcHMnKSk7XG4gIH1cblxuICByZXR1cm4gZXhjbHVkZUludGVyY2VwdG9ycyhwcm92aWRlciwgcHJvdmlkZSk7XG59O1xuXG4vLyB0cmllcyB0byByZXNvbHZlIGEgcHJvdmlkZXIgYmFzZWQgb24gY3VycmVudCB1bml2ZXJzZSBzdGF0ZS5cbmV4cG9ydCBkZWZhdWx0IChwcm92aWRlcjogYW55LCByZXNvbHV0aW9uczogTWFwPGFueSwgYW55PiwgY2hhbmdlZD86ICgpID0+IHZvaWQpID0+IHtcbiAgY29uc3QgeyBwcm92aWRlLCBtdWx0aSwgY2hhbmdlIH0gPSBwYXJzZVByb3ZpZGVyKHByb3ZpZGVyLCBjaGFuZ2VkKTtcbiAgLy8gIHdlIHNob3VsZCBub3QgdG91Y2ggb3VyIHN5c3RlbSBwcm92aWRlcnMuXG4gIGlmIChwcm92aWRlciAmJiB0eXBlb2YgcHJvdmlkZXIgPT09ICdvYmplY3QnICYmIHByb3ZpZGVyLnVzZUV4aXN0aW5nICYmIHByb3ZpZGVyLnVzZUV4aXN0aW5nLl9fbmdNb2Nrc1NraXApIHtcbiAgICByZXR1cm4gcHJvdmlkZXI7XG4gIH1cbiAgaWYgKGlzUHJlY29uZmlndXJlZERlcGVuZGVuY3kocHJvdmlkZXIsIHByb3ZpZGUpKSB7XG4gICAgcmV0dXJuIGNoYW5nZSgpO1xuICB9XG4gIGlmIChyZXNvbHV0aW9ucy5oYXMocHJvdmlkZSkpIHtcbiAgICByZXR1cm4gY3JlYXRlRnJvbVJlc29sdXRpb24ocHJvdmlkZSwgcmVzb2x1dGlvbnMuZ2V0KHByb3ZpZGUpKTtcbiAgfVxuXG4gIGNvbnN0IG1vY2tEZWYgPSBjcmVhdGVNb2NrUHJvdmlkZXIocHJvdmlkZXIsIHByb3ZpZGUsIGNoYW5nZSk7XG5cbiAgcmV0dXJuIG11bHRpICYmIHR5cGVvZiBtb2NrRGVmID09PSAnb2JqZWN0JyA/IHsgLi4ubW9ja0RlZiwgbXVsdGkgfSA6IG1vY2tEZWY7XG59O1xuIl19
@@ -60,10 +60,10 @@ exports.default = (function (def, init, overrides) { return ({
60
60
  if (overrides) {
61
61
  callbacks.push(overrides);
62
62
  }
63
- if ((_a = ng_mocks_universe_1.default.config.get(def)) === null || _a === void 0 ? void 0 : _a.init) {
64
- callbacks.push(ng_mocks_universe_1.default.config.get(def).init);
63
+ if ((_a = ng_mocks_universe_1.default.configInstance.get(def)) === null || _a === void 0 ? void 0 : _a.init) {
64
+ callbacks.push(ng_mocks_universe_1.default.configInstance.get(def).init);
65
65
  }
66
66
  return applyCallback(def, instance, callbacks, injector, overrides);
67
67
  },
68
68
  }); });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLnVzZS1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL21vY2stc2VydmljZS9oZWxwZXIudXNlLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLHNDQUEwRDtBQUUxRCx1REFBbUQ7QUFDbkQsbUZBQTBFO0FBQzFFLGlFQUEwRDtBQUMxRCxvRUFBNkQ7QUFDN0QsNkRBQTJEO0FBRTNELElBQU0sa0JBQWtCLEdBQUcsVUFBQyxHQUFRLElBQWMsT0FBQSwrQ0FBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQWxELENBQWtELENBQUM7QUFFckcsSUFBTSxhQUFhLEdBQUcsVUFBQyxHQUFRLEVBQUUsSUFBUyxFQUFFLFNBQWdCLEVBQUUsUUFBbUIsRUFBRSxTQUFlOztJQUNoRyxJQUFJLFFBQVEsR0FBUSxJQUFJLENBQUM7O1FBRXpCLEtBQXVCLElBQUEsY0FBQSxTQUFBLFNBQVMsQ0FBQSxvQ0FBQSwyREFBRTtZQUE3QixJQUFNLFFBQVEsc0JBQUE7WUFDakIsSUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM5QyxJQUFJLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUMzQixRQUFRLEdBQUcsUUFBUSxDQUFDO2dCQUNwQixTQUFTO2FBQ1Y7WUFFRCwrQkFBK0I7WUFDL0IsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFO2dCQUMxQixRQUFRLEdBQUcsUUFBUSxDQUFDO2dCQUNwQixTQUFTO2FBQ1Y7WUFFRCxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNiLFNBQVM7YUFDVjtZQUVELDBCQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ3BDOzs7Ozs7Ozs7SUFFRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixtQkFBZSxVQUNiLEdBQU0sRUFDTixJQUFjLEVBQ2QsU0FBK0QsSUFDM0MsT0FBQSxDQUFDO0lBQ3JCLElBQUksRUFBRSxDQUFDLGVBQVEsQ0FBQztJQUNoQixPQUFPLEVBQUUsR0FBRztJQUNaLFVBQVUsRUFBRSxVQUFDLFFBQW1COztRQUM5QixJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQywwQkFBVyxDQUFDLEdBQVUsQ0FBQyxDQUFDO1FBRXpELElBQU0sWUFBWSxHQUF5QiwyQkFBZSxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRixJQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLHdCQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5RCxJQUFJLFNBQVMsRUFBRTtZQUNiLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDM0I7UUFDRCxVQUFJLDJCQUFlLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsMENBQUUsSUFBSSxFQUFFO1lBQ3pDLFNBQVMsQ0FBQyxJQUFJLENBQUMsMkJBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3REO1FBRUQsT0FBTyxhQUFhLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7Q0FDRixDQUFDLEVBakJvQixDQWlCcEIsRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhY3RvcnlQcm92aWRlciwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgbWFwVmFsdWVzIH0gZnJvbSAnLi4vY29tbW9uL2NvcmUuaGVscGVycyc7XG5pbXBvcnQgeyBpc05nSW5qZWN0aW9uVG9rZW4gfSBmcm9tICcuLi9jb21tb24vZnVuYy5pcy1uZy1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IG5nTW9ja3NVbml2ZXJzZSBmcm9tICcuLi9jb21tb24vbmctbW9ja3MtdW5pdmVyc2UnO1xuaW1wb3J0IG1vY2tIZWxwZXJTdHViIGZyb20gJy4uL21vY2staGVscGVyL21vY2staGVscGVyLnN0dWInO1xuaW1wb3J0IHsgTW9ja1NlcnZpY2UgfSBmcm9tICcuLi9tb2NrLXNlcnZpY2UvbW9jay1zZXJ2aWNlJztcblxuY29uc3QgYXBwbHlDYWxsYmFja1Rva2VuID0gKGRlZjogYW55KTogYm9vbGVhbiA9PiBpc05nSW5qZWN0aW9uVG9rZW4oZGVmKSB8fCB0eXBlb2YgZGVmID09PSAnc3RyaW5nJztcblxuY29uc3QgYXBwbHlDYWxsYmFjayA9IChkZWY6IGFueSwgaW5zdDogYW55LCBjYWxsYmFja3M6IGFueVtdLCBpbmplY3Rvcj86IEluamVjdG9yLCBvdmVycmlkZXM/OiBhbnkpOiB2b2lkID0+IHtcbiAgbGV0IGluc3RhbmNlOiBhbnkgPSBpbnN0O1xuXG4gIGZvciAoY29uc3QgY2FsbGJhY2sgb2YgY2FsbGJhY2tzKSB7XG4gICAgY29uc3Qgb3ZlcnJpZGUgPSBjYWxsYmFjayhpbnN0YW5jZSwgaW5qZWN0b3IpO1xuICAgIGlmIChhcHBseUNhbGxiYWNrVG9rZW4oZGVmKSkge1xuICAgICAgaW5zdGFuY2UgPSBvdmVycmlkZTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIG92ZXJyaWRlcyByZXR1cm4gcmVhbCB2YWx1ZS5cbiAgICBpZiAoY2FsbGJhY2sgPT09IG92ZXJyaWRlcykge1xuICAgICAgaW5zdGFuY2UgPSBvdmVycmlkZTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICghb3ZlcnJpZGUpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIG1vY2tIZWxwZXJTdHViKGluc3RhbmNlLCBvdmVycmlkZSk7XG4gIH1cblxuICByZXR1cm4gaW5zdGFuY2U7XG59O1xuXG5leHBvcnQgZGVmYXVsdCA8RCwgST4oXG4gIGRlZjogRCxcbiAgaW5pdD86ICgpID0+IEksXG4gIG92ZXJyaWRlcz86IChpbnN0YW5jZTogSSwgaW5qZWN0b3I6IEluamVjdG9yKSA9PiBJIHwgUGFydGlhbDxJPixcbik6IEZhY3RvcnlQcm92aWRlciA9PiAoe1xuICBkZXBzOiBbSW5qZWN0b3JdLFxuICBwcm92aWRlOiBkZWYsXG4gIHVzZUZhY3Rvcnk6IChpbmplY3Rvcj86IEluamVjdG9yKSA9PiB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBpbml0ID8gaW5pdCgpIDogTW9ja1NlcnZpY2UoZGVmIGFzIGFueSk7XG5cbiAgICBjb25zdCBjb25maWdHbG9iYWw6IFNldDxhbnk+IHwgdW5kZWZpbmVkID0gbmdNb2Nrc1VuaXZlcnNlLmdldE92ZXJyaWRlcygpLmdldChkZWYpO1xuICAgIGNvbnN0IGNhbGxiYWNrcyA9IGNvbmZpZ0dsb2JhbCA/IG1hcFZhbHVlcyhjb25maWdHbG9iYWwpIDogW107XG4gICAgaWYgKG92ZXJyaWRlcykge1xuICAgICAgY2FsbGJhY2tzLnB1c2gob3ZlcnJpZGVzKTtcbiAgICB9XG4gICAgaWYgKG5nTW9ja3NVbml2ZXJzZS5jb25maWcuZ2V0KGRlZik/LmluaXQpIHtcbiAgICAgIGNhbGxiYWNrcy5wdXNoKG5nTW9ja3NVbml2ZXJzZS5jb25maWcuZ2V0KGRlZikuaW5pdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFwcGx5Q2FsbGJhY2soZGVmLCBpbnN0YW5jZSwgY2FsbGJhY2tzLCBpbmplY3Rvciwgb3ZlcnJpZGVzKTtcbiAgfSxcbn0pO1xuIl19
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLnVzZS1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL21vY2stc2VydmljZS9oZWxwZXIudXNlLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLHNDQUEwRDtBQUUxRCx1REFBbUQ7QUFDbkQsbUZBQTBFO0FBQzFFLGlFQUEwRDtBQUMxRCxvRUFBNkQ7QUFDN0QsNkRBQTJEO0FBRTNELElBQU0sa0JBQWtCLEdBQUcsVUFBQyxHQUFRLElBQWMsT0FBQSwrQ0FBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQWxELENBQWtELENBQUM7QUFFckcsSUFBTSxhQUFhLEdBQUcsVUFBQyxHQUFRLEVBQUUsSUFBUyxFQUFFLFNBQWdCLEVBQUUsUUFBbUIsRUFBRSxTQUFlOztJQUNoRyxJQUFJLFFBQVEsR0FBUSxJQUFJLENBQUM7O1FBRXpCLEtBQXVCLElBQUEsY0FBQSxTQUFBLFNBQVMsQ0FBQSxvQ0FBQSwyREFBRTtZQUE3QixJQUFNLFFBQVEsc0JBQUE7WUFDakIsSUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM5QyxJQUFJLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUMzQixRQUFRLEdBQUcsUUFBUSxDQUFDO2dCQUNwQixTQUFTO2FBQ1Y7WUFFRCwrQkFBK0I7WUFDL0IsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFO2dCQUMxQixRQUFRLEdBQUcsUUFBUSxDQUFDO2dCQUNwQixTQUFTO2FBQ1Y7WUFFRCxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNiLFNBQVM7YUFDVjtZQUVELDBCQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ3BDOzs7Ozs7Ozs7SUFFRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixtQkFBZSxVQUNiLEdBQU0sRUFDTixJQUFjLEVBQ2QsU0FBK0QsSUFDM0MsT0FBQSxDQUFDO0lBQ3JCLElBQUksRUFBRSxDQUFDLGVBQVEsQ0FBQztJQUNoQixPQUFPLEVBQUUsR0FBRztJQUNaLFVBQVUsRUFBRSxVQUFDLFFBQW1COztRQUM5QixJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQywwQkFBVyxDQUFDLEdBQVUsQ0FBQyxDQUFDO1FBRXpELElBQU0sWUFBWSxHQUF5QiwyQkFBZSxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRixJQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLHdCQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5RCxJQUFJLFNBQVMsRUFBRTtZQUNiLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDM0I7UUFDRCxVQUFJLDJCQUFlLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsMENBQUUsSUFBSSxFQUFFO1lBQ2pELFNBQVMsQ0FBQyxJQUFJLENBQUMsMkJBQWUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlEO1FBRUQsT0FBTyxhQUFhLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7Q0FDRixDQUFDLEVBakJvQixDQWlCcEIsRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhY3RvcnlQcm92aWRlciwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgbWFwVmFsdWVzIH0gZnJvbSAnLi4vY29tbW9uL2NvcmUuaGVscGVycyc7XG5pbXBvcnQgeyBpc05nSW5qZWN0aW9uVG9rZW4gfSBmcm9tICcuLi9jb21tb24vZnVuYy5pcy1uZy1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IG5nTW9ja3NVbml2ZXJzZSBmcm9tICcuLi9jb21tb24vbmctbW9ja3MtdW5pdmVyc2UnO1xuaW1wb3J0IG1vY2tIZWxwZXJTdHViIGZyb20gJy4uL21vY2staGVscGVyL21vY2staGVscGVyLnN0dWInO1xuaW1wb3J0IHsgTW9ja1NlcnZpY2UgfSBmcm9tICcuLi9tb2NrLXNlcnZpY2UvbW9jay1zZXJ2aWNlJztcblxuY29uc3QgYXBwbHlDYWxsYmFja1Rva2VuID0gKGRlZjogYW55KTogYm9vbGVhbiA9PiBpc05nSW5qZWN0aW9uVG9rZW4oZGVmKSB8fCB0eXBlb2YgZGVmID09PSAnc3RyaW5nJztcblxuY29uc3QgYXBwbHlDYWxsYmFjayA9IChkZWY6IGFueSwgaW5zdDogYW55LCBjYWxsYmFja3M6IGFueVtdLCBpbmplY3Rvcj86IEluamVjdG9yLCBvdmVycmlkZXM/OiBhbnkpOiB2b2lkID0+IHtcbiAgbGV0IGluc3RhbmNlOiBhbnkgPSBpbnN0O1xuXG4gIGZvciAoY29uc3QgY2FsbGJhY2sgb2YgY2FsbGJhY2tzKSB7XG4gICAgY29uc3Qgb3ZlcnJpZGUgPSBjYWxsYmFjayhpbnN0YW5jZSwgaW5qZWN0b3IpO1xuICAgIGlmIChhcHBseUNhbGxiYWNrVG9rZW4oZGVmKSkge1xuICAgICAgaW5zdGFuY2UgPSBvdmVycmlkZTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIG92ZXJyaWRlcyByZXR1cm4gcmVhbCB2YWx1ZS5cbiAgICBpZiAoY2FsbGJhY2sgPT09IG92ZXJyaWRlcykge1xuICAgICAgaW5zdGFuY2UgPSBvdmVycmlkZTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICghb3ZlcnJpZGUpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIG1vY2tIZWxwZXJTdHViKGluc3RhbmNlLCBvdmVycmlkZSk7XG4gIH1cblxuICByZXR1cm4gaW5zdGFuY2U7XG59O1xuXG5leHBvcnQgZGVmYXVsdCA8RCwgST4oXG4gIGRlZjogRCxcbiAgaW5pdD86ICgpID0+IEksXG4gIG92ZXJyaWRlcz86IChpbnN0YW5jZTogSSwgaW5qZWN0b3I6IEluamVjdG9yKSA9PiBJIHwgUGFydGlhbDxJPixcbik6IEZhY3RvcnlQcm92aWRlciA9PiAoe1xuICBkZXBzOiBbSW5qZWN0b3JdLFxuICBwcm92aWRlOiBkZWYsXG4gIHVzZUZhY3Rvcnk6IChpbmplY3Rvcj86IEluamVjdG9yKSA9PiB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBpbml0ID8gaW5pdCgpIDogTW9ja1NlcnZpY2UoZGVmIGFzIGFueSk7XG5cbiAgICBjb25zdCBjb25maWdHbG9iYWw6IFNldDxhbnk+IHwgdW5kZWZpbmVkID0gbmdNb2Nrc1VuaXZlcnNlLmdldE92ZXJyaWRlcygpLmdldChkZWYpO1xuICAgIGNvbnN0IGNhbGxiYWNrcyA9IGNvbmZpZ0dsb2JhbCA/IG1hcFZhbHVlcyhjb25maWdHbG9iYWwpIDogW107XG4gICAgaWYgKG92ZXJyaWRlcykge1xuICAgICAgY2FsbGJhY2tzLnB1c2gob3ZlcnJpZGVzKTtcbiAgICB9XG4gICAgaWYgKG5nTW9ja3NVbml2ZXJzZS5jb25maWdJbnN0YW5jZS5nZXQoZGVmKT8uaW5pdCkge1xuICAgICAgY2FsbGJhY2tzLnB1c2gobmdNb2Nrc1VuaXZlcnNlLmNvbmZpZ0luc3RhbmNlLmdldChkZWYpLmluaXQpO1xuICAgIH1cblxuICAgIHJldHVybiBhcHBseUNhbGxiYWNrKGRlZiwgaW5zdGFuY2UsIGNhbGxiYWNrcywgaW5qZWN0b3IsIG92ZXJyaWRlcyk7XG4gIH0sXG59KTtcbiJdfQ==
@@ -47,6 +47,7 @@ var applyMissedClassProperties = function (instance, useClass) {
47
47
  var def = Object.getOwnPropertyDescriptor(child, name_1);
48
48
  // istanbul ignore else
49
49
  if (def) {
50
+ def.configurable = true;
50
51
  Object.defineProperty(instance, name_1, def);
51
52
  }
52
53
  }
@@ -172,4 +173,4 @@ function default_1(provider) {
172
173
  return createMockProvider(provider, provide, cacheProviders) || handleProvider(provider, provide);
173
174
  }
174
175
  exports.default = default_1;
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9tb2NrLXNlcnZpY2UvbW9jay1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLHFEQUErQztBQUUvQyxpRUFBMEQ7QUFDMUQsbUZBQTBFO0FBQzFFLGlFQUEwRDtBQUUxRCwyREFBb0Q7QUFDcEQsK0NBQTZDO0FBRXJDLElBQUEseUJBQXlCLEdBQXFCLHFCQUFVLDBCQUEvQixFQUFFLGNBQWMsR0FBSyxxQkFBVSxlQUFmLENBQWdCO0FBRWpFLElBQU0sMEJBQTBCLEdBQUcsVUFBQyxRQUFhLEVBQUUsUUFBbUI7O0lBQ3BFLElBQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0RCxJQUFNLEtBQUssR0FBRywwQkFBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDOztRQUVwQyxLQUFtQixJQUFBLEtBQUEsU0FBQSxNQUFNLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUEsZ0JBQUEsNEJBQUU7WUFBakQsSUFBTSxNQUFJLFdBQUE7WUFDYixJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ2pDLFNBQVM7YUFDVjtZQUNELElBQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsTUFBSSxDQUFDLENBQUM7WUFDekQsdUJBQXVCO1lBQ3ZCLElBQUksR0FBRyxFQUFFO2dCQUNQLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLE1BQUksRUFBRSxHQUFHLENBQUMsQ0FBQzthQUM1QztTQUNGOzs7Ozs7Ozs7QUFDSCxDQUFDLENBQUM7QUFFRixJQUFNLHFCQUFxQixHQUFHLFVBQUMsUUFBYSxFQUFFLE9BQVk7SUFDeEQsT0FBQSw0QkFBZ0IsQ0FBQyxP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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgY29yZUNvbmZpZyBmcm9tICcuLi9jb21tb24vY29yZS5jb25maWcnO1xuaW1wb3J0IHsgVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9jb3JlLnR5cGVzJztcbmltcG9ydCBmdW5jR2V0UHJvdmlkZXIgZnJvbSAnLi4vY29tbW9uL2Z1bmMuZ2V0LXByb3ZpZGVyJztcbmltcG9ydCB7IGlzTmdJbmplY3Rpb25Ub2tlbiB9IGZyb20gJy4uL2NvbW1vbi9mdW5jLmlzLW5nLWluamVjdGlvbi10b2tlbic7XG5pbXBvcnQgbmdNb2Nrc1VuaXZlcnNlIGZyb20gJy4uL2NvbW1vbi9uZy1tb2Nrcy11bml2ZXJzZSc7XG5cbmltcG9ydCBoZWxwZXJVc2VGYWN0b3J5IGZyb20gJy4vaGVscGVyLnVzZS1mYWN0b3J5JztcbmltcG9ydCB7IE1vY2tTZXJ2aWNlIH0gZnJvbSAnLi9tb2NrLXNlcnZpY2UnO1xuXG5jb25zdCB7IG5ldmVyTW9ja1Byb3ZpZGVkRnVuY3Rpb24sIG5ldmVyTW9ja1Rva2VuIH0gPSBjb3JlQ29uZmlnO1xuXG5jb25zdCBhcHBseU1pc3NlZENsYXNzUHJvcGVydGllcyA9IChpbnN0YW5jZTogYW55LCB1c2VDbGFzczogVHlwZTxhbnk+KSA9PiB7XG4gIGNvbnN0IGV4aXN0aW5nID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaW5zdGFuY2UpO1xuICBjb25zdCBjaGlsZCA9IE1vY2tTZXJ2aWNlKHVzZUNsYXNzKTtcblxuICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoY2hpbGQpKSB7XG4gICAgaWYgKGV4aXN0aW5nLmluZGV4T2YobmFtZSkgIT09IC0xKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgZGVmID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjaGlsZCwgbmFtZSk7XG4gICAgLy8gaXN0YW5idWwgaWdub3JlIGVsc2VcbiAgICBpZiAoZGVmKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5zdGFuY2UsIG5hbWUsIGRlZik7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBjcmVhdGVGYWN0b3J5UHJvdmlkZXIgPSAocHJvdmlkZXI6IGFueSwgcHJvdmlkZTogYW55KSA9PlxuICBoZWxwZXJVc2VGYWN0b3J5KHByb3ZpZGUsICgpID0+IHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IE1vY2tTZXJ2aWNlKHByb3ZpZGUpO1xuICAgIC8vIE1hZ2ljIGJlbG93IGFkZHMgbWlzc2VkIHByb3BlcnRpZXMgdG8gdGhlIGluc3RhbmNlIHRvXG4gICAgLy8gZnVsZmlsbCBtaXNzZWQgYWJzdHJhY3QgbWV0aG9kcy5cbiAgICBpZiAocHJvdmlkZSAhPT0gcHJvdmlkZXIgJiYgT2JqZWN0LmtleXMocHJvdmlkZXIpLmluZGV4T2YoJ3VzZUNsYXNzJykgIT09IC0xKSB7XG4gICAgICBhcHBseU1pc3NlZENsYXNzUHJvcGVydGllcyhpbnN0YW5jZSwgcHJvdmlkZXIudXNlQ2xhc3MpO1xuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfSk7XG5cbmNvbnN0IG5vcm1hbGl6ZVByaW1pdGl2ZXNNYXA6IEFycmF5PFsodmFsdWU6IGFueSkgPT4gYm9vbGVhbiwgYW55XT4gPSBbXG4gIFt2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJywgZmFsc2VdLFxuICBbdmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJywgMF0sXG4gIFt2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnLCAnJ10sXG4gIFt2YWx1ZSA9PiB2YWx1ZSA9PT0gbnVsbCwgbnVsbF0sXG5dO1xuXG5jb25zdCBub3JtYWxpemVQcmltaXRpdmVzID0gKHZhbHVlOiBhbnkpOiBhbnkgPT4ge1xuICBmb3IgKGNvbnN0IFtjaGVjaywgcmVzdWx0XSBvZiBub3JtYWxpemVQcmltaXRpdmVzTWFwKSB7XG4gICAgaWYgKGNoZWNrKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuY29uc3QgY3JlYXRlVmFsdWVQcm92aWRlciA9IChwcm92aWRlcjogYW55LCBwcm92aWRlOiBhbnkpID0+XG4gIGhlbHBlclVzZUZhY3RvcnkocHJvdmlkZSwgKCkgPT5cbiAgICBwcm92aWRlci51c2VWYWx1ZSAmJiB0eXBlb2YgcHJvdmlkZXIudXNlVmFsdWUgPT09ICdvYmplY3QnXG4gICAgICA/IE1vY2tTZXJ2aWNlKHByb3ZpZGVyLnVzZVZhbHVlKVxuICAgICAgOiBub3JtYWxpemVQcmltaXRpdmVzKHByb3ZpZGVyLnVzZVZhbHVlKSxcbiAgKTtcblxuY29uc3QgY3JlYXRlQ2xhc3NQcm92aWRlciA9IChwcm92aWRlcjogYW55LCBwcm92aWRlOiBhbnkpID0+XG4gIG5nTW9ja3NVbml2ZXJzZS5idWlsdFByb3ZpZGVycy5oYXMocHJvdmlkZXIudXNlQ2xhc3MpICYmXG4gIG5nTW9ja3NVbml2ZXJzZS5idWlsdFByb3ZpZGVycy5nZXQocHJvdmlkZXIudXNlQ2xhc3MpID09PSBwcm92aWRlci51c2VDbGFzc1xuICAgID8gcHJvdmlkZXJcbiAgICA6IGhlbHBlclVzZUZhY3RvcnkocHJvdmlkZSwgKCkgPT4gTW9ja1NlcnZpY2UocHJvdmlkZXIudXNlQ2xhc3MpKTtcblxuY29uc3QgY3JlYXRlTW9ja1Byb3ZpZGVyID0gKHByb3ZpZGVyOiBhbnksIHByb3ZpZGU6IGFueSwgY2FjaGVQcm92aWRlcnM/OiBNYXA8YW55LCBhbnk+KTogUHJvdmlkZXIgfCB1bmRlZmluZWQgPT4ge1xuICBsZXQgbW9ja1Byb3ZpZGVyOiBQcm92aWRlciB8IHVuZGVmaW5lZDtcbiAgaWYgKHR5cGVvZiBwcm92aWRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgbW9ja1Byb3ZpZGVyID0gY3JlYXRlRmFjdG9yeVByb3ZpZGVyKHByb3ZpZGVyLCBwcm92aWRlKTtcbiAgfVxuICBpZiAocHJvdmlkZSA9PT0gcHJvdmlkZXIgJiYgbW9ja1Byb3ZpZGVyICYmIGNhY2hlUHJvdmlkZXJzKSB7XG4gICAgY2FjaGVQcm92aWRlcnMuc2V0KHByb3ZpZGUsIG1vY2tQcm92aWRlcik7XG4gIH1cblxuICByZXR1cm4gbW9ja1Byb3ZpZGVyO1xufTtcblxuLy8gVG9rZW5zIGFyZSBzcGVjaWFsIHN1YmplY3QsIHdlIGNhbiBza2lwIGFkZGluZyB0aGVtIGJlY2F1c2UgaW4gYSBtb2NrIG1vZHVsZSB0aGV5IGFyZSB1c2VsZXNzLlxuLy8gVGhlIG1haW4gcHJvYmxlbSBpcyB0aGF0IHByb3ZpZGluZyB1bmRlZmluZWQgdG8gSFRUUF9JTlRFUkNFUFRPUlMgYW5kIG90aGVycyBicmVha3MgdGhlaXIgY29kZS5cbi8vIElmIGEgdGVzdGluZyBtb2R1bGUgLyBjb21wb25lbnQgcmVxdWlyZXMgb21pdHRlZCB0b2tlbnMgdGhlbiB0aGV5IHNob3VsZCBiZSBwcm92aWRlZCBtYW51YWxseVxuLy8gZHVyaW5nIGNyZWF0aW9uIG9mIFRlc3RCZWQgbW9kdWxlLlxuY29uc3QgaGFuZGxlUHJvdmlkZXIgPSAocHJvdmlkZXI6IGFueSwgcHJvdmlkZTogYW55KSA9PiB7XG4gIGlmIChwcm92aWRlID09PSBwcm92aWRlcikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKHByb3ZpZGVyLm11bHRpKSB7XG4gICAgbmdNb2Nrc1VuaXZlcnNlLmNvbmZpZy5nZXQoJ25nTW9ja3NNdWx0aScpPy5hZGQocHJvdmlkZSk7XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgbGV0IG1vY2tQcm92aWRlcjogYW55O1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZVxuICBpZiAoT2JqZWN0LmtleXMocHJvdmlkZXIpLmluZGV4T2YoJ3VzZVZhbHVlJykgIT09IC0xKSB7XG4gICAgbW9ja1Byb3ZpZGVyID0gY3JlYXRlVmFsdWVQcm92aWRlcihwcm92aWRlciwgcHJvdmlkZSk7XG4gIH0gZWxzZSBpZiAoT2JqZWN0LmtleXMocHJvdmlkZXIpLmluZGV4T2YoJ3VzZUV4aXN0aW5nJykgIT09IC0xKSB7XG4gICAgbW9ja1Byb3ZpZGVyID0gcHJvdmlkZXI7XG4gIH0gZWxzZSBpZiAoT2JqZWN0LmtleXMocHJvdmlkZXIpLmluZGV4T2YoJ3VzZUNsYXNzJykgIT09IC0xKSB7XG4gICAgbW9ja1Byb3ZpZGVyID0gY3JlYXRlQ2xhc3NQcm92aWRlcihwcm92aWRlciwgcHJvdmlkZSk7XG4gIH0gZWxzZSBpZiAoT2JqZWN0LmtleXMocHJvdmlkZXIpLmluZGV4T2YoJ3VzZUZhY3RvcnknKSAhPT0gLTEpIHtcbiAgICBtb2NrUHJvdmlkZXIgPSBoZWxwZXJVc2VGYWN0b3J5KHByb3ZpZGUsICgpID0+ICh7fSkpO1xuICB9XG5cbiAgcmV0dXJuIG1vY2tQcm92aWRlcjtcbn07XG5cbmNvbnN0IGlzTmV2ZXJNb2NrRnVuY3Rpb24gPSAocHJvdmlkZTogYW55KTogYm9vbGVhbiA9PlxuICB0eXBlb2YgcHJvdmlkZSA9PT0gJ2Z1bmN0aW9uJyAmJiBuZXZlck1vY2tQcm92aWRlZEZ1bmN0aW9uLmluZGV4T2YocHJvdmlkZS5uYW1lKSAhPT0gLTE7XG5cbmNvbnN0IGlzTmV2ZXJNb2NrVG9rZW4gPSAocHJvdmlkZTogYW55KTogYm9vbGVhbiA9PlxuICBpc05nSW5qZWN0aW9uVG9rZW4ocHJvdmlkZSkgJiYgbmV2ZXJNb2NrVG9rZW4uaW5kZXhPZihwcm92aWRlLnRvU3RyaW5nKCkpICE9PSAtMTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHByb3ZpZGVyOiBhbnkpOiBQcm92aWRlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHByb3ZpZGUgPSBmdW5jR2V0UHJvdmlkZXIocHJvdmlkZXIpO1xuXG4gIGlmIChpc05ldmVyTW9ja0Z1bmN0aW9uKHByb3ZpZGUpKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVyO1xuICB9XG4gIGlmIChpc05ldmVyTW9ja1Rva2VuKHByb3ZpZGUpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIE9ubHkgcHVyZSBwcm92aWRlcyBzaG91bGQgYmUgY2FjaGVkIHRvIGF2b2lkIHRoZWlyIGluZmx1ZW5jZSBvblxuICAvLyBhbm90aGVyIGRpZmZlcmVudCBkZWNsYXJhdGlvbnMuXG4gIGNvbnN0IGNhY2hlUHJvdmlkZXJzID0gbmdNb2Nrc1VuaXZlcnNlLmZsYWdzLmhhcygnY2FjaGVQcm92aWRlcicpXG4gICAgPyBuZ01vY2tzVW5pdmVyc2UuY2FjaGVQcm92aWRlcnNcbiAgICA6IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIHVuZGVmaW5lZDtcbiAgaWYgKHByb3ZpZGUgPT09IHByb3ZpZGVyICYmIGNhY2hlUHJvdmlkZXJzICYmIGNhY2hlUHJvdmlkZXJzLmhhcyhwcm92aWRlKSkge1xuICAgIHJldHVybiBjYWNoZVByb3ZpZGVycy5nZXQocHJvdmlkZSk7XG4gIH1cblxuICByZXR1cm4gY3JlYXRlTW9ja1Byb3ZpZGVyKHByb3ZpZGVyLCBwcm92aWRlLCBjYWNoZVByb3ZpZGVycykgfHwgaGFuZGxlUHJvdmlkZXIocHJvdmlkZXIsIHByb3ZpZGUpO1xufVxuIl19
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9tb2NrLXNlcnZpY2UvbW9jay1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLHFEQUErQztBQUUvQyxpRUFBMEQ7QUFDMUQsbUZBQTBFO0FBQzFFLGlFQUEwRDtBQUUxRCwyREFBb0Q7QUFDcEQsK0NBQTZDO0FBRXJDLElBQUEseUJBQXlCLEdBQXFCLHFCQUFVLDBCQUEvQixFQUFFLGNBQWMsR0FBSyxxQkFBVSxlQUFmLENBQWdCO0FBRWpFLElBQU0sMEJBQTBCLEdBQUcsVUFBQyxRQUFhLEVBQUUsUUFBbUI7O0lBQ3BFLElBQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0RCxJQUFNLEtBQUssR0FBRywwQkFBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDOztRQUVwQyxLQUFtQixJQUFBLEtBQUEsU0FBQSxNQUFNLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUEsZ0JBQUEsNEJBQUU7WUFBakQsSUFBTSxNQUFJLFdBQUE7WUFDYixJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ2pDLFNBQVM7YUFDVjtZQUNELElBQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsTUFBSSxDQUFDLENBQUM7WUFDekQsdUJBQXVCO1lBQ3ZCLElBQUksR0FBRyxFQUFFO2dCQUNQLEdBQUcsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxNQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDNUM7U0FDRjs7Ozs7Ozs7O0FBQ0gsQ0FBQyxDQUFDO0FBRUYsSUFBTSxxQkFBcUIsR0FBRyxVQUFDLFFB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QU8sQ0FBQyxDQUFDO0FBQ3BHLENBQUM7QUFwQkQsNEJBb0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IGNvcmVDb25maWcgZnJvbSAnLi4vY29tbW9uL2NvcmUuY29uZmlnJztcbmltcG9ydCB7IFR5cGUgfSBmcm9tICcuLi9jb21tb24vY29yZS50eXBlcyc7XG5pbXBvcnQgZnVuY0dldFByb3ZpZGVyIGZyb20gJy4uL2NvbW1vbi9mdW5jLmdldC1wcm92aWRlcic7XG5pbXBvcnQgeyBpc05nSW5qZWN0aW9uVG9rZW4gfSBmcm9tICcuLi9jb21tb24vZnVuYy5pcy1uZy1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IG5nTW9ja3NVbml2ZXJzZSBmcm9tICcuLi9jb21tb24vbmctbW9ja3MtdW5pdmVyc2UnO1xuXG5pbXBvcnQgaGVscGVyVXNlRmFjdG9yeSBmcm9tICcuL2hlbHBlci51c2UtZmFjdG9yeSc7XG5pbXBvcnQgeyBNb2NrU2VydmljZSB9IGZyb20gJy4vbW9jay1zZXJ2aWNlJztcblxuY29uc3QgeyBuZXZlck1vY2tQcm92aWRlZEZ1bmN0aW9uLCBuZXZlck1vY2tUb2tlbiB9ID0gY29yZUNvbmZpZztcblxuY29uc3QgYXBwbHlNaXNzZWRDbGFzc1Byb3BlcnRpZXMgPSAoaW5zdGFuY2U6IGFueSwgdXNlQ2xhc3M6IFR5cGU8YW55PikgPT4ge1xuICBjb25zdCBleGlzdGluZyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluc3RhbmNlKTtcbiAgY29uc3QgY2hpbGQgPSBNb2NrU2VydmljZSh1c2VDbGFzcyk7XG5cbiAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGNoaWxkKSkge1xuICAgIGlmIChleGlzdGluZy5pbmRleE9mKG5hbWUpICE9PSAtMSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGRlZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY2hpbGQsIG5hbWUpO1xuICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBlbHNlXG4gICAgaWYgKGRlZikge1xuICAgICAgZGVmLmNvbmZpZ3VyYWJsZSA9IHRydWU7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5zdGFuY2UsIG5hbWUsIGRlZik7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBjcmVhdGVGYWN0b3J5UHJvdmlkZXIgPSAocHJvdmlkZXI6IGFueSwgcHJvdmlkZTogYW55KSA9PlxuICBoZWxwZXJVc2VGYWN0b3J5KHByb3ZpZGUsICgpID0+IHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IE1vY2tTZXJ2aWNlKHByb3ZpZGUpO1xuICAgIC8vIE1hZ2ljIGJlbG93IGFkZHMgbWlzc2VkIHByb3BlcnRpZXMgdG8gdGhlIGluc3RhbmNlIHRvXG4gICAgLy8gZnVsZmlsbCBtaXNzZWQgYWJzdHJhY3QgbWV0aG9kcy5cbiAgICBpZiAocHJvdmlkZSAhPT0gcHJvdmlkZXIgJiYgT2JqZWN0LmtleXMocHJvdmlkZXIpLmluZGV4T2YoJ3VzZUNsYXNzJykgIT09IC0xKSB7XG4gICAgICBhcHBseU1pc3NlZENsYXNzUHJvcGVydGllcyhpbnN0YW5jZSwgcHJvdmlkZXIudXNlQ2xhc3MpO1xuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfSk7XG5cbmNvbnN0IG5vcm1hbGl6ZVByaW1pdGl2ZXNNYXA6IEFycmF5PFsodmFsdWU6IGFueSkgPT4gYm9vbGVhbiwgYW55XT4gPSBbXG4gIFt2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJywgZmFsc2VdLFxuICBbdmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJywgMF0sXG4gIFt2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnLCAnJ10sXG4gIFt2YWx1ZSA9PiB2YWx1ZSA9PT0gbnVsbCwgbnVsbF0sXG5dO1xuXG5jb25zdCBub3JtYWxpemVQcmltaXRpdmVzID0gKHZhbHVlOiBhbnkpOiBhbnkgPT4ge1xuICBmb3IgKGNvbnN0IFtjaGVjaywgcmVzdWx0XSBvZiBub3JtYWxpemVQcmltaXRpdmVzTWFwKSB7XG4gICAgaWYgKGNoZWNrKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuY29uc3QgY3JlYXRlVmFsdWVQcm92aWRlciA9IChwcm92aWRlcjogYW55LCBwcm92aWRlOiBhbnkpID0+XG4gIGhlbHBlclVzZUZhY3RvcnkocHJvdmlkZSwgKCkgPT5cbiAgICBwcm92aWRlci51c2VWYWx1ZSAmJiB0eXBlb2YgcHJvdmlkZXIudXNlVmFsdWUgPT09ICdvYmplY3QnXG4gICAgICA/IE1vY2tTZXJ2aWNlKHByb3ZpZGVyLnVzZVZhbHVlKVxuICAgICAgOiBub3JtYWxpemVQcmltaXRpdmVzKHByb3ZpZGVyLnVzZVZhbHVlKSxcbiAgKTtcblxuY29uc3QgY3JlYXRlQ2xhc3NQcm92aWRlciA9IChwcm92aWRlcjogYW55LCBwcm92aWRlOiBhbnkpID0+XG4gIG5nTW9ja3NVbml2ZXJzZS5idWlsdFByb3ZpZGVycy5oYXMocHJvdmlkZXIudXNlQ2xhc3MpICYmXG4gIG5nTW9ja3NVbml2ZXJzZS5idWlsdFByb3ZpZGVycy5nZXQocHJvdmlkZXIudXNlQ2xhc3MpID09PSBwcm92aWRlci51c2VDbGFzc1xuICAgID8gcHJvdmlkZXJcbiAgICA6IGhlbHBlclVzZUZhY3RvcnkocHJvdmlkZSwgKCkgPT4gTW9ja1NlcnZpY2UocHJvdmlkZXIudXNlQ2xhc3MpKTtcblxuY29uc3QgY3JlYXRlTW9ja1Byb3ZpZGVyID0gKHByb3ZpZGVyOiBhbnksIHByb3ZpZGU6IGFueSwgY2FjaGVQcm92aWRlcnM/OiBNYXA8YW55LCBhbnk+KTogUHJvdmlkZXIgfCB1bmRlZmluZWQgPT4ge1xuICBsZXQgbW9ja1Byb3ZpZGVyOiBQcm92aWRlciB8IHVuZGVmaW5lZDtcbiAgaWYgKHR5cGVvZiBwcm92aWRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgbW9ja1Byb3ZpZGVyID0gY3JlYXRlRmFjdG9yeVByb3ZpZGVyKHByb3ZpZGVyLCBwcm92aWRlKTtcbiAgfVxuICBpZiAocHJvdmlkZSA9PT0gcHJvdmlkZXIgJiYgbW9ja1Byb3ZpZGVyICYmIGNhY2hlUHJvdmlkZXJzKSB7XG4gICAgY2FjaGVQcm92aWRlcnMuc2V0KHByb3ZpZGUsIG1vY2tQcm92aWRlcik7XG4gIH1cblxuICByZXR1cm4gbW9ja1Byb3ZpZGVyO1xufTtcblxuLy8gVG9rZW5zIGFyZSBzcGVjaWFsIHN1YmplY3QsIHdlIGNhbiBza2lwIGFkZGluZyB0aGVtIGJlY2F1c2UgaW4gYSBtb2NrIG1vZHVsZSB0aGV5IGFyZSB1c2VsZXNzLlxuLy8gVGhlIG1haW4gcHJvYmxlbSBpcyB0aGF0IHByb3ZpZGluZyB1bmRlZmluZWQgdG8gSFRUUF9JTlRFUkNFUFRPUlMgYW5kIG90aGVycyBicmVha3MgdGhlaXIgY29kZS5cbi8vIElmIGEgdGVzdGluZyBtb2R1bGUgLyBjb21wb25lbnQgcmVxdWlyZXMgb21pdHRlZCB0b2tlbnMgdGhlbiB0aGV5IHNob3VsZCBiZSBwcm92aWRlZCBtYW51YWxseVxuLy8gZHVyaW5nIGNyZWF0aW9uIG9mIFRlc3RCZWQgbW9kdWxlLlxuY29uc3QgaGFuZGxlUHJvdmlkZXIgPSAocHJvdmlkZXI6IGFueSwgcHJvdmlkZTogYW55KSA9PiB7XG4gIGlmIChwcm92aWRlID09PSBwcm92aWRlcikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKHByb3ZpZGVyLm11bHRpKSB7XG4gICAgbmdNb2Nrc1VuaXZlcnNlLmNvbmZpZy5nZXQoJ25nTW9ja3NNdWx0aScpPy5hZGQocHJvdmlkZSk7XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgbGV0IG1vY2tQcm92aWRlcjogYW55O1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZVxuICBpZiAoT2JqZWN0LmtleXMocHJvdmlkZXIpLmluZGV4T2YoJ3VzZVZhbHVlJykgIT09IC0xKSB7XG4gICAgbW9ja1Byb3ZpZGVyID0gY3JlYXRlVmFsdWVQcm92aWRlcihwcm92aWRlciwgcHJvdmlkZSk7XG4gIH0gZWxzZSBpZiAoT2JqZWN0LmtleXMocHJvdmlkZXIpLmluZGV4T2YoJ3VzZUV4aXN0aW5nJykgIT09IC0xKSB7XG4gICAgbW9ja1Byb3ZpZGVyID0gcHJvdmlkZXI7XG4gIH0gZWxzZSBpZiAoT2JqZWN0LmtleXMocHJvdmlkZXIpLmluZGV4T2YoJ3VzZUNsYXNzJykgIT09IC0xKSB7XG4gICAgbW9ja1Byb3ZpZGVyID0gY3JlYXRlQ2xhc3NQcm92aWRlcihwcm92aWRlciwgcHJvdmlkZSk7XG4gIH0gZWxzZSBpZiAoT2JqZWN0LmtleXMocHJvdmlkZXIpLmluZGV4T2YoJ3VzZUZhY3RvcnknKSAhPT0gLTEpIHtcbiAgICBtb2NrUHJvdmlkZXIgPSBoZWxwZXJVc2VGYWN0b3J5KHByb3ZpZGUsICgpID0+ICh7fSkpO1xuICB9XG5cbiAgcmV0dXJuIG1vY2tQcm92aWRlcjtcbn07XG5cbmNvbnN0IGlzTmV2ZXJNb2NrRnVuY3Rpb24gPSAocHJvdmlkZTogYW55KTogYm9vbGVhbiA9PlxuICB0eXBlb2YgcHJvdmlkZSA9PT0gJ2Z1bmN0aW9uJyAmJiBuZXZlck1vY2tQcm92aWRlZEZ1bmN0aW9uLmluZGV4T2YocHJvdmlkZS5uYW1lKSAhPT0gLTE7XG5cbmNvbnN0IGlzTmV2ZXJNb2NrVG9rZW4gPSAocHJvdmlkZTogYW55KTogYm9vbGVhbiA9PlxuICBpc05nSW5qZWN0aW9uVG9rZW4ocHJvdmlkZSkgJiYgbmV2ZXJNb2NrVG9rZW4uaW5kZXhPZihwcm92aWRlLnRvU3RyaW5nKCkpICE9PSAtMTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHByb3ZpZGVyOiBhbnkpOiBQcm92aWRlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHByb3ZpZGUgPSBmdW5jR2V0UHJvdmlkZXIocHJvdmlkZXIpO1xuXG4gIGlmIChpc05ldmVyTW9ja0Z1bmN0aW9uKHByb3ZpZGUpKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVyO1xuICB9XG4gIGlmIChpc05ldmVyTW9ja1Rva2VuKHByb3ZpZGUpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIE9ubHkgcHVyZSBwcm92aWRlcyBzaG91bGQgYmUgY2FjaGVkIHRvIGF2b2lkIHRoZWlyIGluZmx1ZW5jZSBvblxuICAvLyBhbm90aGVyIGRpZmZlcmVudCBkZWNsYXJhdGlvbnMuXG4gIGNvbnN0IGNhY2hlUHJvdmlkZXJzID0gbmdNb2Nrc1VuaXZlcnNlLmZsYWdzLmhhcygnY2FjaGVQcm92aWRlcicpXG4gICAgPyBuZ01vY2tzVW5pdmVyc2UuY2FjaGVQcm92aWRlcnNcbiAgICA6IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIHVuZGVmaW5lZDtcbiAgaWYgKHByb3ZpZGUgPT09IHByb3ZpZGVyICYmIGNhY2hlUHJvdmlkZXJzICYmIGNhY2hlUHJvdmlkZXJzLmhhcyhwcm92aWRlKSkge1xuICAgIHJldHVybiBjYWNoZVByb3ZpZGVycy5nZXQocHJvdmlkZSk7XG4gIH1cblxuICByZXR1cm4gY3JlYXRlTW9ja1Byb3ZpZGVyKHByb3ZpZGVyLCBwcm92aWRlLCBjYWNoZVByb3ZpZGVycykgfHwgaGFuZGxlUHJvdmlkZXIocHJvdmlkZXIsIHByb3ZpZGUpO1xufVxuIl19