@haibun/core 1.24.0 → 1.25.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 (49) hide show
  1. package/build/lib/contexts.d.ts +1 -0
  2. package/build/lib/contexts.js +6 -0
  3. package/build/lib/contexts.js.map +1 -1
  4. package/build/lib/defs.d.ts +4 -1
  5. package/build/lib/defs.js.map +1 -1
  6. package/build/lib/domain.d.ts +3 -2
  7. package/build/lib/domain.js +3 -2
  8. package/build/lib/domain.js.map +1 -1
  9. package/build/lib/namedVars.test.js +2 -2
  10. package/build/lib/namedVars.test.js.map +1 -1
  11. package/build/lib/run-with-options.d.ts +1 -0
  12. package/build/lib/run-with-options.js +3 -1
  13. package/build/lib/run-with-options.js.map +1 -1
  14. package/build/lib/run.domains.test.js +1 -1
  15. package/build/lib/run.domains.test.js.map +1 -1
  16. package/build/lib/run.js +12 -10
  17. package/build/lib/run.js.map +1 -1
  18. package/build/lib/run.test.js +34 -35
  19. package/build/lib/run.test.js.map +1 -1
  20. package/build/lib/test/TestSteps.d.ts +1 -1
  21. package/build/lib/test/TestSteps.js +4 -4
  22. package/build/lib/test/TestSteps.js.map +1 -1
  23. package/build/lib/test/TestStepsWithOptions.d.ts +26 -1
  24. package/build/lib/test/TestStepsWithOptions.js +20 -2
  25. package/build/lib/test/TestStepsWithOptions.js.map +1 -1
  26. package/build/lib/test/lib.js +3 -3
  27. package/build/lib/test/lib.js.map +1 -1
  28. package/build/lib/util/index.d.ts +2 -1
  29. package/build/lib/util/index.js +22 -10
  30. package/build/lib/util/index.js.map +1 -1
  31. package/build/lib/util/util.test.js +51 -2
  32. package/build/lib/util/util.test.js.map +1 -1
  33. package/build/phases/Builder.d.ts +10 -3
  34. package/build/phases/Builder.js +53 -28
  35. package/build/phases/Builder.js.map +1 -1
  36. package/build/phases/Executor.d.ts +1 -1
  37. package/build/phases/Executor.js +11 -11
  38. package/build/phases/Executor.js.map +1 -1
  39. package/build/phases/Resolver.d.ts +9 -5
  40. package/build/phases/Resolver.js +76 -32
  41. package/build/phases/Resolver.js.map +1 -1
  42. package/build/phases/Resolver.test.js +14 -2
  43. package/build/phases/Resolver.test.js.map +1 -1
  44. package/build/steps/haibun.d.ts +17 -5
  45. package/build/steps/haibun.js +29 -2
  46. package/build/steps/haibun.js.map +1 -1
  47. package/build/steps/haibun.test.js +72 -2
  48. package/build/steps/haibun.test.js.map +1 -1
  49. package/package.json +2 -2
@@ -1,21 +1,49 @@
1
1
  import { OK, BASE_TYPES } from '../lib/defs.js';
2
2
  import { namedInterpolation, getMatch } from '../lib/namedVars.js';
3
- import { getActionable, describeSteppers, isLowerCase } from '../lib/util/index.js';
3
+ import { asExpandedFeatures } from '../lib/test/lib.js';
4
+ import { getActionable, describeSteppers, isLowerCase, dePolite } from '../lib/util/index.js';
5
+ import { BUILT, EVENT_AFTER } from './Builder.js';
4
6
  export class Resolver {
5
7
  steppers;
6
8
  world;
7
9
  mode;
8
- constructor(steppers, mode, world) {
10
+ types;
11
+ builder;
12
+ constructor(steppers, world, builder) {
9
13
  this.steppers = steppers;
10
- this.mode = mode;
11
14
  this.world = world;
15
+ this.builder = builder;
16
+ this.types = [...BASE_TYPES, ...this.world.domains.map((d) => d.name)];
12
17
  }
13
- async resolveSteps(features) {
18
+ async applyActionEvents(initialVStep, values) {
19
+ if (!values) {
20
+ return [initialVStep];
21
+ }
22
+ const after = [];
23
+ for (const [k, a] of Object.entries(values)) {
24
+ const { action: actionable, vstep: sourceVStep } = a;
25
+ const [event, domain] = k.split(':');
26
+ if (event !== EVENT_AFTER) {
27
+ continue;
28
+ }
29
+ // FIXME this is a test method
30
+ const expandedFeature = asExpandedFeatures([{ path: sourceVStep.source.path, content: actionable }]);
31
+ const vstep = await this.findVSteps(expandedFeature[0], `event/${event}`, false);
32
+ const { source } = sourceVStep;
33
+ const nv = { ...vstep[0], source, in: actionable };
34
+ if (event === EVENT_AFTER) {
35
+ after.push(nv);
36
+ }
37
+ }
38
+ return [initialVStep, ...after];
39
+ }
40
+ async resolveStepsFromFeatures(features) {
14
41
  const expanded = [];
15
42
  for (const feature of features) {
16
43
  try {
17
- const steps = await this.addSteps(feature);
18
- expanded.push(steps);
44
+ const vsteps = await this.findVSteps(feature, feature.path);
45
+ const e = { ...feature, ...{ vsteps } };
46
+ expanded.push(e);
19
47
  }
20
48
  catch (e) {
21
49
  this.world.logger.error(e);
@@ -24,10 +52,13 @@ export class Resolver {
24
52
  }
25
53
  return expanded;
26
54
  }
27
- async addSteps(feature) {
28
- const vsteps = feature.expanded.map((featureLine, seq) => {
55
+ async findVSteps(feature, path, build = true) {
56
+ let vsteps = [];
57
+ let seq = 0;
58
+ for (const featureLine of feature.expanded) {
59
+ seq++;
29
60
  const actionable = getActionable(featureLine.line);
30
- const actions = this.findSteps(actionable);
61
+ const actions = this.findActionableSteps(actionable);
31
62
  /*
32
63
  try {
33
64
  // FIXME
@@ -39,46 +70,59 @@ export class Resolver {
39
70
  if (actions.length > 1) {
40
71
  throw Error(`more than one step found for "${featureLine.line}": ${JSON.stringify(actions.map((a) => a.actionName))}`);
41
72
  }
42
- else if (actions.length < 1 && this.mode !== 'some') {
73
+ else if (actions.length < 1) {
43
74
  throw Error(`no step found for ${featureLine.line} in ${feature.path} from ${describeSteppers(this.steppers)}`);
44
75
  }
45
- return { source: featureLine.feature, in: featureLine.line, seq, actions };
46
- });
47
- return { ...feature, vsteps };
76
+ const vstep = { source: featureLine.feature, in: featureLine.line, seq, actions };
77
+ if (build) {
78
+ await this.builder?.buildStep(vstep, path, this);
79
+ vsteps = vsteps.concat(await this.applyActionEvents(vstep, this.world.shared.values[BUILT]?.values));
80
+ }
81
+ else {
82
+ vsteps.push(vstep);
83
+ }
84
+ }
85
+ return vsteps;
48
86
  }
49
- static getPrelude = (path, line, featureLine) => `In '${path}', step '${featureLine}' using '${line}':`;
50
- static getTypeValidationError = (prelude, fileType, name, typeValidationError) => `${prelude} Type '${fileType}' doesn't validate for '${name}': ${typeValidationError}`;
51
- static getMoreThanOneInclusionError = (prelude, fileType, name) => `${prelude} more than one '${fileType}' inclusion for '${name}'`;
52
- static getNoFileTypeInclusionError = (prelude, fileType, name) => `${prelude} no '${fileType}' inclusion for '${name}'`;
53
- findSteps(actionable) {
87
+ findActionableSteps(actionable) {
54
88
  if (!actionable.length) {
55
89
  return [comment];
56
90
  }
57
91
  const found = [];
58
- const types = [...BASE_TYPES, ...this.world.domains.map((d) => d.name)];
59
92
  for (const stepper of this.steppers) {
60
93
  const stepperName = stepper.constructor.name;
61
94
  const { steps } = stepper;
62
95
  for (const actionName in steps) {
63
96
  const step = steps[actionName];
64
- const addIfMatch = (m) => m && found.push(m);
65
- if (step.gwta) {
66
- const { str, vars } = namedInterpolation(step.gwta, types);
67
- const f = str.charAt(0);
68
- const s = isLowerCase(f) ? ['[', f, f.toUpperCase(), ']', str.substring(1)].join('') : str;
69
- const r = new RegExp(`^(Given|When|Then|And)?( the )?( I('m)? (am )?)? ?${s}`);
70
- addIfMatch(getMatch(actionable, r, actionName, stepperName, step, vars));
71
- }
72
- else if (step.match) {
73
- addIfMatch(getMatch(actionable, step.match, actionName, stepperName, step));
74
- }
75
- else if (actionable.length > 0 && step.exact === actionable) {
76
- found.push({ actionName, stepperName, step });
97
+ const stepFound = this.choose(step, actionable, actionName, stepperName);
98
+ if (stepFound) {
99
+ found.push(stepFound);
77
100
  }
78
101
  }
79
102
  }
80
103
  return found;
81
104
  }
105
+ choose(step, actionable, actionName, stepperName) {
106
+ const curt = dePolite(actionable);
107
+ if (step.gwta) {
108
+ const { str, vars } = namedInterpolation(step.gwta, this.types);
109
+ const f = str.charAt(0);
110
+ const s = isLowerCase(f) ? ['[', f, f.toUpperCase(), ']', str.substring(1)].join('') : str;
111
+ const r = new RegExp(`^${s}`);
112
+ //const r = new RegExp(`^(Given|When|Then|And)?( the )?( I('m)? (am )?)? ?${s}`);
113
+ return getMatch(curt, r, actionName, stepperName, step, vars);
114
+ }
115
+ else if (step.match) {
116
+ return getMatch(actionable, step.match, actionName, stepperName, step);
117
+ }
118
+ else if (step.exact === curt) {
119
+ return { actionName, stepperName, step };
120
+ }
121
+ }
122
+ /* static getPrelude = (path: string, line: string, featureLine: string) => `In '${path}', step '${featureLine}' using '${line}':`;
123
+ */ static getTypeValidationError = (prelude, fileType, name, typeValidationError) => `${prelude} Type '${fileType}' doesn't validate for '${name}': ${typeValidationError}`;
124
+ static getMoreThanOneInclusionError = (prelude, fileType, name) => `${prelude} more than one '${fileType}' inclusion for '${name}'`;
125
+ static getNoFileTypeInclusionError = (prelude, fileType, name) => `${prelude} no '${fileType}' inclusion for '${name}'`;
82
126
  }
83
127
  const comment = {
84
128
  stepperName: 'Haibun',
@@ -1 +1 @@
1
- {"version":3,"file":"Resolver.js","sourceRoot":"","sources":["../../src/phases/Resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Resolver.js","sourceRoot":"","sources":["../../src/phases/Resolver.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,19 @@
1
1
  import { AStepper, OK } from '../lib/defs.js';
2
2
  import { asExpandedFeatures, getDefaultWorld } from '../lib/test/lib.js';
3
+ import TestSteps from '../lib/test/TestSteps.js';
3
4
  import { createSteppers } from '../lib/util/index.js';
4
5
  import { Resolver } from './Resolver.js';
6
+ describe('resolve steps', () => {
7
+ it('resolves steps', async () => {
8
+ const features = asExpandedFeatures([{ path: 'l1', content: 'Then it passes' }]);
9
+ const steppers = await createSteppers([TestSteps]);
10
+ const resolver = new Resolver(steppers, {
11
+ ...getDefaultWorld(0).world,
12
+ });
13
+ const res = await resolver.resolveStepsFromFeatures(features);
14
+ expect(res.length).toBe(1);
15
+ });
16
+ });
5
17
  describe('validate map steps', () => {
6
18
  class TestStepper extends AStepper {
7
19
  steps = {
@@ -25,10 +37,10 @@ describe('validate map steps', () => {
25
37
  }
26
38
  const getResolvedSteps = async (features) => {
27
39
  const steppers = await createSteppers([TestStepper]);
28
- const resolver = new Resolver(steppers, '', {
40
+ const resolver = new Resolver(steppers, {
29
41
  ...getDefaultWorld(0).world,
30
42
  });
31
- return await resolver.resolveSteps(features);
43
+ return await resolver.resolveStepsFromFeatures(features);
32
44
  };
33
45
  describe('exact', () => {
34
46
  test('exact', async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"Resolver.test.js","sourceRoot":"","sources":["../../src/phases/Resolver.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Resolver.test.js","sourceRoot":"","sources":["../../src/phases/Resolver.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,9 @@
1
- import { TNamed, AStepper } from '../lib/defs.js';
1
+ import { TNamed, AStepper, TWorld, TVStep } from '../lib/defs.js';
2
+ import { Resolver } from '../phases/Resolver.js';
2
3
  declare const Haibun: {
3
4
  new (): {
5
+ steppers: AStepper[];
6
+ setWorld(world: TWorld, steppers: AStepper[]): void;
4
7
  steps: {
5
8
  prose: {
6
9
  gwta: string;
@@ -30,7 +33,16 @@ declare const Haibun: {
30
33
  gwta: string;
31
34
  action: ({ which }: TNamed) => Promise<import("../lib/defs.js").TOKActionResult>;
32
35
  };
33
- forever: {
36
+ afterEvery: {
37
+ gwta: string;
38
+ action: ({ domainID, action }: TNamed) => Promise<import("../lib/defs.js").TOKActionResult>;
39
+ build: ({ domainID, action }: TNamed, vstep: TVStep, workspace: any, resolver: Resolver, steppers: AStepper[]) => Promise<import("../lib/defs.js").TNotOKActionResult | {
40
+ workspace: any;
41
+ ok: true;
42
+ topics?: import("../lib/defs.js").TActionResultTopics;
43
+ }>;
44
+ };
45
+ until: {
34
46
  gwta: string;
35
47
  action: ({ what, value }: TNamed) => Promise<import("../lib/defs.js").TOKActionResult>;
36
48
  };
@@ -43,12 +55,12 @@ declare const Haibun: {
43
55
  action: ({ comment }: TNamed) => Promise<import("../lib/defs.js").TOKActionResult>;
44
56
  };
45
57
  };
46
- world?: import("../lib/defs.js").TWorld;
58
+ findAction: (action: string, resolver: Resolver, steppers: any) => AStepper;
59
+ world?: TWorld;
47
60
  close?(): void;
48
61
  endFeature?(): void;
49
62
  onFailure?(result: import("../lib/defs.js").TStepResult): void;
50
- setWorld(world: import("../lib/defs.js").TWorld, steppers: AStepper[]): void;
51
- getWorld(): import("../lib/defs.js").TWorld;
63
+ getWorld(): TWorld;
52
64
  };
53
65
  };
54
66
  export default Haibun;
@@ -1,6 +1,12 @@
1
1
  import { OK, AStepper } from '../lib/defs.js';
2
- import { actionNotOK, sleep } from '../lib/util/index.js';
2
+ import { actionNotOK, findStepper, sleep } from '../lib/util/index.js';
3
+ import { EVENT_AFTER } from '../phases/Builder.js';
3
4
  const Haibun = class Haibun extends AStepper {
5
+ steppers;
6
+ setWorld(world, steppers) {
7
+ this.steppers = steppers;
8
+ this.world = world;
9
+ }
4
10
  steps = {
5
11
  prose: {
6
12
  gwta: '.*[.?!]$',
@@ -53,7 +59,21 @@ const Haibun = class Haibun extends AStepper {
53
59
  return OK;
54
60
  },
55
61
  },
56
- forever: {
62
+ afterEvery: {
63
+ gwta: 'after every {domainID}, {action}',
64
+ action: async ({ domainID, action }) => {
65
+ return OK;
66
+ },
67
+ build: async ({ domainID, action }, vstep, workspace, resolver, steppers) => {
68
+ const found = await this.findAction(action, resolver, steppers);
69
+ if (found) {
70
+ workspace.set(`${EVENT_AFTER}:${domainID}`, { action, vstep });
71
+ return { ...OK, workspace };
72
+ }
73
+ return actionNotOK(`forEvery: action ${action} not found for ${domainID}`);
74
+ }
75
+ },
76
+ until: {
57
77
  gwta: 'until {what} is {value}',
58
78
  action: async ({ what, value }) => {
59
79
  while (this.getWorld().shared.values[what] !== value) {
@@ -78,6 +98,13 @@ const Haibun = class Haibun extends AStepper {
78
98
  },
79
99
  },
80
100
  };
101
+ findAction = (action, resolver, steppers) => {
102
+ const found = resolver.findActionableSteps(action);
103
+ if (found?.length === 1) {
104
+ return findStepper(steppers, found[0].stepperName);
105
+ }
106
+ return undefined;
107
+ };
81
108
  };
82
109
  export default Haibun;
83
110
  //# sourceMappingURL=haibun.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"haibun.js","sourceRoot":"","sources":["../../src/steps/haibun.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"haibun.js","sourceRoot":"","sources":["../../src/steps/haibun.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,81 @@
1
1
  import { FeatureExecutor } from '../phases/Executor.js';
2
- import { getDefaultWorld, getTestEnv } from '../lib/test/lib.js';
3
- describe('haibun', () => {
2
+ import { asExpandedFeatures, getDefaultWorld, getTestEnv, testWithDefaults } from '../lib/test/lib.js';
3
+ import TestSteps from '../lib/test/TestSteps.js';
4
+ import Haibun from './haibun.js';
5
+ import { AStepper, OK, } from '../lib/defs.js';
6
+ import { createSteppers } from '../lib/util/index.js';
7
+ import { Resolver } from '../phases/Resolver.js';
8
+ import Builder from '../phases/Builder.js';
9
+ describe('prose', () => {
4
10
  it('finds prose', async () => {
5
11
  const { world, vstep, steppers } = await getTestEnv(['haibun'], 'A sentence.', getDefaultWorld(0).world);
6
12
  const res = await FeatureExecutor.doFeatureStep(steppers, vstep, world);
7
13
  expect(res.ok).toBe(true);
8
14
  expect(res.actionResults[0].name).toBe('prose');
9
15
  });
16
+ it('mixed prose', async () => {
17
+ const feature = {
18
+ path: '/features/test.feature',
19
+ content: `Haibun prose allows mixing text descriptions with a functional test.
20
+ When I have a test
21
+ Then it passes
22
+ Prose sections are indicated by the presence of punctuation at the end of paragraphs.`,
23
+ };
24
+ const result = await testWithDefaults([feature], [Haibun, TestSteps]);
25
+ expect(result.ok).toBe(true);
26
+ expect(result.results?.length).toBe(1);
27
+ });
28
+ });
29
+ describe('forEvery', () => {
30
+ class TestStepsWithDomains extends TestSteps {
31
+ domains = [{ name: 'widget', fileType: 'widget', is: 'string', validate: () => undefined }];
32
+ locator = (name) => name;
33
+ }
34
+ it('does not find afterEvery', async () => {
35
+ const feature = { path: '/features/test.feature', content: `After every widget, Then the wtw` };
36
+ const res = await testWithDefaults([feature], [TestStepsWithDomains, Haibun]);
37
+ expect(res.ok).toBe(false);
38
+ expect(res.failure.stage).toBe('Resolve');
39
+ });
40
+ it.only('finds afterEvery', async () => {
41
+ const { world } = getDefaultWorld(0);
42
+ const features = asExpandedFeatures([{ path: '/features/test.feature', content: `After every widget, passes` }]);
43
+ const steppers = await createSteppers([TestStepsWithDomains, Haibun]);
44
+ const builder = new Builder(steppers, world);
45
+ const resolver = new Resolver(steppers, world, builder);
46
+ const res = await resolver.resolveStepsFromFeatures(features);
47
+ expect(res[0].vsteps.length).toBe(2);
48
+ });
49
+ it('finds afterEvery and passes', async () => {
50
+ const feature = { path: '/features/test.feature', content: `After every widget, passes` };
51
+ const res = await testWithDefaults([feature], [TestStepsWithDomains, Haibun]);
52
+ expect(res.ok).toBe(true);
53
+ });
54
+ it('finds afterEvery and fails', async () => {
55
+ const feature = { path: '/features/test.feature', content: `After every widget, fails` };
56
+ const res = await testWithDefaults([feature], [TestStepsWithDomains, Haibun]);
57
+ expect(res.ok).toBe(false);
58
+ expect(res.failure.stage).toBe('Execute');
59
+ });
60
+ it('calls event', async () => {
61
+ const feature = { path: '/features/test.feature', content: `After every widget, passes` };
62
+ let s = 0;
63
+ class TestSetsVar extends AStepper {
64
+ domains = [{ name: 'widget', fileType: 'widget', is: 'string', validate: () => undefined }];
65
+ locator = (name) => name;
66
+ steps = {
67
+ passes: {
68
+ exact: 'passes',
69
+ action: async () => {
70
+ s = 2;
71
+ return OK;
72
+ }
73
+ }
74
+ };
75
+ }
76
+ const res = await testWithDefaults([feature], [TestSetsVar, Haibun]);
77
+ expect(res.ok).toBe(true);
78
+ expect(s).toBe(2);
79
+ });
10
80
  });
11
81
  //# sourceMappingURL=haibun.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"haibun.test.js","sourceRoot":"","sources":["../../src/steps/haibun.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEjE,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC3B,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACzG,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAExE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"haibun.test.js","sourceRoot":"","sources":["../../src/steps/haibun.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@haibun/core",
3
3
  "type": "module",
4
- "version": "1.24.0",
4
+ "version": "1.25.0",
5
5
  "description": "",
6
6
  "author": "",
7
7
  "xexports": {
@@ -31,4 +31,4 @@
31
31
  "preversion": "npm run lint"
32
32
  },
33
33
  "gitHead": "7cf9680bd922fb622fb59f1e6bf5b65284cb8fd5"
34
- }
34
+ }