@react-native-harness/runtime 1.0.0-alpha.1 → 1.0.0-alpha.3

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 (72) hide show
  1. package/dist/bundler/bundle.d.ts.map +1 -1
  2. package/dist/bundler/bundle.js +6 -1
  3. package/dist/bundler/errors.d.ts +5 -0
  4. package/dist/bundler/errors.d.ts.map +1 -1
  5. package/dist/bundler/errors.js +10 -0
  6. package/dist/mocker/registry.d.ts +2 -2
  7. package/dist/mocker/registry.d.ts.map +1 -1
  8. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  9. package/package.json +2 -2
  10. package/src/bundler/bundle.ts +8 -1
  11. package/src/bundler/errors.ts +10 -0
  12. package/src/mocker/registry.ts +3 -3
  13. package/dist/bundler/dev-server.d.ts +0 -2
  14. package/dist/bundler/dev-server.d.ts.map +0 -1
  15. package/dist/bundler/dev-server.js +0 -5
  16. package/dist/exports.d.ts +0 -7
  17. package/dist/exports.d.ts.map +0 -1
  18. package/dist/exports.js +0 -6
  19. package/dist/getEntryComponent.d.ts +0 -6
  20. package/dist/getEntryComponent.d.ts.map +0 -1
  21. package/dist/getEntryComponent.js +0 -6
  22. package/dist/logger.d.ts +0 -6
  23. package/dist/logger.d.ts.map +0 -1
  24. package/dist/logger.js +0 -14
  25. package/dist/mock.d.ts +0 -15
  26. package/dist/mock.d.ts.map +0 -1
  27. package/dist/mock.js +0 -37
  28. package/dist/module.d.ts +0 -3
  29. package/dist/module.d.ts.map +0 -1
  30. package/dist/module.js +0 -19
  31. package/dist/module.web.d.ts +0 -2
  32. package/dist/module.web.d.ts.map +0 -1
  33. package/dist/module.web.js +0 -12
  34. package/dist/rntl/client.d.ts +0 -3
  35. package/dist/rntl/client.d.ts.map +0 -1
  36. package/dist/rntl/client.js +0 -8
  37. package/dist/rntl/describe.d.ts +0 -2
  38. package/dist/rntl/describe.d.ts.map +0 -1
  39. package/dist/rntl/describe.js +0 -1
  40. package/dist/rntl/expect.d.ts +0 -128
  41. package/dist/rntl/expect.d.ts.map +0 -1
  42. package/dist/rntl/expect.js +0 -670
  43. package/dist/rntl/fn.d.ts +0 -2
  44. package/dist/rntl/fn.d.ts.map +0 -1
  45. package/dist/rntl/fn.js +0 -1
  46. package/dist/rntl/mock.d.ts +0 -2
  47. package/dist/rntl/mock.d.ts.map +0 -1
  48. package/dist/rntl/mock.js +0 -1
  49. package/dist/rntl/render.d.ts +0 -4
  50. package/dist/rntl/render.d.ts.map +0 -1
  51. package/dist/rntl/render.js +0 -11
  52. package/dist/rntl/screen.d.ts +0 -45
  53. package/dist/rntl/screen.d.ts.map +0 -1
  54. package/dist/rntl/screen.js +0 -31
  55. package/dist/rntl/spies.d.ts +0 -45
  56. package/dist/rntl/spies.d.ts.map +0 -1
  57. package/dist/rntl/spies.js +0 -553
  58. package/dist/rntl/userEvent.d.ts +0 -22
  59. package/dist/rntl/userEvent.d.ts.map +0 -1
  60. package/dist/rntl/userEvent.js +0 -19
  61. package/dist/runner.d.ts +0 -7
  62. package/dist/runner.d.ts.map +0 -1
  63. package/dist/runner.js +0 -201
  64. package/dist/runtime.d.ts +0 -2
  65. package/dist/runtime.d.ts.map +0 -1
  66. package/dist/runtime.js +0 -44
  67. package/dist/state.d.ts +0 -25
  68. package/dist/state.d.ts.map +0 -1
  69. package/dist/state.js +0 -37
  70. package/dist/ui/UI.d.ts +0 -13
  71. package/dist/ui/UI.d.ts.map +0 -1
  72. package/dist/ui/UI.js +0 -121
package/dist/mock.js DELETED
@@ -1,37 +0,0 @@
1
- const mockRegistry = new Map();
2
- const mockCache = new Map();
3
- const originalRequire = global.__r;
4
- export const mock = (moduleId, factory) => {
5
- mockCache.delete(moduleId);
6
- mockRegistry.set(moduleId, factory);
7
- };
8
- export const clearMocks = () => {
9
- mockRegistry.clear();
10
- mockCache.clear();
11
- };
12
- export const getMockRegistry = () => {
13
- return mockRegistry;
14
- };
15
- export const getMockImplementation = (moduleId) => {
16
- if (mockCache.has(moduleId)) {
17
- return mockCache.get(moduleId);
18
- }
19
- const factory = mockRegistry.get(moduleId);
20
- if (!factory) {
21
- return null;
22
- }
23
- const implementation = factory();
24
- mockCache.set(moduleId, implementation);
25
- return implementation;
26
- };
27
- export const requireActual = (moduleId) => originalRequire(moduleId);
28
- const mockRequire = (moduleId) => {
29
- const mockedModule = getMockImplementation(moduleId);
30
- if (mockedModule) {
31
- return mockedModule;
32
- }
33
- return originalRequire(moduleId);
34
- };
35
- Object.setPrototypeOf(mockRequire, Object.getPrototypeOf(originalRequire));
36
- Object.defineProperties(mockRequire, Object.getOwnPropertyDescriptors(originalRequire));
37
- global.__r = mockRequire;
package/dist/module.d.ts DELETED
@@ -1,3 +0,0 @@
1
- export declare const fetchModule: (fileName: string) => Promise<string>;
2
- export declare const executeModule: (moduleJs: string) => void;
3
- //# sourceMappingURL=module.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,WAAW,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,CAIlE,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,UAAU,MAAM,KAAG,IAQhD,CAAC"}
package/dist/module.js DELETED
@@ -1,19 +0,0 @@
1
- import { Platform } from 'react-native';
2
- const METRO_URL = 'http://localhost:8081';
3
- const getModuleUrl = (fileName) => {
4
- const bundleName = fileName.split('.').slice(0, -1).join('.') + '.bundle';
5
- return `${METRO_URL}/${bundleName}?modulesOnly=true&platform=${Platform.OS}`;
6
- };
7
- export const fetchModule = async (fileName) => {
8
- const url = getModuleUrl(fileName);
9
- const response = await fetch(url);
10
- return response.text();
11
- };
12
- export const executeModule = (moduleJs) => {
13
- const __rMatch = moduleJs.match(/__r\((\d+)\)/);
14
- const __rParam = __rMatch[1];
15
- // eslint-disable-next-line no-eval
16
- eval(moduleJs);
17
- // @ts-ignore - __r is injected by Metro bundler
18
- __r(Number(__rParam));
19
- };
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=module.web.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"module.web.d.ts","sourceRoot":"","sources":["../src/module.web.ts"],"names":[],"mappings":""}
@@ -1,12 +0,0 @@
1
- // const context = require.context('../..', false, /\.test.tsx$/);
2
- export {};
3
- // export const fetchModule = async (fileName: string): Promise<string> => {
4
- // return fileName;
5
- // };
6
- // export const executeModule = (moduleJs: string): void => {
7
- // const modulePath = `./${moduleJs}`;
8
- // if (!context.keys().includes(modulePath)) {
9
- // throw new Error(`Module ${moduleJs} not found`);
10
- // }
11
- // return context(modulePath);
12
- // };
@@ -1,3 +0,0 @@
1
- import { BridgeClient } from '@react-native-harness/bridge/client';
2
- export declare const getClient: () => BridgeClient;
3
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/rntl/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAGnE,eAAO,MAAM,SAAS,QAAO,YAU5B,CAAC"}
@@ -1,8 +0,0 @@
1
- import { state } from '../state.js';
2
- export const getClient = () => {
3
- const client = state.getState().client;
4
- if (!client) {
5
- throw new Error('Client not found. Are you sure you are running the test in the react-native-harness environment?');
6
- }
7
- return client;
8
- };
@@ -1,2 +0,0 @@
1
- export { describe, test, it } from '../collector/functions.js';
2
- //# sourceMappingURL=describe.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"describe.d.ts","sourceRoot":"","sources":["../../src/rntl/describe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1 +0,0 @@
1
- export { describe, test, it } from '../collector/functions.js';
@@ -1,128 +0,0 @@
1
- declare const ASYMMETRIC_MATCHER: unique symbol;
2
- interface AsymmetricMatcher {
3
- [ASYMMETRIC_MATCHER]: true;
4
- asymmetricMatch(other: unknown): boolean;
5
- toString(): string;
6
- }
7
- declare class AnythingMatcher implements AsymmetricMatcher {
8
- [ASYMMETRIC_MATCHER]: true;
9
- asymmetricMatch(other: unknown): boolean;
10
- toString(): string;
11
- }
12
- declare class AnyMatcher implements AsymmetricMatcher {
13
- private expectedType;
14
- [ASYMMETRIC_MATCHER]: true;
15
- constructor(expectedType: new (...args: unknown[]) => unknown);
16
- asymmetricMatch(other: unknown): boolean;
17
- toString(): string;
18
- }
19
- declare class ArrayContainingMatcher implements AsymmetricMatcher {
20
- private expectedArray;
21
- [ASYMMETRIC_MATCHER]: true;
22
- constructor(expectedArray: unknown[]);
23
- asymmetricMatch(other: unknown): boolean;
24
- toString(): string;
25
- }
26
- declare class ObjectContainingMatcher implements AsymmetricMatcher {
27
- private expectedObject;
28
- [ASYMMETRIC_MATCHER]: true;
29
- constructor(expectedObject: Record<string, unknown>);
30
- asymmetricMatch(other: unknown): boolean;
31
- toString(): string;
32
- }
33
- declare class StringContainingMatcher implements AsymmetricMatcher {
34
- private expectedString;
35
- [ASYMMETRIC_MATCHER]: true;
36
- constructor(expectedString: string);
37
- asymmetricMatch(other: unknown): boolean;
38
- toString(): string;
39
- }
40
- declare class StringMatchingMatcher implements AsymmetricMatcher {
41
- private expectedPattern;
42
- [ASYMMETRIC_MATCHER]: true;
43
- constructor(expectedPattern: string | RegExp);
44
- asymmetricMatch(other: unknown): boolean;
45
- toString(): string;
46
- }
47
- declare class ArrayOfMatcher implements AsymmetricMatcher {
48
- private expectedValue;
49
- [ASYMMETRIC_MATCHER]: true;
50
- constructor(expectedValue: unknown);
51
- asymmetricMatch(other: unknown): boolean;
52
- toString(): string;
53
- }
54
- declare class CloseToMatcher implements AsymmetricMatcher {
55
- private expectedNumber;
56
- private numDigits;
57
- [ASYMMETRIC_MATCHER]: true;
58
- constructor(expectedNumber: number, numDigits?: number);
59
- asymmetricMatch(other: unknown): boolean;
60
- toString(): string;
61
- }
62
- declare class NotMatcher implements AsymmetricMatcher {
63
- private innerMatcher;
64
- [ASYMMETRIC_MATCHER]: true;
65
- constructor(innerMatcher: AsymmetricMatcher);
66
- asymmetricMatch(other: unknown): boolean;
67
- toString(): string;
68
- }
69
- interface Matchers {
70
- toBe(expected: unknown): void;
71
- toEqual(expected: unknown): void;
72
- toStrictEqual(expected: unknown): void;
73
- toBeTruthy(): void;
74
- toBeFalsy(): void;
75
- toBeNull(): void;
76
- toBeUndefined(): void;
77
- toBeDefined(): void;
78
- toBeInstanceOf(expected: new (...args: unknown[]) => unknown): void;
79
- toContain(expected: unknown): void;
80
- toContainEqual(expected: unknown): void;
81
- toHaveLength(expected: number): void;
82
- toHaveProperty(keyPath: string | string[], value?: unknown): void;
83
- toBeCloseTo(expected: number, numDigits?: number): void;
84
- toBeGreaterThan(expected: number | bigint): void;
85
- toBeGreaterThanOrEqual(expected: number | bigint): void;
86
- toBeLessThan(expected: number | bigint): void;
87
- toBeLessThanOrEqual(expected: number | bigint): void;
88
- toBeNaN(): void;
89
- toMatch(expected: string | RegExp): void;
90
- toMatchObject(expected: Record<string, unknown>): void;
91
- toThrow(expected?: string | RegExp | Error): void;
92
- toHaveBeenCalled(): void;
93
- toHaveBeenCalledTimes(expected: number): void;
94
- toHaveBeenCalledWith(...expected: unknown[]): void;
95
- toHaveBeenLastCalledWith(...expected: unknown[]): void;
96
- toHaveBeenNthCalledWith(nthCall: number, ...expected: unknown[]): void;
97
- toHaveReturned(): void;
98
- toHaveReturnedTimes(expected: number): void;
99
- toHaveReturnedWith(expected: unknown): void;
100
- toHaveLastReturnedWith(expected: unknown): void;
101
- toHaveNthReturnedWith(nthCall: number, expected: unknown): void;
102
- }
103
- interface ExpectResult extends Matchers {
104
- not: Matchers;
105
- }
106
- export declare const asymmetricMatchers: {
107
- anything: () => AnythingMatcher;
108
- any: (expectedType: new (...args: unknown[]) => unknown) => AnyMatcher;
109
- arrayContaining: (expectedArray: unknown[]) => ArrayContainingMatcher;
110
- objectContaining: (expectedObject: Record<string, unknown>) => ObjectContainingMatcher;
111
- stringContaining: (expectedString: string) => StringContainingMatcher;
112
- stringMatching: (expectedPattern: string | RegExp) => StringMatchingMatcher;
113
- arrayOf: (expectedValue: unknown) => ArrayOfMatcher;
114
- closeTo: (expectedNumber: number, numDigits?: number) => CloseToMatcher;
115
- not: {
116
- arrayContaining: (expectedArray: unknown[]) => NotMatcher;
117
- objectContaining: (expectedObject: Record<string, unknown>) => NotMatcher;
118
- stringContaining: (expectedString: string) => NotMatcher;
119
- stringMatching: (expectedPattern: string | RegExp) => NotMatcher;
120
- arrayOf: (expectedValue: unknown) => NotMatcher;
121
- };
122
- };
123
- type ExpectStatic = {
124
- (actual: unknown): ExpectResult;
125
- } & typeof asymmetricMatchers;
126
- export declare const expect: ExpectStatic;
127
- export {};
128
- //# sourceMappingURL=expect.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"expect.d.ts","sourceRoot":"","sources":["../../src/rntl/expect.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,kBAAkB,eAA+B,CAAC;AAExD,UAAU,iBAAiB;IACzB,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC;IAC3B,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IACzC,QAAQ,IAAI,MAAM,CAAC;CACpB;AAGD,cAAM,eAAgB,YAAW,iBAAiB;IAChD,CAAC,kBAAkB,CAAC,EAAG,IAAI,CAAU;IAErC,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAIxC,QAAQ,IAAI,MAAM;CAGnB;AAED,cAAM,UAAW,YAAW,iBAAiB;IAG/B,OAAO,CAAC,YAAY;IAFhC,CAAC,kBAAkB,CAAC,EAAG,IAAI,CAAU;gBAEjB,YAAY,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO;IAErE,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAqBxC,QAAQ,IAAI,MAAM;CAGnB;AAED,cAAM,sBAAuB,YAAW,iBAAiB;IAG3C,OAAO,CAAC,aAAa;IAFjC,CAAC,kBAAkB,CAAC,EAAG,IAAI,CAAU;gBAEjB,aAAa,EAAE,OAAO,EAAE;IAE5C,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAYxC,QAAQ,IAAI,MAAM;CAKnB;AAED,cAAM,uBAAwB,YAAW,iBAAiB;IAG5C,OAAO,CAAC,cAAc;IAFlC,CAAC,kBAAkB,CAAC,EAAG,IAAI,CAAU;gBAEjB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE3D,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAYxC,QAAQ,IAAI,MAAM;CAGnB;AAED,cAAM,uBAAwB,YAAW,iBAAiB;IAG5C,OAAO,CAAC,cAAc;IAFlC,CAAC,kBAAkB,CAAC,EAAG,IAAI,CAAU;gBAEjB,cAAc,EAAE,MAAM;IAE1C,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAIxC,QAAQ,IAAI,MAAM;CAGnB;AAED,cAAM,qBAAsB,YAAW,iBAAiB;IAG1C,OAAO,CAAC,eAAe;IAFnC,CAAC,kBAAkB,CAAC,EAAG,IAAI,CAAU;gBAEjB,eAAe,EAAE,MAAM,GAAG,MAAM;IAEpD,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAYxC,QAAQ,IAAI,MAAM;CAGnB;AAED,cAAM,cAAe,YAAW,iBAAiB;IAGnC,OAAO,CAAC,aAAa;IAFjC,CAAC,kBAAkB,CAAC,EAAG,IAAI,CAAU;gBAEjB,aAAa,EAAE,OAAO;IAE1C,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAUxC,QAAQ,IAAI,MAAM;CAGnB;AAED,cAAM,cAAe,YAAW,iBAAiB;IAGnC,OAAO,CAAC,cAAc;IAAU,OAAO,CAAC,SAAS;IAF7D,CAAC,kBAAkB,CAAC,EAAG,IAAI,CAAU;gBAEjB,cAAc,EAAE,MAAM,EAAU,SAAS,SAAI;IAEjE,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAWxC,QAAQ,IAAI,MAAM;CAGnB;AAED,cAAM,UAAW,YAAW,iBAAiB;IAG/B,OAAO,CAAC,YAAY;IAFhC,CAAC,kBAAkB,CAAC,EAAG,IAAI,CAAU;gBAEjB,YAAY,EAAE,iBAAiB;IAEnD,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAIxC,QAAQ,IAAI,MAAM;CAGnB;AAmBD,UAAU,QAAQ;IAChB,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACvC,UAAU,IAAI,IAAI,CAAC;IACnB,SAAS,IAAI,IAAI,CAAC;IAClB,QAAQ,IAAI,IAAI,CAAC;IACjB,aAAa,IAAI,IAAI,CAAC;IACtB,WAAW,IAAI,IAAI,CAAC;IACpB,cAAc,CAAC,QAAQ,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,GAAG,IAAI,CAAC;IACpE,SAAS,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACxC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAClE,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxD,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACjD,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACxD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC9C,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACrD,OAAO,IAAI,IAAI,CAAC;IAChB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACzC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACvD,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;IAClD,gBAAgB,IAAI,IAAI,CAAC;IACzB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,oBAAoB,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACnD,wBAAwB,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACvD,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACvE,cAAc,IAAI,IAAI,CAAC;IACvB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,sBAAsB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IAChD,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;CACjE;AAED,UAAU,YAAa,SAAQ,QAAQ;IACrC,GAAG,EAAE,QAAQ,CAAC;CACf;AAimBD,eAAO,MAAM,kBAAkB;;wBAET,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO;qCAEtB,OAAO,EAAE;uCAEP,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;uCAEvB,MAAM;sCAEP,MAAM,GAAG,MAAM;6BAExB,OAAO;8BACN,MAAM,cAAc,MAAM;;yCAGjB,OAAO,EAAE;2CAEP,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;2CAEvB,MAAM;0CAEP,MAAM,GAAG,MAAM;iCAExB,OAAO;;CAGnC,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,CAAC,MAAM,EAAE,OAAO,GAAG,YAAY,CAAC;CACjC,GAAG,OAAO,kBAAkB,CAAC;AAY9B,eAAO,MAAM,MAAM,EAAe,YAAY,CAAC"}