@lynxwall/cucumber-tsflow 5.0.6 → 5.0.7

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 (50) hide show
  1. package/README.md +8 -8
  2. package/lib/behave.js +5 -15
  3. package/lib/cli/argv-parser.js +97 -107
  4. package/lib/cli/index.js +81 -91
  5. package/lib/cli/load-configuration.js +78 -89
  6. package/lib/cli/run.js +37 -47
  7. package/lib/cucumber/binding-decorator.js +163 -173
  8. package/lib/cucumber/binding-registry.js +198 -208
  9. package/lib/cucumber/hook-decorators.js +99 -109
  10. package/lib/cucumber/managed-scenario-context.js +71 -81
  11. package/lib/cucumber/message-collector.js +115 -125
  12. package/lib/cucumber/step-definition-decorators.js +86 -96
  13. package/lib/cucumber/utils.js +73 -83
  14. package/lib/esnode.js +3 -4
  15. package/lib/esvue.js +35 -46
  16. package/lib/formatters/behave-json-formatter.js +47 -58
  17. package/lib/formatters/tsflow-snippet-syntax.js +89 -99
  18. package/lib/gherkin/configuration.js +26 -36
  19. package/lib/gherkin/gherkin-feature.js +285 -295
  20. package/lib/gherkin/gherkin-manager.js +93 -103
  21. package/lib/gherkin/models.js +2 -12
  22. package/lib/index.js +9 -19
  23. package/lib/snippet.js +5 -15
  24. package/lib/transpilers/esbuild-transpiler.js +19 -29
  25. package/lib/transpilers/esbuild.js +51 -62
  26. package/lib/transpilers/vue-sfc/compiler.js +20 -30
  27. package/lib/transpilers/vue-sfc/index.d.ts +0 -2
  28. package/lib/transpilers/vue-sfc/index.js +44 -61
  29. package/lib/transpilers/vue-sfc/main.js +223 -235
  30. package/lib/transpilers/vue-sfc/script.js +40 -51
  31. package/lib/transpilers/vue-sfc/template.js +94 -105
  32. package/lib/transpilers/vue-sfc/types.js +2 -12
  33. package/lib/transpilers/vue-sfc/utils/descriptorCache.d.ts +1 -1
  34. package/lib/transpilers/vue-sfc/utils/descriptorCache.js +52 -62
  35. package/lib/transpilers/vue-sfc/utils/error.js +22 -32
  36. package/lib/transpilers/vue-sfc/utils/query.js +32 -42
  37. package/lib/tsnode.js +3 -4
  38. package/lib/tsvue.js +34 -45
  39. package/lib/types/scenario-context.js +4 -14
  40. package/lib/types/scenario-info.js +18 -28
  41. package/lib/types/step-binding-flags.js +57 -67
  42. package/lib/types/step-binding.js +4 -14
  43. package/lib/types/types.js +2 -12
  44. package/lib/utils/helpers.js +17 -27
  45. package/lib/utils/logger.js +7 -17
  46. package/lib/utils/our-callsite.d.ts +1 -0
  47. package/lib/utils/our-callsite.js +43 -50
  48. package/lib/version.d.ts +1 -1
  49. package/lib/version.js +6 -16
  50. package/package.json +11 -13
@@ -1,192 +1,182 @@
1
+ "use strict";
1
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
2
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
3
4
  };
4
- (function (factory) {
5
- if (typeof module === "object" && typeof module.exports === "object") {
6
- var v = factory(require, exports);
7
- if (v !== undefined) module.exports = v;
8
- }
9
- else if (typeof define === "function" && define.amd) {
10
- define(["require", "exports", "@cucumber/cucumber", "./binding-registry", "../types/step-binding", "./message-collector", "@cucumber/cucumber", "underscore"], factory);
11
- }
12
- })(function (require, exports) {
13
- "use strict";
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.binding = void 0;
16
- /* eslint-disable prefer-rest-params */
17
- const cucumber_1 = require("@cucumber/cucumber");
18
- const binding_registry_1 = require("./binding-registry");
19
- const step_binding_1 = require("../types/step-binding");
20
- const message_collector_1 = __importDefault(require("./message-collector"));
21
- const cucumber_2 = require("@cucumber/cucumber");
22
- const underscore_1 = __importDefault(require("underscore"));
23
- /**
24
- * A set of step patterns that have been registered with Cucumber.
25
- *
26
- * In order to support scoped (or tagged) step definitions, we must ensure that any step binding is
27
- * only registered with Cucumber once. The binding function for that step pattern then becomes
28
- * responsible for looking up and execuing the step binding based on the context that is in scope at
29
- * the point of invocation.
30
- */
31
- const stepPatternRegistrations = new Map();
32
- /**
33
- * A class decorator that marks the associated class as a CucumberJS binding.
34
- *
35
- * @param requiredContextTypes An optional array of Types that will be created and passed into the created
36
- * object for each scenario.
37
- *
38
- * An instance of the decorated class will be created for each scenario.
39
- */
40
- function binding(requiredContextTypes) {
41
- return (target) => {
42
- defineParameters();
43
- const bindingRegistry = binding_registry_1.BindingRegistry.instance;
44
- bindingRegistry.registerContextTypesForTarget(target.prototype, requiredContextTypes);
45
- const allBindings = [];
46
- allBindings.push(...bindingRegistry.getStepBindingsForTarget(target));
47
- allBindings.push(...bindingRegistry.getStepBindingsForTarget(target.prototype));
48
- allBindings.forEach(stepBinding => {
49
- if (stepBinding.bindingType & step_binding_1.StepBindingFlags.StepDefinitions) {
50
- let stepBindingFlags = stepPatternRegistrations.get(stepBinding.stepPattern.toString());
51
- if (stepBindingFlags === undefined) {
52
- stepBindingFlags = step_binding_1.StepBindingFlags.none;
53
- }
54
- if (stepBindingFlags & stepBinding.bindingType) {
55
- return;
56
- }
57
- bindStepDefinition(stepBinding);
58
- stepPatternRegistrations.set(stepBinding.stepPattern.toString(), stepBindingFlags | stepBinding.bindingType);
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.binding = void 0;
7
+ /* eslint-disable prefer-rest-params */
8
+ const cucumber_1 = require("@cucumber/cucumber");
9
+ const binding_registry_1 = require("./binding-registry");
10
+ const step_binding_1 = require("../types/step-binding");
11
+ const message_collector_1 = __importDefault(require("./message-collector"));
12
+ const cucumber_2 = require("@cucumber/cucumber");
13
+ const underscore_1 = __importDefault(require("underscore"));
14
+ /**
15
+ * A set of step patterns that have been registered with Cucumber.
16
+ *
17
+ * In order to support scoped (or tagged) step definitions, we must ensure that any step binding is
18
+ * only registered with Cucumber once. The binding function for that step pattern then becomes
19
+ * responsible for looking up and execuing the step binding based on the context that is in scope at
20
+ * the point of invocation.
21
+ */
22
+ const stepPatternRegistrations = new Map();
23
+ /**
24
+ * A class decorator that marks the associated class as a CucumberJS binding.
25
+ *
26
+ * @param requiredContextTypes An optional array of Types that will be created and passed into the created
27
+ * object for each scenario.
28
+ *
29
+ * An instance of the decorated class will be created for each scenario.
30
+ */
31
+ function binding(requiredContextTypes) {
32
+ return (target) => {
33
+ defineParameters();
34
+ const bindingRegistry = binding_registry_1.BindingRegistry.instance;
35
+ bindingRegistry.registerContextTypesForTarget(target.prototype, requiredContextTypes);
36
+ const allBindings = [];
37
+ allBindings.push(...bindingRegistry.getStepBindingsForTarget(target));
38
+ allBindings.push(...bindingRegistry.getStepBindingsForTarget(target.prototype));
39
+ allBindings.forEach(stepBinding => {
40
+ if (stepBinding.bindingType & step_binding_1.StepBindingFlags.StepDefinitions) {
41
+ let stepBindingFlags = stepPatternRegistrations.get(stepBinding.stepPattern.toString());
42
+ if (stepBindingFlags === undefined) {
43
+ stepBindingFlags = step_binding_1.StepBindingFlags.none;
59
44
  }
60
- else if (stepBinding.bindingType & step_binding_1.StepBindingFlags.Hooks) {
61
- bindHook(stepBinding);
45
+ if (stepBindingFlags & stepBinding.bindingType) {
46
+ return;
62
47
  }
63
- });
64
- };
65
- }
66
- exports.binding = binding;
67
- /**
68
- * Called only once to register new parameters. This has to be
69
- * executed here during binding initialization for cucumber to
70
- * to use it when matching expressions. Attempting to add it
71
- * before the test run doesn't work
72
- */
73
- const defineParameters = underscore_1.default.once(() => {
74
- (0, cucumber_2.defineParameterType)({
75
- name: 'boolean',
76
- regexp: /true|false/,
77
- transformer: s => (s === 'true' ? true : false)
48
+ bindStepDefinition(stepBinding);
49
+ stepPatternRegistrations.set(stepBinding.stepPattern.toString(), stepBindingFlags | stepBinding.bindingType);
50
+ }
51
+ else if (stepBinding.bindingType & step_binding_1.StepBindingFlags.Hooks) {
52
+ bindHook(stepBinding);
53
+ }
78
54
  });
55
+ };
56
+ }
57
+ exports.binding = binding;
58
+ /**
59
+ * Called only once to register new parameters. This has to be
60
+ * executed here during binding initialization for cucumber to
61
+ * to use it when matching expressions. Attempting to add it
62
+ * before the test run doesn't work
63
+ */
64
+ const defineParameters = underscore_1.default.once(() => {
65
+ (0, cucumber_2.defineParameterType)({
66
+ name: 'boolean',
67
+ regexp: /true|false/,
68
+ transformer: s => (s === 'true' ? true : false)
69
+ });
70
+ });
71
+ /**
72
+ * Binds a step definition to Cucumber.
73
+ *
74
+ * @param stepBinding The [[StepBinding]] that represents a 'given', 'when', or 'then' step definition.
75
+ */
76
+ function bindStepDefinition(stepBinding) {
77
+ const bindingFunc = function () {
78
+ const bindingRegistry = binding_registry_1.BindingRegistry.instance;
79
+ const scenarioContext = message_collector_1.default.getStepScenarioContext(stepBinding);
80
+ if (scenarioContext) {
81
+ const matchingStepBindings = bindingRegistry.getStepBindings(stepBinding.stepPattern.toString(), scenarioContext.scenarioInfo.tags);
82
+ if (matchingStepBindings.length > 1) {
83
+ let message = `Ambiguous step definitions for '${matchingStepBindings[0].stepPattern}':\n`;
84
+ matchingStepBindings.forEach(matchingStepBinding => {
85
+ message =
86
+ message +
87
+ `\t\t${String(matchingStepBinding.targetPropertyKey)} (${matchingStepBinding.callsite.toString()})\n`;
88
+ });
89
+ throw new Error(message);
90
+ }
91
+ else if (matchingStepBindings.length === 0) {
92
+ throw new Error(`Cannot find matched step definition for ${stepBinding.stepPattern.toString()} with tag ${scenarioContext.scenarioInfo.tags} in binding registry`);
93
+ }
94
+ const contextTypes = bindingRegistry.getContextTypesForTarget(matchingStepBindings[0].targetPrototype);
95
+ const bindingObject = scenarioContext.getOrActivateBindingClass(matchingStepBindings[0].targetPrototype, contextTypes);
96
+ bindingObject._worldObj = this;
97
+ return bindingObject[matchingStepBindings[0].targetPropertyKey].apply(bindingObject, arguments);
98
+ }
99
+ else {
100
+ throw new Error('Unable to find the Scenario Context for Hook!');
101
+ }
102
+ };
103
+ Object.defineProperty(bindingFunc, 'length', {
104
+ value: stepBinding.argsLength
79
105
  });
80
- /**
81
- * Binds a step definition to Cucumber.
82
- *
83
- * @param stepBinding The [[StepBinding]] that represents a 'given', 'when', or 'then' step definition.
84
- */
85
- function bindStepDefinition(stepBinding) {
86
- const bindingFunc = function () {
87
- const bindingRegistry = binding_registry_1.BindingRegistry.instance;
88
- const scenarioContext = message_collector_1.default.getStepScenarioContext(stepBinding);
106
+ // initialize options used on all step bindings
107
+ const options = {
108
+ cucumberKey: stepBinding.cucumberKey,
109
+ timeout: stepBinding.timeout,
110
+ wrapperOptions: stepBinding.wrapperOption
111
+ };
112
+ // call appropriate step
113
+ if (stepBinding.bindingType & step_binding_1.StepBindingFlags.given) {
114
+ (0, cucumber_1.Given)(stepBinding.stepPattern, options, bindingFunc);
115
+ }
116
+ else if (stepBinding.bindingType & step_binding_1.StepBindingFlags.when) {
117
+ (0, cucumber_1.When)(stepBinding.stepPattern, options, bindingFunc);
118
+ }
119
+ else if (stepBinding.bindingType & step_binding_1.StepBindingFlags.then) {
120
+ (0, cucumber_1.Then)(stepBinding.stepPattern, options, bindingFunc);
121
+ }
122
+ }
123
+ /**
124
+ * Binds a hook to Cucumber.
125
+ *
126
+ * @param stepBinding The [[StepBinding]] that represents a 'before', or 'after', step definition.
127
+ */
128
+ function bindHook(stepBinding) {
129
+ const bindingFunc = stepBinding.bindingType == step_binding_1.StepBindingFlags.beforeAll || stepBinding.bindingType == step_binding_1.StepBindingFlags.afterAll
130
+ ? function () {
131
+ return stepBinding.targetPrototype[stepBinding.targetPropertyKey].apply();
132
+ }
133
+ : function (arg) {
134
+ const scenarioContext = message_collector_1.default.getHookScenarioContext(arg);
89
135
  if (scenarioContext) {
90
- const matchingStepBindings = bindingRegistry.getStepBindings(stepBinding.stepPattern.toString(), scenarioContext.scenarioInfo.tags);
91
- if (matchingStepBindings.length > 1) {
92
- let message = `Ambiguous step definitions for '${matchingStepBindings[0].stepPattern}':\n`;
93
- matchingStepBindings.forEach(matchingStepBinding => {
94
- message =
95
- message +
96
- `\t\t${String(matchingStepBinding.targetPropertyKey)} (${matchingStepBinding.callsite.toString()})\n`;
97
- });
98
- throw new Error(message);
99
- }
100
- else if (matchingStepBindings.length === 0) {
101
- throw new Error(`Cannot find matched step definition for ${stepBinding.stepPattern.toString()} with tag ${scenarioContext.scenarioInfo.tags} in binding registry`);
102
- }
103
- const contextTypes = bindingRegistry.getContextTypesForTarget(matchingStepBindings[0].targetPrototype);
104
- const bindingObject = scenarioContext.getOrActivateBindingClass(matchingStepBindings[0].targetPrototype, contextTypes);
136
+ const contextTypes = binding_registry_1.BindingRegistry.instance.getContextTypesForTarget(stepBinding.targetPrototype);
137
+ const bindingObject = scenarioContext.getOrActivateBindingClass(stepBinding.targetPrototype, contextTypes);
105
138
  bindingObject._worldObj = this;
106
- return bindingObject[matchingStepBindings[0].targetPropertyKey].apply(bindingObject, arguments);
139
+ return bindingObject[stepBinding.targetPropertyKey].apply(bindingObject, arguments);
107
140
  }
108
141
  else {
109
142
  throw new Error('Unable to find the Scenario Context for Hook!');
110
143
  }
111
144
  };
112
- Object.defineProperty(bindingFunc, 'length', {
113
- value: stepBinding.argsLength
114
- });
115
- // initialize options used on all step bindings
116
- const options = {
117
- cucumberKey: stepBinding.cucumberKey,
118
- timeout: stepBinding.timeout,
119
- wrapperOptions: stepBinding.wrapperOption
120
- };
121
- // call appropriate step
122
- if (stepBinding.bindingType & step_binding_1.StepBindingFlags.given) {
123
- (0, cucumber_1.Given)(stepBinding.stepPattern, options, bindingFunc);
145
+ Object.defineProperty(bindingFunc, 'length', {
146
+ value: stepBinding.argsLength
147
+ });
148
+ const tags = stepBinding.tags === binding_registry_1.DEFAULT_TAG ? undefined : stepBinding.tags;
149
+ switch (stepBinding.bindingType) {
150
+ case step_binding_1.StepBindingFlags.beforeAll: {
151
+ const options = { cucumberKey: stepBinding.cucumberKey, timeout: stepBinding.timeout };
152
+ (0, cucumber_1.BeforeAll)(options, bindingFunc);
153
+ break;
124
154
  }
125
- else if (stepBinding.bindingType & step_binding_1.StepBindingFlags.when) {
126
- (0, cucumber_1.When)(stepBinding.stepPattern, options, bindingFunc);
155
+ case step_binding_1.StepBindingFlags.before: {
156
+ const options = { cucumberKey: stepBinding.cucumberKey, tags: tags, timeout: stepBinding.timeout };
157
+ (0, cucumber_1.Before)(options, bindingFunc);
158
+ break;
127
159
  }
128
- else if (stepBinding.bindingType & step_binding_1.StepBindingFlags.then) {
129
- (0, cucumber_1.Then)(stepBinding.stepPattern, options, bindingFunc);
160
+ case step_binding_1.StepBindingFlags.beforeStep: {
161
+ const options = { cucumberKey: stepBinding.cucumberKey, tags: tags, timeout: stepBinding.timeout };
162
+ (0, cucumber_1.BeforeStep)(options, bindingFunc);
163
+ break;
130
164
  }
131
- }
132
- /**
133
- * Binds a hook to Cucumber.
134
- *
135
- * @param stepBinding The [[StepBinding]] that represents a 'before', or 'after', step definition.
136
- */
137
- function bindHook(stepBinding) {
138
- const bindingFunc = stepBinding.bindingType == step_binding_1.StepBindingFlags.beforeAll || stepBinding.bindingType == step_binding_1.StepBindingFlags.afterAll
139
- ? function () {
140
- return stepBinding.targetPrototype[stepBinding.targetPropertyKey].apply();
141
- }
142
- : function (arg) {
143
- const scenarioContext = message_collector_1.default.getHookScenarioContext(arg);
144
- if (scenarioContext) {
145
- const contextTypes = binding_registry_1.BindingRegistry.instance.getContextTypesForTarget(stepBinding.targetPrototype);
146
- const bindingObject = scenarioContext.getOrActivateBindingClass(stepBinding.targetPrototype, contextTypes);
147
- bindingObject._worldObj = this;
148
- return bindingObject[stepBinding.targetPropertyKey].apply(bindingObject, arguments);
149
- }
150
- else {
151
- throw new Error('Unable to find the Scenario Context for Hook!');
152
- }
153
- };
154
- Object.defineProperty(bindingFunc, 'length', {
155
- value: stepBinding.argsLength
156
- });
157
- const tags = stepBinding.tags === binding_registry_1.DEFAULT_TAG ? undefined : stepBinding.tags;
158
- switch (stepBinding.bindingType) {
159
- case step_binding_1.StepBindingFlags.beforeAll: {
160
- const options = { cucumberKey: stepBinding.cucumberKey, timeout: stepBinding.timeout };
161
- (0, cucumber_1.BeforeAll)(options, bindingFunc);
162
- break;
163
- }
164
- case step_binding_1.StepBindingFlags.before: {
165
- const options = { cucumberKey: stepBinding.cucumberKey, tags: tags, timeout: stepBinding.timeout };
166
- (0, cucumber_1.Before)(options, bindingFunc);
167
- break;
168
- }
169
- case step_binding_1.StepBindingFlags.beforeStep: {
170
- const options = { cucumberKey: stepBinding.cucumberKey, tags: tags, timeout: stepBinding.timeout };
171
- (0, cucumber_1.BeforeStep)(options, bindingFunc);
172
- break;
173
- }
174
- case step_binding_1.StepBindingFlags.afterAll: {
175
- const options = { cucumberKey: stepBinding.cucumberKey, timeout: stepBinding.timeout };
176
- (0, cucumber_1.AfterAll)(options, bindingFunc);
177
- break;
178
- }
179
- case step_binding_1.StepBindingFlags.after: {
180
- const options = { cucumberKey: stepBinding.cucumberKey, tags: tags, timeout: stepBinding.timeout };
181
- (0, cucumber_1.After)(options, bindingFunc);
182
- break;
183
- }
184
- case step_binding_1.StepBindingFlags.afterStep: {
185
- const options = { cucumberKey: stepBinding.cucumberKey, tags: tags, timeout: stepBinding.timeout };
186
- (0, cucumber_1.AfterStep)(options, bindingFunc);
187
- break;
188
- }
165
+ case step_binding_1.StepBindingFlags.afterAll: {
166
+ const options = { cucumberKey: stepBinding.cucumberKey, timeout: stepBinding.timeout };
167
+ (0, cucumber_1.AfterAll)(options, bindingFunc);
168
+ break;
169
+ }
170
+ case step_binding_1.StepBindingFlags.after: {
171
+ const options = { cucumberKey: stepBinding.cucumberKey, tags: tags, timeout: stepBinding.timeout };
172
+ (0, cucumber_1.After)(options, bindingFunc);
173
+ break;
174
+ }
175
+ case step_binding_1.StepBindingFlags.afterStep: {
176
+ const options = { cucumberKey: stepBinding.cucumberKey, tags: tags, timeout: stepBinding.timeout };
177
+ (0, cucumber_1.AfterStep)(options, bindingFunc);
178
+ break;
189
179
  }
190
180
  }
191
- });
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZy1kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3VjdW1iZXIvYmluZGluZy1kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsdUNBQXVDO0lBQ3ZDLGlEQVc0QjtJQUU1Qix5REFBa0U7SUFDbEUsd0RBQXNFO0lBRXRFLDRFQUFtRDtJQUNuRCxpREFBeUQ7SUFDekQsNERBQTJCO0lBSzNCOzs7Ozs7O09BT0c7SUFDSCxNQUFNLHdCQUF3QixHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO0lBRTFFOzs7Ozs7O09BT0c7SUFDSCxTQUFnQixPQUFPLENBQUMsb0JBQW9DO1FBQzNELE9BQU8sQ0FBSSxNQUFtQyxFQUFFLEVBQUU7WUFDakQsZ0JBQWdCLEVBQUUsQ0FBQztZQUNuQixNQUFNLGVBQWUsR0FBRyxrQ0FBZSxDQUFDLFFBQVEsQ0FBQztZQUNqRCxlQUFlLENBQUMsNkJBQTZCLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3RGLE1BQU0sV0FBVyxHQUFrQixFQUFFLENBQUM7WUFDdEMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3RFLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxlQUFlLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFFaEYsV0FBVyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDakMsSUFBSSxXQUFXLENBQUMsV0FBVyxHQUFHLCtCQUFnQixDQUFDLGVBQWUsRUFBRTtvQkFDL0QsSUFBSSxnQkFBZ0IsR0FBRyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO29CQUN4RixJQUFJLGdCQUFnQixLQUFL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
181
+ }
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZy1kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3VjdW1iZXIvYmluZGluZy1kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsdUNBQXVDO0FBQ3ZDLGlEQVc0QjtBQUU1Qix5REFBa0U7QUFDbEUsd0RBQXNFO0FBRXRFLDRFQUFtRDtBQUNuRCxpREFBeUQ7QUFDekQsNERBQTJCO0FBSzNCOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLHdCQUF3QixHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO0FBRTFFOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixPQUFPLENBQUMsb0JBQW9DO0lBQzNELE9BQU8sQ0FBSSxNQUFtQyxFQUFFLEVBQUU7UUFDakQsZ0JBQWdCLEVBQUUsQ0FBQztRQUNuQixNQUFNLGVBQWUsR0FBRyxrQ0FBZSxDQUFDLFFBQVEsQ0FBQztRQUNqRCxlQUFlLENBQUMsNkJBQTZCLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sV0FBVyxHQUFrQixFQUFFLENBQUM7UUFDdEMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxlQUFlLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFFaEYsV0FBVyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNqQyxJQUFJLFdBQVcsQ0FBQyxXQUFXLEdBQUcsK0JBQWdCLENBQUMsZUFBZSxFQUFFO2dCQUMvRCxJQUFJLGdCQUFnQixHQUFHLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQ3hGLElBQUksZ0JBQWdCLEtBQUssU0FBUyxFQUFF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