@esri/hub-common 9.3.0 → 9.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.
- package/dist/es2017/search/_searchContent.js +62 -0
- package/dist/es2017/search/_searchContent.js.map +1 -0
- package/dist/es2017/search/content-utils.js +422 -0
- package/dist/es2017/search/content-utils.js.map +1 -0
- package/dist/es2017/search/index.js +4 -0
- package/dist/es2017/search/index.js.map +1 -1
- package/dist/es2017/search/types.js +1 -0
- package/dist/es2017/search/types.js.map +1 -0
- package/dist/es2017/search/utils.js +344 -0
- package/dist/es2017/search/utils.js.map +1 -0
- package/dist/esm/search/_searchContent.js +70 -0
- package/dist/esm/search/_searchContent.js.map +1 -0
- package/dist/esm/search/content-utils.js +426 -0
- package/dist/esm/search/content-utils.js.map +1 -0
- package/dist/esm/search/index.js +4 -0
- package/dist/esm/search/index.js.map +1 -1
- package/dist/esm/search/types.js +1 -0
- package/dist/esm/search/types.js.map +1 -0
- package/dist/esm/search/utils.js +341 -0
- package/dist/esm/search/utils.js.map +1 -0
- package/dist/node/search/_searchContent.js +66 -0
- package/dist/node/search/_searchContent.js.map +1 -0
- package/dist/node/search/content-utils.js +432 -0
- package/dist/node/search/content-utils.js.map +1 -0
- package/dist/node/search/index.js +4 -0
- package/dist/node/search/index.js.map +1 -1
- package/dist/node/search/types.js +3 -0
- package/dist/node/search/types.js.map +1 -0
- package/dist/node/search/utils.js +357 -0
- package/dist/node/search/utils.js.map +1 -0
- package/dist/types/search/_searchContent.d.ts +7 -0
- package/dist/types/search/content-utils.d.ts +70 -0
- package/dist/types/search/index.d.ts +4 -0
- package/dist/types/search/types.d.ts +294 -0
- package/dist/types/search/utils.d.ts +92 -0
- package/dist/umd/common.umd.js +842 -1
- package/dist/umd/common.umd.js.map +1 -1
- package/dist/umd/common.umd.min.js +1 -1
- package/dist/umd/common.umd.min.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
/* Copyright (c) 2018-2021 Environmental Systems Research Institute, Inc.
|
|
2
|
+
* Apache-2.0 */
|
|
3
|
+
import { __spreadArrays } from "tslib";
|
|
4
|
+
import { cloneObject, unique } from "../util";
|
|
5
|
+
/**
|
|
6
|
+
* Well known APIs
|
|
7
|
+
* Short-forms for specifying common APIs
|
|
8
|
+
*/
|
|
9
|
+
export var SEARCH_APIS = {
|
|
10
|
+
arcgis: {
|
|
11
|
+
label: "ArcGIS Online",
|
|
12
|
+
url: "https://www.arcgis.com",
|
|
13
|
+
type: "arcgis",
|
|
14
|
+
},
|
|
15
|
+
arcgisQA: {
|
|
16
|
+
label: "ArcGIS Online QAEXT",
|
|
17
|
+
url: "https://qaext.arcgis.com",
|
|
18
|
+
type: "arcgis",
|
|
19
|
+
},
|
|
20
|
+
arcgisDEV: {
|
|
21
|
+
label: "ArcGIS Online DEVEXT",
|
|
22
|
+
url: "https://devext.arcgis.com",
|
|
23
|
+
type: "arcgis",
|
|
24
|
+
},
|
|
25
|
+
hub: {
|
|
26
|
+
label: "ArcGIS Hub",
|
|
27
|
+
url: "https://hub.arcgis.com/api",
|
|
28
|
+
type: "arcgis-hub",
|
|
29
|
+
},
|
|
30
|
+
hubDEV: {
|
|
31
|
+
label: "ArcGIS Hub DEV",
|
|
32
|
+
url: "https://hubdev.arcgis.com/api",
|
|
33
|
+
type: "arcgis-hub",
|
|
34
|
+
},
|
|
35
|
+
hubQA: {
|
|
36
|
+
label: "ArcGIS Hub QA",
|
|
37
|
+
url: "https://hubqa.arcgis.com/api",
|
|
38
|
+
type: "arcgis-hub",
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* @private
|
|
43
|
+
* Convert api "names" into full ApiDefinitions
|
|
44
|
+
* @param apis
|
|
45
|
+
* @returns
|
|
46
|
+
*/
|
|
47
|
+
export function expandApis(apis) {
|
|
48
|
+
return apis.map(function (api) {
|
|
49
|
+
if (typeof api === "string" && api in SEARCH_APIS) {
|
|
50
|
+
return SEARCH_APIS[api];
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
// it's an object, so we trust that it's well formed
|
|
54
|
+
return api;
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* @private
|
|
60
|
+
* Merge multiple search responses
|
|
61
|
+
*
|
|
62
|
+
* Naieve implementation that just merges arrays
|
|
63
|
+
* @param responses
|
|
64
|
+
* @returns
|
|
65
|
+
*/
|
|
66
|
+
export function mergeSearchResults(responses) {
|
|
67
|
+
// Merge content
|
|
68
|
+
var content = responses.reduce(function (acc, response) {
|
|
69
|
+
if (response.content) {
|
|
70
|
+
acc = acc.concat(response.content);
|
|
71
|
+
}
|
|
72
|
+
return acc;
|
|
73
|
+
}, []);
|
|
74
|
+
// Merge Facets
|
|
75
|
+
var facets = responses.reduce(function (acc, response) {
|
|
76
|
+
if (response.facets) {
|
|
77
|
+
acc = acc.concat(response.facets);
|
|
78
|
+
}
|
|
79
|
+
return acc;
|
|
80
|
+
}, []);
|
|
81
|
+
return { content: content, facets: facets };
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* @private
|
|
85
|
+
* Merge two date ranges by taking the longest span
|
|
86
|
+
* @param dr1
|
|
87
|
+
* @param dr2
|
|
88
|
+
* @returns
|
|
89
|
+
*/
|
|
90
|
+
export function mergeDateRange(dr1, dr2) {
|
|
91
|
+
var result = cloneObject(dr1);
|
|
92
|
+
// feels like there is a more concise way to do this...
|
|
93
|
+
if (dr2.from < dr1.from) {
|
|
94
|
+
result.from = dr2.from;
|
|
95
|
+
}
|
|
96
|
+
if (dr2.to > dr1.to) {
|
|
97
|
+
result.to = dr2.to;
|
|
98
|
+
}
|
|
99
|
+
return result;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* @private
|
|
103
|
+
* Merge two [`MatchOptions`](../MatchOptions)
|
|
104
|
+
*
|
|
105
|
+
* Currently a naieve implementation where the arrays are simply merged
|
|
106
|
+
*
|
|
107
|
+
* @param mo1
|
|
108
|
+
* @param mo2
|
|
109
|
+
* @returns
|
|
110
|
+
*/
|
|
111
|
+
export function mergeMatchOptions(mo1, mo2) {
|
|
112
|
+
var result = {};
|
|
113
|
+
// None of these props are required, so we can't just
|
|
114
|
+
// use Object.keys/.entries
|
|
115
|
+
var props = ["any", "all", "not", "exact"];
|
|
116
|
+
props.forEach(function (prop) {
|
|
117
|
+
var key = prop;
|
|
118
|
+
var merged = __spreadArrays(getMatchValue(mo1, key), getMatchValue(mo2, key));
|
|
119
|
+
if (merged.length) {
|
|
120
|
+
// remove any dupes and set on the return
|
|
121
|
+
result[key] = merged.filter(unique);
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Get the value of a property on an IMatchOptions
|
|
128
|
+
*
|
|
129
|
+
* This is complex b/c all the props are optional, and
|
|
130
|
+
* they could be a simple string, or an array of strings.
|
|
131
|
+
*
|
|
132
|
+
* This function normalizes all that and returns an array,
|
|
133
|
+
* which may or may not be empty
|
|
134
|
+
* @param option
|
|
135
|
+
* @param key
|
|
136
|
+
* @returns
|
|
137
|
+
*/
|
|
138
|
+
function getMatchValue(option, key) {
|
|
139
|
+
var matchValue = [];
|
|
140
|
+
if (option[key]) {
|
|
141
|
+
var val = option[key];
|
|
142
|
+
if (Array.isArray(val)) {
|
|
143
|
+
matchValue = val;
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
matchValue = [val];
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return matchValue;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* @private
|
|
153
|
+
* Convert a field value into a MatchOptions if it's not already one
|
|
154
|
+
* @param value
|
|
155
|
+
* @returns
|
|
156
|
+
*/
|
|
157
|
+
export function valueToMatchOptions(value) {
|
|
158
|
+
var result = {};
|
|
159
|
+
if (Array.isArray(value)) {
|
|
160
|
+
result = {
|
|
161
|
+
any: value,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
if (typeof value === "string") {
|
|
166
|
+
result = {
|
|
167
|
+
any: [value],
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
if (typeof value === "object") {
|
|
171
|
+
result = value;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return result;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* @private
|
|
178
|
+
* Convert a RelativeDate to a DateRange<number>
|
|
179
|
+
* @param relative
|
|
180
|
+
* @returns
|
|
181
|
+
*/
|
|
182
|
+
export function relativeDateToDateRange(relative) {
|
|
183
|
+
// hash of offsets
|
|
184
|
+
var offsetMs = {
|
|
185
|
+
min: 1000 * 60,
|
|
186
|
+
hours: 1000 * 60 * 60,
|
|
187
|
+
days: 1000 * 60 * 60 * 24,
|
|
188
|
+
weeks: 1000 * 60 * 60 * 24 * 7,
|
|
189
|
+
};
|
|
190
|
+
var now = new Date();
|
|
191
|
+
// default
|
|
192
|
+
var result = {
|
|
193
|
+
type: "date-range",
|
|
194
|
+
from: now.getTime(),
|
|
195
|
+
to: now.getTime(),
|
|
196
|
+
};
|
|
197
|
+
//
|
|
198
|
+
switch (relative.unit) {
|
|
199
|
+
case "hours":
|
|
200
|
+
case "days":
|
|
201
|
+
case "weeks":
|
|
202
|
+
result.from = result.to - offsetMs[relative.unit] * relative.num;
|
|
203
|
+
break;
|
|
204
|
+
case "months":
|
|
205
|
+
// get the current month and subtract num
|
|
206
|
+
now.setMonth(now.getMonth() - relative.num);
|
|
207
|
+
result.from = now.getTime();
|
|
208
|
+
break;
|
|
209
|
+
case "years":
|
|
210
|
+
now.setFullYear(now.getFullYear() - relative.num);
|
|
211
|
+
result.from = now.getTime();
|
|
212
|
+
break;
|
|
213
|
+
}
|
|
214
|
+
return result;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* @private
|
|
218
|
+
* As a final `ISearchOptions` object gets created, many such objects are created, and
|
|
219
|
+
* need to be systematically "merged" so as to return consistently structured `q` and `filter`
|
|
220
|
+
* values.
|
|
221
|
+
* @param so1
|
|
222
|
+
* @param so2
|
|
223
|
+
* @param join
|
|
224
|
+
* @returns
|
|
225
|
+
*/
|
|
226
|
+
export function mergeSearchOptions(so1, so2, join) {
|
|
227
|
+
var result = cloneObject(so1);
|
|
228
|
+
var q = so2.q, filter = so2.filter;
|
|
229
|
+
if (q) {
|
|
230
|
+
result.q = (result.q ? " (" + result.q + " " + join + " " + q + ")" : q).trim();
|
|
231
|
+
}
|
|
232
|
+
if (filter) {
|
|
233
|
+
result.filter = (result.filter ? "(" + result.filter + " " + join + " " + filter + ")" : filter).trim();
|
|
234
|
+
}
|
|
235
|
+
return result;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* @private
|
|
239
|
+
* Serialize a `MatchOptions` into `q` or `filter` on an `ISearchOptions`
|
|
240
|
+
* @param key
|
|
241
|
+
* @param opts
|
|
242
|
+
* @returns
|
|
243
|
+
*/
|
|
244
|
+
export function serializeMatchOptions(key, opts) {
|
|
245
|
+
var result = {
|
|
246
|
+
q: "",
|
|
247
|
+
filter: "",
|
|
248
|
+
};
|
|
249
|
+
if (opts.exact) {
|
|
250
|
+
// defined separately for refactoring later
|
|
251
|
+
var userFilterableFields = [
|
|
252
|
+
"username",
|
|
253
|
+
"firstname",
|
|
254
|
+
"lastname",
|
|
255
|
+
"fullname",
|
|
256
|
+
"email",
|
|
257
|
+
];
|
|
258
|
+
var itemFilterableFields = [
|
|
259
|
+
"title",
|
|
260
|
+
"tags",
|
|
261
|
+
"typekeywords",
|
|
262
|
+
"type",
|
|
263
|
+
"name",
|
|
264
|
+
"owner",
|
|
265
|
+
];
|
|
266
|
+
var groupFilterableFields = ["title", "typekeywords", "owner"];
|
|
267
|
+
var filterableFields = __spreadArrays(userFilterableFields, itemFilterableFields, groupFilterableFields);
|
|
268
|
+
if (filterableFields.includes(key)) {
|
|
269
|
+
result.filter = serializeStringOrArray("AND", key, opts.exact);
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
// Treat it the same as .all
|
|
273
|
+
if (typeof opts.exact === "string") {
|
|
274
|
+
if (!opts.all) {
|
|
275
|
+
opts.all = [];
|
|
276
|
+
}
|
|
277
|
+
if (typeof opts.all === "string") {
|
|
278
|
+
opts.all = [opts.all];
|
|
279
|
+
}
|
|
280
|
+
opts.all.push(opts.exact);
|
|
281
|
+
}
|
|
282
|
+
if (Array.isArray(opts.exact)) {
|
|
283
|
+
if (!opts.all) {
|
|
284
|
+
opts.all = [];
|
|
285
|
+
}
|
|
286
|
+
if (typeof opts.all === "string") {
|
|
287
|
+
opts.all = [opts.all];
|
|
288
|
+
}
|
|
289
|
+
opts.all = opts.all.concat(opts.exact);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
// Handle the other props
|
|
294
|
+
if (opts.any) {
|
|
295
|
+
result.q = serializeStringOrArray("OR", key, opts.any);
|
|
296
|
+
}
|
|
297
|
+
if (opts.all) {
|
|
298
|
+
result.q =
|
|
299
|
+
(result.q ? result.q + " AND " : "") +
|
|
300
|
+
serializeStringOrArray("AND", key, opts.all);
|
|
301
|
+
}
|
|
302
|
+
if (opts.not) {
|
|
303
|
+
// negate the entries if they are not
|
|
304
|
+
result.q =
|
|
305
|
+
(result.q ? result.q + " AND " : "") +
|
|
306
|
+
serializeStringOrArray("OR", "-" + key, opts.not);
|
|
307
|
+
}
|
|
308
|
+
return result;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* @private
|
|
312
|
+
* Serialize a DateRange<number> into a Portal Query string
|
|
313
|
+
* @param key
|
|
314
|
+
* @param range
|
|
315
|
+
* @returns
|
|
316
|
+
*/
|
|
317
|
+
export function serializeDateRange(key, range) {
|
|
318
|
+
return {
|
|
319
|
+
q: key + ":[" + range.from + " TO " + range.to + "]",
|
|
320
|
+
filter: "",
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* @private
|
|
325
|
+
* Serialize a `string` or `string[]` into a string
|
|
326
|
+
* @param join
|
|
327
|
+
* @param key
|
|
328
|
+
* @param value
|
|
329
|
+
* @returns
|
|
330
|
+
*/
|
|
331
|
+
export function serializeStringOrArray(join, key, value) {
|
|
332
|
+
var q = "";
|
|
333
|
+
if (Array.isArray(value)) {
|
|
334
|
+
q = "(" + key + ":\"" + value.join("\" " + join + " " + key + ":\"") + "\")";
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
q = key + ":\"" + value + "\"";
|
|
338
|
+
}
|
|
339
|
+
return q;
|
|
340
|
+
}
|
|
341
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/search/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._searchContent = void 0;
|
|
4
|
+
const content_utils_1 = require("./content-utils");
|
|
5
|
+
const arcgis_rest_portal_1 = require("@esri/arcgis-rest-portal");
|
|
6
|
+
const utils_1 = require("./utils");
|
|
7
|
+
const __1 = require("..");
|
|
8
|
+
/**
|
|
9
|
+
* Search for content via the Portal or Hub API
|
|
10
|
+
* @param filter
|
|
11
|
+
* @param options
|
|
12
|
+
*/
|
|
13
|
+
async function _searchContent(filter, options) {
|
|
14
|
+
// expand filter so we can serialize to either api
|
|
15
|
+
const expanded = content_utils_1.expandContentFilter(filter);
|
|
16
|
+
// APIs
|
|
17
|
+
if (!options.apis) {
|
|
18
|
+
// default to AGO PROD
|
|
19
|
+
options.apis = ["arcgis"];
|
|
20
|
+
}
|
|
21
|
+
const apis = utils_1.expandApis(options.apis);
|
|
22
|
+
// map over the apis, depending on the type we issue the queries
|
|
23
|
+
const searchPromises = apis.map((api) => {
|
|
24
|
+
var _a;
|
|
25
|
+
// Portal Search
|
|
26
|
+
if (api.type === "arcgis") {
|
|
27
|
+
// serialize for portal
|
|
28
|
+
const so = content_utils_1.serializeContentFilterForPortal(expanded);
|
|
29
|
+
// pass auth forward
|
|
30
|
+
if (options.authentication) {
|
|
31
|
+
so.authentication = options.authentication;
|
|
32
|
+
}
|
|
33
|
+
// Aggregations
|
|
34
|
+
if ((_a = options.aggregations) === null || _a === void 0 ? void 0 : _a.length) {
|
|
35
|
+
so.countFields = options.aggregations.join(",");
|
|
36
|
+
so.countSize = 200;
|
|
37
|
+
}
|
|
38
|
+
if (options.num) {
|
|
39
|
+
so.num = options.num;
|
|
40
|
+
}
|
|
41
|
+
return searchPortal(so);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
// Hub API Search
|
|
45
|
+
// TODO: Implement hub api content search
|
|
46
|
+
return Promise.resolve({
|
|
47
|
+
content: [],
|
|
48
|
+
facets: [],
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
// wait for results
|
|
53
|
+
const results = await Promise.all(searchPromises);
|
|
54
|
+
// merge and return
|
|
55
|
+
return utils_1.mergeSearchResults(results);
|
|
56
|
+
}
|
|
57
|
+
exports._searchContent = _searchContent;
|
|
58
|
+
function searchPortal(searchOptions) {
|
|
59
|
+
return arcgis_rest_portal_1.searchItems(searchOptions).then((resp) => {
|
|
60
|
+
const content = resp.results.map(__1.itemToContent);
|
|
61
|
+
// convert aggregations into facets
|
|
62
|
+
const facets = content_utils_1.convertPortalResponseToFacets(resp);
|
|
63
|
+
return { content, facets };
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=_searchContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_searchContent.js","sourceRoot":"","sources":["../../../src/search/_searchContent.ts"],"names":[],"mappings":";;;AAAA,mDAIyB;AAOzB,iEAAuE;AACvE,mCAAyD;AACzD,0BAAgD;AAEhD;;;;GAIG;AACI,KAAK,UAAU,cAAc,CAClC,MAAyB,EACzB,OAA0B;IAE1B,kDAAkD;IAClD,MAAM,QAAQ,GAAG,mCAAmB,CAAC,MAAM,CAAC,CAAC;IAE7C,OAAO;IACP,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACjB,sBAAsB;QACtB,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC3B;IACD,MAAM,IAAI,GAAG,kBAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC,gEAAgE;IAChE,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;;QACtC,gBAAgB;QAChB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;YACzB,uBAAuB;YACvB,MAAM,EAAE,GAAG,+CAA+B,CAAC,QAAQ,CAAC,CAAC;YACrD,oBAAoB;YACpB,IAAI,OAAO,CAAC,cAAc,EAAE;gBAC1B,EAAE,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;aAC5C;YACD,eAAe;YACf,UAAI,OAAO,CAAC,YAAY,0CAAE,MAAM,EAAE;gBAChC,EAAE,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChD,EAAE,CAAC,SAAS,GAAG,GAAG,CAAC;aACpB;YACD,IAAI,OAAO,CAAC,GAAG,EAAE;gBACf,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;aACtB;YACD,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC;SACzB;aAAM;YACL,iBAAiB;YACjB,yCAAyC;YACzC,OAAO,OAAO,CAAC,OAAO,CAAC;gBACrB,OAAO,EAAE,EAAmB;gBAC5B,MAAM,EAAE,EAAc;aACvB,CAAC,CAAC;SACJ;IACH,CAAC,CAAC,CAAC;IACH,mBAAmB;IACnB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAClD,mBAAmB;IACnB,OAAO,0BAAkB,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AA9CD,wCA8CC;AAED,SAAS,YAAY,CACnB,aAA6B;IAE7B,OAAO,gCAAW,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAa,CAAC,CAAC;QAChD,mCAAmC;QACnC,MAAM,MAAM,GAAG,6CAA6B,CAAC,IAAI,CAAC,CAAC;QACnD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC"}
|