@taskmagic/apps-plausible 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/package.json +47 -0
- package/src/index.d.ts +2 -0
- package/src/index.js +97 -0
- package/src/index.js.map +1 -0
- package/src/lib/actions/create-custom-property.d.ts +4 -0
- package/src/lib/actions/create-custom-property.js +37 -0
- package/src/lib/actions/create-custom-property.js.map +1 -0
- package/src/lib/actions/create-goal.d.ts +7 -0
- package/src/lib/actions/create-goal.js +72 -0
- package/src/lib/actions/create-goal.js.map +1 -0
- package/src/lib/actions/create-shared-link.d.ts +4 -0
- package/src/lib/actions/create-shared-link.js +37 -0
- package/src/lib/actions/create-shared-link.js.map +1 -0
- package/src/lib/actions/create-site.d.ts +10 -0
- package/src/lib/actions/create-site.js +100 -0
- package/src/lib/actions/create-site.js.map +1 -0
- package/src/lib/actions/delete-custom-property.d.ts +4 -0
- package/src/lib/actions/delete-custom-property.js +32 -0
- package/src/lib/actions/delete-custom-property.js.map +1 -0
- package/src/lib/actions/delete-goal.d.ts +4 -0
- package/src/lib/actions/delete-goal.js +32 -0
- package/src/lib/actions/delete-goal.js.map +1 -0
- package/src/lib/actions/delete-site.d.ts +3 -0
- package/src/lib/actions/delete-site.js +28 -0
- package/src/lib/actions/delete-site.js.map +1 -0
- package/src/lib/actions/get-aggregate-stats.action.d.ts +5 -0
- package/src/lib/actions/get-aggregate-stats.action.js +63 -0
- package/src/lib/actions/get-aggregate-stats.action.js.map +1 -0
- package/src/lib/actions/get-breakdown.action.d.ts +6 -0
- package/src/lib/actions/get-breakdown.action.js +64 -0
- package/src/lib/actions/get-breakdown.action.js.map +1 -0
- package/src/lib/actions/get-realtime-visitors.action.d.ts +3 -0
- package/src/lib/actions/get-realtime-visitors.action.js +29 -0
- package/src/lib/actions/get-realtime-visitors.action.js.map +1 -0
- package/src/lib/actions/get-site.d.ts +3 -0
- package/src/lib/actions/get-site.js +28 -0
- package/src/lib/actions/get-site.js.map +1 -0
- package/src/lib/actions/invite-guest.d.ts +5 -0
- package/src/lib/actions/invite-guest.js +49 -0
- package/src/lib/actions/invite-guest.js.map +1 -0
- package/src/lib/actions/list-custom-properties.d.ts +3 -0
- package/src/lib/actions/list-custom-properties.js +23 -0
- package/src/lib/actions/list-custom-properties.js.map +1 -0
- package/src/lib/actions/list-goals.d.ts +3 -0
- package/src/lib/actions/list-goals.js +23 -0
- package/src/lib/actions/list-goals.js.map +1 -0
- package/src/lib/actions/list-guests.d.ts +3 -0
- package/src/lib/actions/list-guests.js +23 -0
- package/src/lib/actions/list-guests.js.map +1 -0
- package/src/lib/actions/list-sites.d.ts +1 -0
- package/src/lib/actions/list-sites.js +21 -0
- package/src/lib/actions/list-sites.js.map +1 -0
- package/src/lib/actions/list-teams.d.ts +1 -0
- package/src/lib/actions/list-teams.js +21 -0
- package/src/lib/actions/list-teams.js.map +1 -0
- package/src/lib/actions/remove-guest.d.ts +4 -0
- package/src/lib/actions/remove-guest.js +32 -0
- package/src/lib/actions/remove-guest.js.map +1 -0
- package/src/lib/actions/update-site.d.ts +9 -0
- package/src/lib/actions/update-site.js +89 -0
- package/src/lib/actions/update-site.js.map +1 -0
- package/src/lib/common/index.d.ts +40 -0
- package/src/lib/common/index.js +223 -0
- package/src/lib/common/index.js.map +1 -0
- package/src/lib/triggers/traffic-spike.trigger.d.ts +11 -0
- package/src/lib/triggers/traffic-spike.trigger.js +67 -0
- package/src/lib/triggers/traffic-spike.trigger.js.map +1 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { HttpMethod } from '@taskmagic/pieces-common';
|
|
2
|
+
export declare const plausibleCommon: {
|
|
3
|
+
baseUrl: string;
|
|
4
|
+
};
|
|
5
|
+
export declare function plausibleApiCall<T>({ apiKey, method, endpoint, body, queryParams, }: {
|
|
6
|
+
apiKey: string;
|
|
7
|
+
method: HttpMethod;
|
|
8
|
+
endpoint: string;
|
|
9
|
+
body?: unknown;
|
|
10
|
+
queryParams?: Record<string, string>;
|
|
11
|
+
}): Promise<T>;
|
|
12
|
+
export declare function getSites(apiKey: string): Promise<{
|
|
13
|
+
domain: string;
|
|
14
|
+
timezone: string;
|
|
15
|
+
}[]>;
|
|
16
|
+
export declare const siteIdDropdown: import("@taskmagic/pieces-framework").DropdownProperty<string, true>;
|
|
17
|
+
export declare function getTeams(apiKey: string): Promise<{
|
|
18
|
+
id: string;
|
|
19
|
+
name: string;
|
|
20
|
+
api_available: boolean;
|
|
21
|
+
}[]>;
|
|
22
|
+
export declare const teamIdDropdown: import("@taskmagic/pieces-framework").DropdownProperty<string, false>;
|
|
23
|
+
export declare function getGoals(apiKey: string, siteId: string): Promise<{
|
|
24
|
+
id: string;
|
|
25
|
+
goal_type: string;
|
|
26
|
+
display_name: string;
|
|
27
|
+
event_name: string | null;
|
|
28
|
+
page_path: string | null;
|
|
29
|
+
}[]>;
|
|
30
|
+
export declare const goalIdDropdown: import("@taskmagic/pieces-framework").DropdownProperty<string, true>;
|
|
31
|
+
export declare function getCustomProperties(apiKey: string, siteId: string): Promise<{
|
|
32
|
+
property: string;
|
|
33
|
+
}[]>;
|
|
34
|
+
export declare const customPropertyDropdown: import("@taskmagic/pieces-framework").DropdownProperty<string, true>;
|
|
35
|
+
export declare function getGuests(apiKey: string, siteId: string): Promise<{
|
|
36
|
+
email: string;
|
|
37
|
+
role: string;
|
|
38
|
+
status: string;
|
|
39
|
+
}[]>;
|
|
40
|
+
export declare const guestEmailDropdown: import("@taskmagic/pieces-framework").DropdownProperty<string, true>;
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.guestEmailDropdown = exports.customPropertyDropdown = exports.goalIdDropdown = exports.teamIdDropdown = exports.siteIdDropdown = exports.plausibleCommon = void 0;
|
|
4
|
+
exports.plausibleApiCall = plausibleApiCall;
|
|
5
|
+
exports.getSites = getSites;
|
|
6
|
+
exports.getTeams = getTeams;
|
|
7
|
+
exports.getGoals = getGoals;
|
|
8
|
+
exports.getCustomProperties = getCustomProperties;
|
|
9
|
+
exports.getGuests = getGuests;
|
|
10
|
+
const tslib_1 = require("tslib");
|
|
11
|
+
const pieces_common_1 = require("@taskmagic/pieces-common");
|
|
12
|
+
const pieces_framework_1 = require("@taskmagic/pieces-framework");
|
|
13
|
+
exports.plausibleCommon = {
|
|
14
|
+
baseUrl: 'https://plausible.io/api/v1',
|
|
15
|
+
};
|
|
16
|
+
function plausibleApiCall(_a) {
|
|
17
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ apiKey, method, endpoint, body, queryParams, }) {
|
|
18
|
+
const request = {
|
|
19
|
+
url: `${exports.plausibleCommon.baseUrl}${endpoint}`,
|
|
20
|
+
method,
|
|
21
|
+
authentication: {
|
|
22
|
+
type: pieces_common_1.AuthenticationType.BEARER_TOKEN,
|
|
23
|
+
token: apiKey,
|
|
24
|
+
},
|
|
25
|
+
body,
|
|
26
|
+
queryParams,
|
|
27
|
+
};
|
|
28
|
+
const response = yield pieces_common_1.httpClient.sendRequest(request);
|
|
29
|
+
return response.body;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function getSites(apiKey) {
|
|
33
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
const response = yield plausibleApiCall({
|
|
35
|
+
apiKey,
|
|
36
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
37
|
+
endpoint: '/sites',
|
|
38
|
+
});
|
|
39
|
+
return response.sites;
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
exports.siteIdDropdown = pieces_framework_1.Property.Dropdown({
|
|
43
|
+
displayName: 'Site',
|
|
44
|
+
description: 'Select a site',
|
|
45
|
+
required: true,
|
|
46
|
+
refreshers: [],
|
|
47
|
+
options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
|
|
48
|
+
if (!auth) {
|
|
49
|
+
return {
|
|
50
|
+
disabled: true,
|
|
51
|
+
placeholder: 'Connect your account first',
|
|
52
|
+
options: [],
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
const sites = yield getSites(auth);
|
|
56
|
+
return {
|
|
57
|
+
disabled: false,
|
|
58
|
+
options: sites.map((site) => ({
|
|
59
|
+
label: site.domain,
|
|
60
|
+
value: site.domain,
|
|
61
|
+
})),
|
|
62
|
+
};
|
|
63
|
+
}),
|
|
64
|
+
});
|
|
65
|
+
function getTeams(apiKey) {
|
|
66
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
67
|
+
const response = yield plausibleApiCall({
|
|
68
|
+
apiKey,
|
|
69
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
70
|
+
endpoint: '/sites/teams',
|
|
71
|
+
});
|
|
72
|
+
return response.teams;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
exports.teamIdDropdown = pieces_framework_1.Property.Dropdown({
|
|
76
|
+
displayName: 'Team',
|
|
77
|
+
description: 'Select a team',
|
|
78
|
+
required: false,
|
|
79
|
+
refreshers: [],
|
|
80
|
+
options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
|
|
81
|
+
if (!auth) {
|
|
82
|
+
return {
|
|
83
|
+
disabled: true,
|
|
84
|
+
placeholder: 'Connect your account first',
|
|
85
|
+
options: [],
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
const teams = yield getTeams(auth);
|
|
89
|
+
return {
|
|
90
|
+
disabled: false,
|
|
91
|
+
options: teams
|
|
92
|
+
.filter((team) => team.api_available)
|
|
93
|
+
.map((team) => ({
|
|
94
|
+
label: team.name,
|
|
95
|
+
value: team.id,
|
|
96
|
+
})),
|
|
97
|
+
};
|
|
98
|
+
}),
|
|
99
|
+
});
|
|
100
|
+
function getGoals(apiKey, siteId) {
|
|
101
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
102
|
+
const response = yield plausibleApiCall({
|
|
103
|
+
apiKey,
|
|
104
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
105
|
+
endpoint: '/sites/goals',
|
|
106
|
+
queryParams: { site_id: siteId },
|
|
107
|
+
});
|
|
108
|
+
return response.goals;
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
exports.goalIdDropdown = pieces_framework_1.Property.Dropdown({
|
|
112
|
+
displayName: 'Goal',
|
|
113
|
+
description: 'Select a goal',
|
|
114
|
+
required: true,
|
|
115
|
+
refreshers: ['site_id'],
|
|
116
|
+
options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth, site_id }) {
|
|
117
|
+
if (!auth) {
|
|
118
|
+
return {
|
|
119
|
+
disabled: true,
|
|
120
|
+
placeholder: 'Connect your account first',
|
|
121
|
+
options: [],
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
if (!site_id) {
|
|
125
|
+
return {
|
|
126
|
+
disabled: true,
|
|
127
|
+
placeholder: 'Select a site first',
|
|
128
|
+
options: [],
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
const goals = yield getGoals(auth, site_id);
|
|
132
|
+
return {
|
|
133
|
+
disabled: false,
|
|
134
|
+
options: goals.map((goal) => ({
|
|
135
|
+
label: goal.display_name,
|
|
136
|
+
value: goal.id,
|
|
137
|
+
})),
|
|
138
|
+
};
|
|
139
|
+
}),
|
|
140
|
+
});
|
|
141
|
+
function getCustomProperties(apiKey, siteId) {
|
|
142
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
143
|
+
const response = yield plausibleApiCall({
|
|
144
|
+
apiKey,
|
|
145
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
146
|
+
endpoint: '/sites/custom-props',
|
|
147
|
+
queryParams: { site_id: siteId },
|
|
148
|
+
});
|
|
149
|
+
return response.custom_properties;
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
exports.customPropertyDropdown = pieces_framework_1.Property.Dropdown({
|
|
153
|
+
displayName: 'Custom Property',
|
|
154
|
+
description: 'Select a custom property',
|
|
155
|
+
required: true,
|
|
156
|
+
refreshers: ['site_id'],
|
|
157
|
+
options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth, site_id }) {
|
|
158
|
+
if (!auth) {
|
|
159
|
+
return {
|
|
160
|
+
disabled: true,
|
|
161
|
+
placeholder: 'Connect your account first',
|
|
162
|
+
options: [],
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
if (!site_id) {
|
|
166
|
+
return {
|
|
167
|
+
disabled: true,
|
|
168
|
+
placeholder: 'Select a site first',
|
|
169
|
+
options: [],
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
const props = yield getCustomProperties(auth, site_id);
|
|
173
|
+
return {
|
|
174
|
+
disabled: false,
|
|
175
|
+
options: props.map((prop) => ({
|
|
176
|
+
label: prop.property,
|
|
177
|
+
value: prop.property,
|
|
178
|
+
})),
|
|
179
|
+
};
|
|
180
|
+
}),
|
|
181
|
+
});
|
|
182
|
+
function getGuests(apiKey, siteId) {
|
|
183
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
184
|
+
const response = yield plausibleApiCall({
|
|
185
|
+
apiKey,
|
|
186
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
187
|
+
endpoint: '/sites/guests',
|
|
188
|
+
queryParams: { site_id: siteId },
|
|
189
|
+
});
|
|
190
|
+
return response.guests;
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
exports.guestEmailDropdown = pieces_framework_1.Property.Dropdown({
|
|
194
|
+
displayName: 'Guest',
|
|
195
|
+
description: 'Select a guest',
|
|
196
|
+
required: true,
|
|
197
|
+
refreshers: ['site_id'],
|
|
198
|
+
options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth, site_id }) {
|
|
199
|
+
if (!auth) {
|
|
200
|
+
return {
|
|
201
|
+
disabled: true,
|
|
202
|
+
placeholder: 'Connect your account first',
|
|
203
|
+
options: [],
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
if (!site_id) {
|
|
207
|
+
return {
|
|
208
|
+
disabled: true,
|
|
209
|
+
placeholder: 'Select a site first',
|
|
210
|
+
options: [],
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
const guests = yield getGuests(auth, site_id);
|
|
214
|
+
return {
|
|
215
|
+
disabled: false,
|
|
216
|
+
options: guests.map((guest) => ({
|
|
217
|
+
label: `${guest.email} (${guest.role})`,
|
|
218
|
+
value: guest.email,
|
|
219
|
+
})),
|
|
220
|
+
};
|
|
221
|
+
}),
|
|
222
|
+
});
|
|
223
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/plausible/src/lib/common/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TriggerStrategy } from '@taskmagic/pieces-framework';
|
|
2
|
+
export declare const trafficSpike: import("@taskmagic/pieces-framework").ITrigger<TriggerStrategy.WEBHOOK, import("@taskmagic/pieces-framework").SecretTextProperty<true>, {
|
|
3
|
+
site_id: import("@taskmagic/pieces-framework").DropdownProperty<string, true>;
|
|
4
|
+
threshold: import("@taskmagic/pieces-framework").NumberProperty<true>;
|
|
5
|
+
}> | import("@taskmagic/pieces-framework").ITrigger<TriggerStrategy.POLLING, import("@taskmagic/pieces-framework").SecretTextProperty<true>, {
|
|
6
|
+
site_id: import("@taskmagic/pieces-framework").DropdownProperty<string, true>;
|
|
7
|
+
threshold: import("@taskmagic/pieces-framework").NumberProperty<true>;
|
|
8
|
+
}> | import("@taskmagic/pieces-framework").ITrigger<TriggerStrategy.APP_WEBHOOK, import("@taskmagic/pieces-framework").SecretTextProperty<true>, {
|
|
9
|
+
site_id: import("@taskmagic/pieces-framework").DropdownProperty<string, true>;
|
|
10
|
+
threshold: import("@taskmagic/pieces-framework").NumberProperty<true>;
|
|
11
|
+
}>;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.trafficSpike = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_framework_1 = require("@taskmagic/pieces-framework");
|
|
6
|
+
const pieces_common_1 = require("@taskmagic/pieces-common");
|
|
7
|
+
const __1 = require("../..");
|
|
8
|
+
const common_1 = require("../common");
|
|
9
|
+
exports.trafficSpike = (0, pieces_framework_1.createTrigger)({
|
|
10
|
+
name: 'traffic_spike',
|
|
11
|
+
auth: __1.plausibleAuth,
|
|
12
|
+
displayName: 'Traffic Spike',
|
|
13
|
+
description: 'Triggers once when current visitors exceed a threshold, then resets when they drop below it',
|
|
14
|
+
type: pieces_framework_1.TriggerStrategy.POLLING,
|
|
15
|
+
props: {
|
|
16
|
+
site_id: common_1.siteIdDropdown,
|
|
17
|
+
threshold: pieces_framework_1.Property.Number({
|
|
18
|
+
displayName: 'Visitor Threshold',
|
|
19
|
+
description: 'Trigger when visitors exceed this number',
|
|
20
|
+
required: true,
|
|
21
|
+
defaultValue: 100,
|
|
22
|
+
}),
|
|
23
|
+
},
|
|
24
|
+
onEnable(_a) {
|
|
25
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ store }) {
|
|
26
|
+
yield store.put('wasAboveThreshold', false, pieces_framework_1.StoreScope.FLOW);
|
|
27
|
+
});
|
|
28
|
+
},
|
|
29
|
+
onDisable(_a) {
|
|
30
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ store }) {
|
|
31
|
+
yield store.delete('wasAboveThreshold', pieces_framework_1.StoreScope.FLOW);
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
run(_a) {
|
|
35
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ auth, propsValue, store }) {
|
|
36
|
+
var _b;
|
|
37
|
+
const visitors = yield (0, common_1.plausibleApiCall)({
|
|
38
|
+
apiKey: auth,
|
|
39
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
40
|
+
endpoint: '/stats/realtime/visitors',
|
|
41
|
+
queryParams: { site_id: propsValue.site_id },
|
|
42
|
+
});
|
|
43
|
+
const threshold = (_b = propsValue.threshold) !== null && _b !== void 0 ? _b : 100;
|
|
44
|
+
const isAbove = visitors >= threshold;
|
|
45
|
+
const wasAbove = yield store.get('wasAboveThreshold', pieces_framework_1.StoreScope.FLOW);
|
|
46
|
+
yield store.put('wasAboveThreshold', isAbove, pieces_framework_1.StoreScope.FLOW);
|
|
47
|
+
if (isAbove && !wasAbove) {
|
|
48
|
+
return [
|
|
49
|
+
{
|
|
50
|
+
site_id: propsValue.site_id,
|
|
51
|
+
current_visitors: visitors,
|
|
52
|
+
threshold,
|
|
53
|
+
triggered_at: new Date().toISOString(),
|
|
54
|
+
},
|
|
55
|
+
];
|
|
56
|
+
}
|
|
57
|
+
return [];
|
|
58
|
+
});
|
|
59
|
+
},
|
|
60
|
+
sampleData: {
|
|
61
|
+
site_id: 'example.com',
|
|
62
|
+
current_visitors: 150,
|
|
63
|
+
threshold: 100,
|
|
64
|
+
triggered_at: '2024-01-01T12:00:00Z',
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
//# sourceMappingURL=traffic-spike.trigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traffic-spike.trigger.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/plausible/src/lib/triggers/traffic-spike.trigger.ts"],"names":[],"mappings":";;;;AAAA,kEAKqC;AACrC,4DAAsD;AACtD,6BAAsC;AACtC,sCAA6D;AAEhD,QAAA,YAAY,GAAG,IAAA,gCAAa,EAAC;IACxC,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,iBAAa;IACnB,WAAW,EAAE,eAAe;IAC5B,WAAW,EACT,6FAA6F;IAC/F,IAAI,EAAE,kCAAe,CAAC,OAAO;IAC7B,KAAK,EAAE;QACL,OAAO,EAAE,uBAAc;QACvB,SAAS,EAAE,2BAAQ,CAAC,MAAM,CAAC;YACzB,WAAW,EAAE,mBAAmB;YAChC,WAAW,EAAE,0CAA0C;YACvD,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,GAAG;SAClB,CAAC;KACH;IACK,QAAQ;qEAAC,EAAE,KAAK,EAAE;YACtB,MAAM,KAAK,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,EAAE,6BAAU,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC;KAAA;IACK,SAAS;qEAAC,EAAE,KAAK,EAAE;YACvB,MAAM,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAAE,6BAAU,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC;KAAA;IACK,GAAG;qEAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE;;YACnC,MAAM,QAAQ,GAAG,MAAM,IAAA,yBAAgB,EAAS;gBAC9C,MAAM,EAAE,IAAc;gBACtB,MAAM,EAAE,0BAAU,CAAC,GAAG;gBACtB,QAAQ,EAAE,0BAA0B;gBACpC,WAAW,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE;aAC7C,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,MAAA,UAAU,CAAC,SAAS,mCAAI,GAAG,CAAC;YAC9C,MAAM,OAAO,GAAG,QAAQ,IAAI,SAAS,CAAC;YACtC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAU,mBAAmB,EAAE,6BAAU,CAAC,IAAI,CAAC,CAAC;YAEhF,MAAM,KAAK,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,EAAE,6BAAU,CAAC,IAAI,CAAC,CAAC;YAE/D,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACzB,OAAO;oBACL;wBACE,OAAO,EAAE,UAAU,CAAC,OAAO;wBAC3B,gBAAgB,EAAE,QAAQ;wBAC1B,SAAS;wBACT,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;qBACvC;iBACF,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;KAAA;IACD,UAAU,EAAE;QACV,OAAO,EAAE,aAAa;QACtB,gBAAgB,EAAE,GAAG;QACrB,SAAS,EAAE,GAAG;QACd,YAAY,EAAE,sBAAsB;KACrC;CACF,CAAC,CAAC"}
|