@spica-devkit/identity 0.13.1 → 0.13.4

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/index.d.ts ADDED
@@ -0,0 +1,123 @@
1
+ import { Observable } from 'rxjs';
2
+
3
+ interface SuccessResponse<P, R = P> {
4
+ request: P;
5
+ response: R;
6
+ }
7
+ interface FailureResponse<P> {
8
+ request: P;
9
+ response: {
10
+ message: string;
11
+ error: string;
12
+ };
13
+ }
14
+ interface ManyResponse<P, R> {
15
+ successes: SuccessResponse<P, R>[];
16
+ failures: FailureResponse<P>[];
17
+ }
18
+
19
+ interface Identity {
20
+ _id: string;
21
+ identifier: string;
22
+ password: string;
23
+ policies: string[];
24
+ attributes?: object;
25
+ lastLogin?: Date;
26
+ failedAttempts?: Date[];
27
+ }
28
+ type IdentityUpdate = Partial<Identity>;
29
+ type IdentityCreate = Omit<Identity, "_id">;
30
+ type IdentityGet = Omit<Identity, "password">;
31
+ interface Strategy {
32
+ _id: string;
33
+ type: string;
34
+ name: string;
35
+ title: string;
36
+ }
37
+ interface Challenge {
38
+ show(): string;
39
+ answer(answer: string): Promise<string>;
40
+ }
41
+ type TokenScheme = {
42
+ token: string;
43
+ };
44
+ type ChallengeRes = {
45
+ challenge: string;
46
+ answerUrl: string;
47
+ };
48
+ interface LoginWithStrategyResponse {
49
+ url: string;
50
+ token: Observable<string | Challenge>;
51
+ }
52
+ interface FactorSchema {
53
+ type: string;
54
+ title: string;
55
+ description: string;
56
+ config: {
57
+ [key: string]: {
58
+ type: string;
59
+ enum?: any[];
60
+ };
61
+ };
62
+ }
63
+ interface FactorMeta {
64
+ type: string;
65
+ config: {
66
+ [key: string]: any;
67
+ };
68
+ }
69
+
70
+ interface PublicInitialization {
71
+ publicUrl?: string;
72
+ }
73
+ interface ApikeyInitialization extends PublicInitialization {
74
+ apikey: string;
75
+ }
76
+ interface IdentityInitialization extends PublicInitialization {
77
+ identity: string;
78
+ }
79
+ interface IndexResult<T> {
80
+ meta: {
81
+ total: number;
82
+ };
83
+ data: T[];
84
+ }
85
+
86
+ declare function initialize(options: ApikeyInitialization | IdentityInitialization): void;
87
+ declare function verifyToken(token: string, baseUrl?: string, headers?: object): Promise<unknown>;
88
+ declare function login<TFA extends false>(identifier: string, password: string, tokenLifeSpan?: number, headers?: object): Promise<string>;
89
+ declare function login<TFA extends true>(identifier: string, password: string, tokenLifeSpan?: number, headers?: object): Promise<Challenge>;
90
+ declare function isChallenge(tokenOrChallenge: any): tokenOrChallenge is Challenge;
91
+ declare function loginWithStrategy(id: string): Promise<LoginWithStrategyResponse>;
92
+ declare namespace authfactor {
93
+ function list(headers?: object): Promise<FactorSchema[]>;
94
+ function register(identityId: string, factor: FactorMeta, headers?: object): Promise<Challenge>;
95
+ function unregister(identityId: string, headers?: object): any;
96
+ }
97
+ declare function getStrategies(headers?: object): Promise<Strategy[]>;
98
+ declare function get(id: string, headers?: object): Promise<IdentityGet>;
99
+ declare function getAll(queryParams?: {
100
+ paginate?: false;
101
+ limit?: number;
102
+ skip?: number;
103
+ filter?: object;
104
+ sort?: object;
105
+ }, headers?: object): Promise<IdentityGet[]>;
106
+ declare function getAll(queryParams?: {
107
+ paginate?: true;
108
+ limit?: number;
109
+ skip?: number;
110
+ filter?: object;
111
+ sort?: object;
112
+ }, headers?: object): Promise<IndexResult<IdentityGet>>;
113
+ declare function insert(identity: IdentityCreate, headers?: object): Promise<IdentityGet>;
114
+ declare function update(id: string, identity: IdentityUpdate, headers?: object): Promise<IdentityGet>;
115
+ declare function remove(id: string, headers?: object): Promise<any>;
116
+ declare function removeMany(ids: string[], headers?: object): Promise<ManyResponse<string, string>>;
117
+ declare namespace policy {
118
+ function attach(identityId: string, policyIds?: string[], headers?: object): Promise<string[]>;
119
+ function detach(identityId: string, policyIds?: string[], headers?: object): Promise<string[]>;
120
+ }
121
+
122
+ export { authfactor, get, getAll, getStrategies, initialize, insert, isChallenge, login, loginWithStrategy, policy, remove, removeMany, update, verifyToken };
123
+ export type { Challenge, ChallengeRes, FactorMeta, FactorSchema, IdentityCreate, IdentityGet, IdentityUpdate, LoginWithStrategyResponse, Strategy, TokenScheme };
package/index.js ADDED
@@ -0,0 +1,467 @@
1
+ 'use strict';
2
+
3
+ var rxjs = require('rxjs');
4
+ var axios = require('axios');
5
+
6
+ function logWarning(response) {
7
+ const warning = response.headers["warning"];
8
+ if (warning) {
9
+ console.warn(warning);
10
+ }
11
+ }
12
+ class Axios {
13
+ constructor(config) {
14
+ this.interceptors = {
15
+ request: {
16
+ onFulfilled: (request) => {
17
+ request.maxBodyLength = Number.MAX_SAFE_INTEGER;
18
+ request.maxContentLength = Number.MAX_SAFE_INTEGER;
19
+ if (!request.headers["Authorization"]) {
20
+ throw new Error("You should call initialize method with a valid apikey or identity token.");
21
+ }
22
+ return request;
23
+ },
24
+ onRejected: (error) => {
25
+ return Promise.reject(error);
26
+ }
27
+ },
28
+ response: {
29
+ onFulfilled: (response) => {
30
+ logWarning(response);
31
+ return response.data;
32
+ },
33
+ onRejected: (error) => {
34
+ return Promise.reject(error.response ? error.response.data : error);
35
+ }
36
+ }
37
+ };
38
+ this.instance = axios.create(config);
39
+ this.instance.interceptors.request.use(this.interceptors.request.onFulfilled, this.interceptors.request.onRejected);
40
+ this.instance.interceptors.response.use(this.interceptors.response.onFulfilled, this.interceptors.response.onRejected);
41
+ this.baseUrl = this.instance.defaults.baseURL;
42
+ this.instance.defaults.paramsSerializer = paramsSerializer;
43
+ }
44
+ setBaseUrl(url) {
45
+ this.instance.defaults.baseURL = url;
46
+ this.baseUrl = url;
47
+ }
48
+ setWriteDefaults(writeDefaults) {
49
+ for (const [header, value] of Object.entries(writeDefaults.headers)) {
50
+ this.instance.defaults.headers.post[header] = value;
51
+ this.instance.defaults.headers.put[header] = value;
52
+ }
53
+ }
54
+ setAuthorization(authorization) {
55
+ this.instance.defaults.headers["Authorization"] = authorization;
56
+ }
57
+ getAuthorization() {
58
+ return this.instance.defaults.headers["Authorization"].toString();
59
+ }
60
+ get(url, config) {
61
+ return this.instance.get(url, config);
62
+ }
63
+ post(url, body, config) {
64
+ return this.instance.post(url, body, config);
65
+ }
66
+ put(url, body, config) {
67
+ return this.instance.put(url, body, config);
68
+ }
69
+ patch(url, body, config) {
70
+ return this.instance.patch(url, body, config);
71
+ }
72
+ delete(url, config) {
73
+ return this.instance.delete(url, config);
74
+ }
75
+ request(config) {
76
+ return this.instance.request(config);
77
+ }
78
+ }
79
+ function encode(val) {
80
+ return encodeURIComponent(val)
81
+ .replace(/%3A/gi, ":")
82
+ .replace(/%24/g, "$")
83
+ .replace(/%2C/gi, ",")
84
+ .replace(/%20/g, "+")
85
+ .replace(/%5B/gi, "[")
86
+ .replace(/%5D/gi, "]");
87
+ }
88
+ function utilsIsURLSearchParams(val) {
89
+ return typeof URLSearchParams !== "undefined" && val instanceof URLSearchParams;
90
+ }
91
+ function utilsIsArray(val) {
92
+ return toString.call(val) === "[object Array]";
93
+ }
94
+ function utilsIsDate(val) {
95
+ return toString.call(val) === "[object Date]";
96
+ }
97
+ function utilsIsObject(val) {
98
+ return val !== null && typeof val === "object";
99
+ }
100
+ function utilsForEach(obj, fn) {
101
+ if (obj === null || typeof obj === "undefined") {
102
+ return;
103
+ }
104
+ if (typeof obj !== "object") {
105
+ obj = [obj];
106
+ }
107
+ if (utilsIsArray(obj)) {
108
+ for (var i = 0, l = obj.length; i < l; i++) {
109
+ fn.call(null, obj[i], i, obj);
110
+ }
111
+ }
112
+ else {
113
+ for (var key in obj) {
114
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
115
+ fn.call(null, obj[key], key, obj);
116
+ }
117
+ }
118
+ }
119
+ }
120
+ function paramsSerializer(params) {
121
+ if (utilsIsURLSearchParams(params)) {
122
+ return params.toString();
123
+ }
124
+ var parts = [];
125
+ utilsForEach(params, function serialize(val, key) {
126
+ if (val === null || typeof val === "undefined") {
127
+ return;
128
+ }
129
+ if (utilsIsArray(val)) {
130
+ key = key + "[]";
131
+ }
132
+ else {
133
+ val = [val];
134
+ }
135
+ utilsForEach(val, function parseValue(v) {
136
+ if (utilsIsDate(v)) {
137
+ v = v.toISOString();
138
+ }
139
+ else if (utilsIsObject(v)) {
140
+ v = JSON.stringify(v);
141
+ }
142
+ parts.push(encode(key) + "=" + encode(v));
143
+ });
144
+ });
145
+ return parts.join("&");
146
+ }
147
+
148
+ let service$1;
149
+ function initialize$1(options) {
150
+ let authorization;
151
+ if ("apikey" in options) {
152
+ authorization = `APIKEY ${options.apikey}`;
153
+ }
154
+ else if ("identity" in options) {
155
+ authorization = `IDENTITY ${options.identity}`;
156
+ }
157
+ else if ("user" in options) {
158
+ authorization = `USER ${options.user}`;
159
+ }
160
+ const publicUrl = options.publicUrl || getPublicUrl();
161
+ if (!publicUrl) {
162
+ throw new Error("Public url must be provided.");
163
+ }
164
+ if (!service$1) {
165
+ service$1 = new Axios({});
166
+ }
167
+ service$1.setBaseUrl(publicUrl);
168
+ if (authorization) {
169
+ service$1.setAuthorization(authorization);
170
+ }
171
+ return { authorization, publicUrl, service: service$1 };
172
+ }
173
+ function checkInitialized(authorization, service, options = { skipAuthCheck: false }) {
174
+ if (!authorization && !options.skipAuthCheck) {
175
+ throw new Error("You should call initialize method with a valid credentials.");
176
+ }
177
+ if (!service) {
178
+ throw new Error("You should call initialize method with a valid publicUrl.");
179
+ }
180
+ }
181
+ function getPublicUrl() {
182
+ return isPlatformBrowser() ? undefined : process.env.__INTERNAL__SPICA__PUBLIC_URL__;
183
+ }
184
+ function isPlatformBrowser() {
185
+ return typeof window !== "undefined";
186
+ }
187
+
188
+ var Batch;
189
+ (function (Batch) {
190
+ function prepareInsertRequest(resources, url, auth, headers) {
191
+ return {
192
+ requests: resources.map((resource, i) => {
193
+ headers = addAuthHeader(headers, auth);
194
+ return {
195
+ id: i.toString(),
196
+ body: resource,
197
+ method: "POST",
198
+ url: url,
199
+ headers: headers
200
+ };
201
+ })
202
+ };
203
+ }
204
+ Batch.prepareInsertRequest = prepareInsertRequest;
205
+ function prepareRemoveRequest(ids, url, auth, headers) {
206
+ return {
207
+ requests: ids.map((id, i) => {
208
+ headers = addAuthHeader(headers, auth);
209
+ return {
210
+ id: i.toString(),
211
+ body: undefined,
212
+ method: "DELETE",
213
+ url: `${url}/${id}`,
214
+ headers: headers
215
+ };
216
+ })
217
+ };
218
+ }
219
+ Batch.prepareRemoveRequest = prepareRemoveRequest;
220
+ function handleBatchResponse({ requests }, { responses }) {
221
+ const sortById = (a, b) => Number(a.id) - Number(b.id);
222
+ const successResponses = responses
223
+ .sort(sortById)
224
+ .filter(r => r.status >= 200 && r.status < 300);
225
+ const failureResponses = responses
226
+ .sort(sortById)
227
+ .filter(r => r.status >= 400 && r.status <= 500);
228
+ const successes = successResponses.map(sr => {
229
+ const req = requests.find(r => r.id == sr.id);
230
+ return {
231
+ request: (req.body || req.url),
232
+ response: sr.body
233
+ };
234
+ });
235
+ const failures = failureResponses.map(fr => {
236
+ const req = requests.find(r => r.id == fr.id);
237
+ return {
238
+ request: (req.body || req.url),
239
+ response: {
240
+ error: fr.body["error"],
241
+ message: fr.body["message"]
242
+ }
243
+ };
244
+ });
245
+ return {
246
+ successes,
247
+ failures
248
+ };
249
+ }
250
+ Batch.handleBatchResponse = handleBatchResponse;
251
+ })(Batch || (Batch = {}));
252
+ function addAuthHeader(headers, auth) {
253
+ headers = headers || {};
254
+ headers["Authorization"] = auth;
255
+ return headers;
256
+ }
257
+
258
+ function deepCopyJSON(param) {
259
+ return JSON.parse(JSON.stringify(param));
260
+ }
261
+
262
+ let authorization;
263
+ let service;
264
+ const identitySegment = "passport/identity";
265
+ class _Challenge {
266
+ constructor(res, answerResponseMapper = r => r) {
267
+ this.res = res;
268
+ this.answerResponseMapper = answerResponseMapper;
269
+ }
270
+ show() {
271
+ return this.res.challenge;
272
+ }
273
+ answer(answer) {
274
+ return service.post(this.res.answerUrl, { answer }).then(r => this.answerResponseMapper(r));
275
+ }
276
+ }
277
+ function initialize(options) {
278
+ const { authorization: _authorization, service: _service } = initialize$1(options);
279
+ authorization = _authorization;
280
+ service = _service;
281
+ service.setWriteDefaults({
282
+ headers: {
283
+ "Content-Type": "application/json"
284
+ }
285
+ });
286
+ }
287
+ function verifyToken(token, baseUrl, headers = {}) {
288
+ const _baseUrl = baseUrl ? baseUrl : service ? service.baseUrl : undefined;
289
+ if (!_baseUrl) {
290
+ throw new Error("You should pass the base url of the server or call the initialize method.");
291
+ }
292
+ const req = new Axios({ baseURL: _baseUrl });
293
+ return req.get(`${identitySegment}/verify`, { headers: { Authorization: token, ...headers } });
294
+ }
295
+ async function login(identifier, password, tokenLifeSpan, headers) {
296
+ checkInitialized(authorization, service);
297
+ return service
298
+ .post("/passport/identify", {
299
+ identifier,
300
+ password,
301
+ expires: tokenLifeSpan
302
+ }, { headers })
303
+ .then(r => {
304
+ if (isTokenScheme(r)) {
305
+ return r.token;
306
+ }
307
+ const challenge = new _Challenge(r, r => r.token);
308
+ return challenge;
309
+ });
310
+ }
311
+ function isTokenScheme(response) {
312
+ return typeof response.token == "string";
313
+ }
314
+ function isChallenge(tokenOrChallenge) {
315
+ return typeof tokenOrChallenge.show == "function" && typeof tokenOrChallenge.answer == "function";
316
+ }
317
+ async function loginWithStrategy(id) {
318
+ checkInitialized(authorization, service);
319
+ const { url, state } = await service.get(`/passport/strategy/${id}/url`);
320
+ const token = new rxjs.Observable(observer => {
321
+ service
322
+ .post("/passport/identify", {
323
+ state
324
+ })
325
+ .then(r => {
326
+ if (isTokenScheme(r)) {
327
+ observer.next(r.token);
328
+ }
329
+ else {
330
+ const challenge = new _Challenge(r, r => r.token);
331
+ observer.next(challenge);
332
+ }
333
+ observer.complete();
334
+ })
335
+ .catch(e => observer.error(e));
336
+ });
337
+ return {
338
+ url,
339
+ token
340
+ };
341
+ }
342
+ exports.authfactor = void 0;
343
+ (function (authfactor) {
344
+ function list(headers) {
345
+ return service.get("passport/identity/factors", { headers });
346
+ }
347
+ authfactor.list = list;
348
+ async function register(identityId, factor, headers) {
349
+ const response = await service.post(`passport/identity/${identityId}/start-factor-verification`, factor, { headers });
350
+ const challenge = new _Challenge(response, response => response.message);
351
+ return challenge;
352
+ }
353
+ authfactor.register = register;
354
+ function unregister(identityId, headers) {
355
+ return service.delete(`passport/identity/${identityId}/factors`, { headers });
356
+ }
357
+ authfactor.unregister = unregister;
358
+ })(exports.authfactor || (exports.authfactor = {}));
359
+ function getStrategies(headers) {
360
+ return service.get("/passport/strategies", { headers });
361
+ }
362
+ function get(id, headers) {
363
+ checkInitialized(authorization, service);
364
+ return service.get(`${identitySegment}/${id}`, { headers });
365
+ }
366
+ function getAll(queryParams = {}, headers) {
367
+ checkInitialized(authorization, service);
368
+ return service.get(identitySegment, {
369
+ params: queryParams,
370
+ headers
371
+ });
372
+ }
373
+ async function insert(identity, headers) {
374
+ checkInitialized(authorization, service);
375
+ identity = deepCopyJSON(identity);
376
+ const desiredPolicies = identity.policies;
377
+ delete identity.policies;
378
+ const insertedIdentity = await service.post(identitySegment, identity, { headers });
379
+ return exports.policy.attach(insertedIdentity._id, desiredPolicies).then(policies => {
380
+ insertedIdentity.policies = policies;
381
+ return insertedIdentity;
382
+ });
383
+ }
384
+ async function update(id, identity, headers) {
385
+ checkInitialized(authorization, service);
386
+ const existingIdentity = await service.get(`${identitySegment}/${id}`);
387
+ identity = deepCopyJSON(identity);
388
+ const desiredPolicies = identity.policies;
389
+ delete identity.policies;
390
+ const { onlyInFirst: policiesForDetach, onlyInSecond: policiesForAttach } = getArrayDifferences(existingIdentity.policies, desiredPolicies);
391
+ const updatedIdentity = await service.put(`${identitySegment}/${id}`, identity, {
392
+ headers
393
+ });
394
+ updatedIdentity.policies = desiredPolicies;
395
+ await exports.policy.attach(id, policiesForAttach);
396
+ await exports.policy.detach(id, policiesForDetach);
397
+ return updatedIdentity;
398
+ }
399
+ function remove(id, headers) {
400
+ checkInitialized(authorization, service);
401
+ return service.delete(`${identitySegment}/${id}`, { headers });
402
+ }
403
+ function removeMany(ids, headers) {
404
+ checkInitialized(authorization, service);
405
+ const batchReqs = Batch.prepareRemoveRequest(ids, identitySegment, service.getAuthorization(), headers);
406
+ return service
407
+ .post("batch", batchReqs, { headers })
408
+ .then(response => Batch.handleBatchResponse(batchReqs, response));
409
+ }
410
+ exports.policy = void 0;
411
+ (function (policy) {
412
+ function attach(identityId, policyIds = [], headers) {
413
+ checkInitialized(authorization, service);
414
+ const promises = [];
415
+ const attachedPolicies = new Set();
416
+ for (const policyId of policyIds) {
417
+ const promise = service
418
+ .put(`${identitySegment}/${identityId}/policy/${policyId}`, {}, { headers })
419
+ .then(() => attachedPolicies.add(policyId))
420
+ .catch(e => {
421
+ console.error(`Failed to attach policy with id ${policyId}: `, e);
422
+ return e;
423
+ });
424
+ promises.push(promise);
425
+ }
426
+ return Promise.all(promises).then(() => Array.from(attachedPolicies));
427
+ }
428
+ policy.attach = attach;
429
+ function detach(identityId, policyIds = [], headers) {
430
+ checkInitialized(authorization, service);
431
+ const promises = [];
432
+ const detachedPolicies = new Set();
433
+ for (const policyId of policyIds) {
434
+ const promise = service
435
+ .delete(`${identitySegment}/${identityId}/policy/${policyId}`, { headers })
436
+ .then(() => detachedPolicies.add(policyId))
437
+ .catch(e => {
438
+ console.error(`Failed to detach policy with id ${policyId}: `, e);
439
+ return e;
440
+ });
441
+ promises.push(promise);
442
+ }
443
+ return Promise.all(promises).then(() => Array.from(detachedPolicies));
444
+ }
445
+ policy.detach = detach;
446
+ })(exports.policy || (exports.policy = {}));
447
+ function getArrayDifferences(arr1, arr2) {
448
+ const set1 = new Set(arr1);
449
+ const set2 = new Set(arr2);
450
+ const onlyInFirst = arr1.filter(item => !set2.has(item));
451
+ const onlyInSecond = arr2.filter(item => !set1.has(item));
452
+ return { onlyInFirst, onlyInSecond };
453
+ }
454
+
455
+ exports.get = get;
456
+ exports.getAll = getAll;
457
+ exports.getStrategies = getStrategies;
458
+ exports.initialize = initialize;
459
+ exports.insert = insert;
460
+ exports.isChallenge = isChallenge;
461
+ exports.login = login;
462
+ exports.loginWithStrategy = loginWithStrategy;
463
+ exports.remove = remove;
464
+ exports.removeMany = removeMany;
465
+ exports.update = update;
466
+ exports.verifyToken = verifyToken;
467
+ //# sourceMappingURL=index.js.map
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../internal_common/dist/src/request.js","../../internal_common/dist/src/initialize.js","../../internal_common/dist/src/batch.js","../../../core/copy/dist/src/copy.js","../../src/identity.ts"],"sourcesContent":["import axios from \"axios\";\nexport function logWarning(response) {\n const warning = response.headers[\"warning\"];\n if (warning) {\n console.warn(warning);\n }\n}\nexport class Axios {\n constructor(config) {\n this.interceptors = {\n request: {\n onFulfilled: (request) => {\n request.maxBodyLength = Number.MAX_SAFE_INTEGER;\n request.maxContentLength = Number.MAX_SAFE_INTEGER;\n if (!request.headers[\"Authorization\"]) {\n throw new Error(\"You should call initialize method with a valid apikey or identity token.\");\n }\n return request;\n },\n onRejected: (error) => {\n return Promise.reject(error);\n }\n },\n response: {\n onFulfilled: (response) => {\n logWarning(response);\n return response.data;\n },\n onRejected: (error) => {\n return Promise.reject(error.response ? error.response.data : error);\n }\n }\n };\n this.instance = axios.create(config);\n this.instance.interceptors.request.use(this.interceptors.request.onFulfilled, this.interceptors.request.onRejected);\n this.instance.interceptors.response.use(this.interceptors.response.onFulfilled, this.interceptors.response.onRejected);\n this.baseUrl = this.instance.defaults.baseURL;\n this.instance.defaults.paramsSerializer = paramsSerializer;\n }\n setBaseUrl(url) {\n this.instance.defaults.baseURL = url;\n this.baseUrl = url;\n }\n setWriteDefaults(writeDefaults) {\n for (const [header, value] of Object.entries(writeDefaults.headers)) {\n this.instance.defaults.headers.post[header] = value;\n this.instance.defaults.headers.put[header] = value;\n }\n }\n setAuthorization(authorization) {\n this.instance.defaults.headers[\"Authorization\"] = authorization;\n }\n getAuthorization() {\n return this.instance.defaults.headers[\"Authorization\"].toString();\n }\n get(url, config) {\n return this.instance.get(url, config);\n }\n post(url, body, config) {\n return this.instance.post(url, body, config);\n }\n put(url, body, config) {\n return this.instance.put(url, body, config);\n }\n patch(url, body, config) {\n return this.instance.patch(url, body, config);\n }\n delete(url, config) {\n return this.instance.delete(url, config);\n }\n request(config) {\n return this.instance.request(config);\n }\n}\nfunction encode(val) {\n return encodeURIComponent(val)\n .replace(/%3A/gi, \":\")\n .replace(/%24/g, \"$\")\n .replace(/%2C/gi, \",\")\n .replace(/%20/g, \"+\")\n .replace(/%5B/gi, \"[\")\n .replace(/%5D/gi, \"]\");\n}\nfunction utilsIsURLSearchParams(val) {\n return typeof URLSearchParams !== \"undefined\" && val instanceof URLSearchParams;\n}\nfunction utilsIsArray(val) {\n return toString.call(val) === \"[object Array]\";\n}\nfunction utilsIsDate(val) {\n return toString.call(val) === \"[object Date]\";\n}\nfunction utilsIsObject(val) {\n return val !== null && typeof val === \"object\";\n}\nfunction utilsForEach(obj, fn) {\n if (obj === null || typeof obj === \"undefined\") {\n return;\n }\n if (typeof obj !== \"object\") {\n obj = [obj];\n }\n if (utilsIsArray(obj)) {\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n }\n else {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\nfunction paramsSerializer(params) {\n if (utilsIsURLSearchParams(params)) {\n return params.toString();\n }\n var parts = [];\n utilsForEach(params, function serialize(val, key) {\n if (val === null || typeof val === \"undefined\") {\n return;\n }\n if (utilsIsArray(val)) {\n key = key + \"[]\";\n }\n else {\n val = [val];\n }\n utilsForEach(val, function parseValue(v) {\n if (utilsIsDate(v)) {\n v = v.toISOString();\n }\n else if (utilsIsObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + \"=\" + encode(v));\n });\n });\n return parts.join(\"&\");\n}\n//# sourceMappingURL=request.js.map","import { Axios } from \"./request\";\nlet service;\nexport function initialize(options) {\n let authorization;\n if (\"apikey\" in options) {\n authorization = `APIKEY ${options.apikey}`;\n }\n else if (\"identity\" in options) {\n authorization = `IDENTITY ${options.identity}`;\n }\n else if (\"user\" in options) {\n authorization = `USER ${options.user}`;\n }\n const publicUrl = options.publicUrl || getPublicUrl();\n if (!publicUrl) {\n throw new Error(\"Public url must be provided.\");\n }\n if (!service) {\n service = new Axios({});\n }\n service.setBaseUrl(publicUrl);\n if (authorization) {\n service.setAuthorization(authorization);\n }\n return { authorization, publicUrl, service };\n}\nexport function checkInitialized(authorization, service, options = { skipAuthCheck: false }) {\n if (!authorization && !options.skipAuthCheck) {\n throw new Error(\"You should call initialize method with a valid credentials.\");\n }\n if (!service) {\n throw new Error(\"You should call initialize method with a valid publicUrl.\");\n }\n}\nfunction getPublicUrl() {\n return isPlatformBrowser() ? undefined : process.env.__INTERNAL__SPICA__PUBLIC_URL__;\n}\nexport function isPlatformBrowser() {\n return typeof window !== \"undefined\";\n}\n//# sourceMappingURL=initialize.js.map","export var Batch;\n(function (Batch) {\n function prepareInsertRequest(resources, url, auth, headers) {\n return {\n requests: resources.map((resource, i) => {\n headers = addAuthHeader(headers, auth);\n return {\n id: i.toString(),\n body: resource,\n method: \"POST\",\n url: url,\n headers: headers\n };\n })\n };\n }\n Batch.prepareInsertRequest = prepareInsertRequest;\n function prepareRemoveRequest(ids, url, auth, headers) {\n return {\n requests: ids.map((id, i) => {\n headers = addAuthHeader(headers, auth);\n return {\n id: i.toString(),\n body: undefined,\n method: \"DELETE\",\n url: `${url}/${id}`,\n headers: headers\n };\n })\n };\n }\n Batch.prepareRemoveRequest = prepareRemoveRequest;\n function handleBatchResponse({ requests }, { responses }) {\n const sortById = (a, b) => Number(a.id) - Number(b.id);\n const successResponses = responses\n .sort(sortById)\n .filter(r => r.status >= 200 && r.status < 300);\n const failureResponses = responses\n .sort(sortById)\n .filter(r => r.status >= 400 && r.status <= 500);\n const successes = successResponses.map(sr => {\n const req = requests.find(r => r.id == sr.id);\n return {\n request: (req.body || req.url),\n response: sr.body\n };\n });\n const failures = failureResponses.map(fr => {\n const req = requests.find(r => r.id == fr.id);\n return {\n request: (req.body || req.url),\n response: {\n error: fr.body[\"error\"],\n message: fr.body[\"message\"]\n }\n };\n });\n return {\n successes,\n failures\n };\n }\n Batch.handleBatchResponse = handleBatchResponse;\n})(Batch || (Batch = {}));\nfunction addAuthHeader(headers, auth) {\n headers = headers || {};\n headers[\"Authorization\"] = auth;\n return headers;\n}\n//# sourceMappingURL=batch.js.map","export function deepCopyJSON(param) {\n return JSON.parse(JSON.stringify(param));\n}\n//# sourceMappingURL=copy.js.map",null],"names":["service","initialize","_initialize","Observable","authfactor","policy"],"mappings":";;;;;AACO,SAAS,UAAU,CAAC,QAAQ,EAAE;AACrC,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;AAC/C,IAAI,IAAI,OAAO,EAAE;AACjB,QAAQ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7B,IAAI;AACJ;AACO,MAAM,KAAK,CAAC;AACnB,IAAI,WAAW,CAAC,MAAM,EAAE;AACxB,QAAQ,IAAI,CAAC,YAAY,GAAG;AAC5B,YAAY,OAAO,EAAE;AACrB,gBAAgB,WAAW,EAAE,CAAC,OAAO,KAAK;AAC1C,oBAAoB,OAAO,CAAC,aAAa,GAAG,MAAM,CAAC,gBAAgB;AACnE,oBAAoB,OAAO,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB;AACtE,oBAAoB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;AAC3D,wBAAwB,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC;AACnH,oBAAoB;AACpB,oBAAoB,OAAO,OAAO;AAClC,gBAAgB,CAAC;AACjB,gBAAgB,UAAU,EAAE,CAAC,KAAK,KAAK;AACvC,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AAChD,gBAAgB;AAChB,aAAa;AACb,YAAY,QAAQ,EAAE;AACtB,gBAAgB,WAAW,EAAE,CAAC,QAAQ,KAAK;AAC3C,oBAAoB,UAAU,CAAC,QAAQ,CAAC;AACxC,oBAAoB,OAAO,QAAQ,CAAC,IAAI;AACxC,gBAAgB,CAAC;AACjB,gBAAgB,UAAU,EAAE,CAAC,KAAK,KAAK;AACvC,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC;AACvF,gBAAgB;AAChB;AACA,SAAS;AACT,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;AAC5C,QAAQ,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC;AAC3H,QAAQ,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;AAC9H,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACrD,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,GAAG,gBAAgB;AAClE,IAAI;AACJ,IAAI,UAAU,CAAC,GAAG,EAAE;AACpB,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,GAAG,GAAG;AAC5C,QAAQ,IAAI,CAAC,OAAO,GAAG,GAAG;AAC1B,IAAI;AACJ,IAAI,gBAAgB,CAAC,aAAa,EAAE;AACpC,QAAQ,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;AAC7E,YAAY,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK;AAC/D,YAAY,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK;AAC9D,QAAQ;AACR,IAAI;AACJ,IAAI,gBAAgB,CAAC,aAAa,EAAE;AACpC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,aAAa;AACvE,IAAI;AACJ,IAAI,gBAAgB,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE;AACzE,IAAI;AACJ,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE;AACrB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;AAC7C,IAAI;AACJ,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;AAC5B,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC;AACpD,IAAI;AACJ,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;AAC3B,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC;AACnD,IAAI;AACJ,IAAI,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;AAC7B,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC;AACrD,IAAI;AACJ,IAAI,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE;AACxB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC;AAChD,IAAI;AACJ,IAAI,OAAO,CAAC,MAAM,EAAE;AACpB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;AAC5C,IAAI;AACJ;AACA,SAAS,MAAM,CAAC,GAAG,EAAE;AACrB,IAAI,OAAO,kBAAkB,CAAC,GAAG;AACjC,SAAS,OAAO,CAAC,OAAO,EAAE,GAAG;AAC7B,SAAS,OAAO,CAAC,MAAM,EAAE,GAAG;AAC5B,SAAS,OAAO,CAAC,OAAO,EAAE,GAAG;AAC7B,SAAS,OAAO,CAAC,MAAM,EAAE,GAAG;AAC5B,SAAS,OAAO,CAAC,OAAO,EAAE,GAAG;AAC7B,SAAS,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;AAC9B;AACA,SAAS,sBAAsB,CAAC,GAAG,EAAE;AACrC,IAAI,OAAO,OAAO,eAAe,KAAK,WAAW,IAAI,GAAG,YAAY,eAAe;AACnF;AACA,SAAS,YAAY,CAAC,GAAG,EAAE;AAC3B,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,gBAAgB;AAClD;AACA,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,eAAe;AACjD;AACA,SAAS,aAAa,CAAC,GAAG,EAAE;AAC5B,IAAI,OAAO,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;AAClD;AACA,SAAS,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE;AAC/B,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;AACpD,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACjC,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC;AACnB,IAAI;AACJ,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;AAC3B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACpD,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;AACzC,QAAQ;AACR,IAAI;AACJ,SAAS;AACT,QAAQ,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE;AAC7B,YAAY,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;AAChE,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACjD,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ;AACA,SAAS,gBAAgB,CAAC,MAAM,EAAE;AAClC,IAAI,IAAI,sBAAsB,CAAC,MAAM,CAAC,EAAE;AACxC,QAAQ,OAAO,MAAM,CAAC,QAAQ,EAAE;AAChC,IAAI;AACJ,IAAI,IAAI,KAAK,GAAG,EAAE;AAClB,IAAI,YAAY,CAAC,MAAM,EAAE,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE;AACtD,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;AACxD,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;AAC/B,YAAY,GAAG,GAAG,GAAG,GAAG,IAAI;AAC5B,QAAQ;AACR,aAAa;AACb,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC;AACvB,QAAQ;AACR,QAAQ,YAAY,CAAC,GAAG,EAAE,SAAS,UAAU,CAAC,CAAC,EAAE;AACjD,YAAY,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE;AAChC,gBAAgB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;AACnC,YAAY;AACZ,iBAAiB,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE;AACvC,gBAAgB,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACrC,YAAY;AACZ,YAAY,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACrD,QAAQ,CAAC,CAAC;AACV,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B;;AC5IA,IAAIA,SAAO;AACJ,SAASC,YAAU,CAAC,OAAO,EAAE;AACpC,IAAI,IAAI,aAAa;AACrB,IAAI,IAAI,QAAQ,IAAI,OAAO,EAAE;AAC7B,QAAQ,aAAa,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAClD,IAAI;AACJ,SAAS,IAAI,UAAU,IAAI,OAAO,EAAE;AACpC,QAAQ,aAAa,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AACtD,IAAI;AACJ,SAAS,IAAI,MAAM,IAAI,OAAO,EAAE;AAChC,QAAQ,aAAa,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9C,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,YAAY,EAAE;AACzD,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,QAAQ,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;AACvD,IAAI;AACJ,IAAI,IAAI,CAACD,SAAO,EAAE;AAClB,QAAQA,SAAO,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;AAC/B,IAAI;AACJ,IAAIA,SAAO,CAAC,UAAU,CAAC,SAAS,CAAC;AACjC,IAAI,IAAI,aAAa,EAAE;AACvB,QAAQA,SAAO,CAAC,gBAAgB,CAAC,aAAa,CAAC;AAC/C,IAAI;AACJ,IAAI,OAAO,EAAE,aAAa,EAAE,SAAS,WAAEA,SAAO,EAAE;AAChD;AACO,SAAS,gBAAgB,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE;AAC7F,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAClD,QAAQ,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC;AACtF,IAAI;AACJ,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC;AACpF,IAAI;AACJ;AACA,SAAS,YAAY,GAAG;AACxB,IAAI,OAAO,iBAAiB,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B;AACxF;AACO,SAAS,iBAAiB,GAAG;AACpC,IAAI,OAAO,OAAO,MAAM,KAAK,WAAW;AACxC;;ACvCO,IAAI,KAAK;AAChB,CAAC,UAAU,KAAK,EAAE;AAClB,IAAI,SAAS,oBAAoB,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;AACjE,QAAQ,OAAO;AACf,YAAY,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK;AACrD,gBAAgB,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC;AACtD,gBAAgB,OAAO;AACvB,oBAAoB,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;AACpC,oBAAoB,IAAI,EAAE,QAAQ;AAClC,oBAAoB,MAAM,EAAE,MAAM;AAClC,oBAAoB,GAAG,EAAE,GAAG;AAC5B,oBAAoB,OAAO,EAAE;AAC7B,iBAAiB;AACjB,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,KAAK,CAAC,oBAAoB,GAAG,oBAAoB;AACrD,IAAI,SAAS,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;AAC3D,QAAQ,OAAO;AACf,YAAY,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK;AACzC,gBAAgB,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC;AACtD,gBAAgB,OAAO;AACvB,oBAAoB,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;AACpC,oBAAoB,IAAI,EAAE,SAAS;AACnC,oBAAoB,MAAM,EAAE,QAAQ;AACpC,oBAAoB,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,oBAAoB,OAAO,EAAE;AAC7B,iBAAiB;AACjB,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,KAAK,CAAC,oBAAoB,GAAG,oBAAoB;AACrD,IAAI,SAAS,mBAAmB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;AAC9D,QAAQ,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9D,QAAQ,MAAM,gBAAgB,GAAG;AACjC,aAAa,IAAI,CAAC,QAAQ;AAC1B,aAAa,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC;AAC3D,QAAQ,MAAM,gBAAgB,GAAG;AACjC,aAAa,IAAI,CAAC,QAAQ;AAC1B,aAAa,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC;AAC5D,QAAQ,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,EAAE,IAAI;AACrD,YAAY,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACzD,YAAY,OAAO;AACnB,gBAAgB,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC;AAC9C,gBAAgB,QAAQ,EAAE,EAAE,CAAC;AAC7B,aAAa;AACb,QAAQ,CAAC,CAAC;AACV,QAAQ,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,EAAE,IAAI;AACpD,YAAY,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACzD,YAAY,OAAO;AACnB,gBAAgB,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC;AAC9C,gBAAgB,QAAQ,EAAE;AAC1B,oBAAoB,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3C,oBAAoB,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS;AAC9C;AACA,aAAa;AACb,QAAQ,CAAC,CAAC;AACV,QAAQ,OAAO;AACf,YAAY,SAAS;AACrB,YAAY;AACZ,SAAS;AACT,IAAI;AACJ,IAAI,KAAK,CAAC,mBAAmB,GAAG,mBAAmB;AACnD,CAAC,EAAE,KAAK,KAAK,KAAK,GAAG,EAAE,CAAC,CAAC;AACzB,SAAS,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE;AACtC,IAAI,OAAO,GAAG,OAAO,IAAI,EAAE;AAC3B,IAAI,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;AACnC,IAAI,OAAO,OAAO;AAClB;;ACpEO,SAAS,YAAY,CAAC,KAAK,EAAE;AACpC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC5C;;AC0BA,IAAI,aAAa;AAEjB,IAAI,OAAoB;AAExB,MAAM,eAAe,GAAG,mBAAmB;AAE3C,MAAM,UAAU,CAAA;AACd,IAAA,WAAA,CACU,GAAiB,EACjB,oBAAA,GAAwC,CAAC,IAAI,CAAC,EAAA;QAD9C,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;IAC3B;IAEH,IAAI,GAAA;AACF,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS;IAC3B;AAEA,IAAA,MAAM,CAAC,MAAc,EAAA;AACnB,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,EAAC,MAAM,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAC3F;AACD;AAEK,SAAU,UAAU,CAAC,OAAsD,EAAA;AAC/E,IAAA,MAAM,EAAC,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAC,GAAGE,YAAW,CAAC,OAAO,CAAC;IAE/E,aAAa,GAAG,cAAc;IAE9B,OAAO,GAAG,QAAQ;IAElB,OAAO,CAAC,gBAAgB,CAAC;AACvB,QAAA,OAAO,EAAE;AACP,YAAA,cAAc,EAAE;AACjB;AACF,KAAA,CAAC;AACJ;AAEM,SAAU,WAAW,CAAC,KAAa,EAAE,OAAgB,EAAE,UAAkB,EAAE,EAAA;IAC/E,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS;IAE1E,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC;IAC9F;IAEA,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,EAAC,OAAO,EAAE,QAAQ,EAAC,CAAC;IAE1C,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,eAAe,CAAA,OAAA,CAAS,EAAE,EAAC,OAAO,EAAE,EAAC,aAAa,EAAE,KAAK,EAAE,GAAG,OAAO,EAAC,EAAC,CAAC;AAC5F;AAcO,eAAe,KAAK,CACzB,UAAkB,EAClB,QAAgB,EAChB,aAAsB,EACtB,OAAgB,EAAA;AAEhB,IAAA,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC;AAExC,IAAA,OAAO;SACJ,IAAI,CACH,oBAAoB,EACpB;QACE,UAAU;QACV,QAAQ;AACR,QAAA,OAAO,EAAE;KACV,EACD,EAAC,OAAO,EAAC;SAEV,IAAI,CAAC,CAAC,IAAG;AACR,QAAA,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE;YACpB,OAAO,CAAC,CAAC,KAAK;QAChB;AAEA,QAAA,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AACjD,QAAA,OAAO,SAAS;AAClB,IAAA,CAAC,CAAC;AACN;AAGA,SAAS,aAAa,CAAC,QAAa,EAAA;AAClC,IAAA,OAAO,OAAO,QAAQ,CAAC,KAAK,IAAI,QAAQ;AAC1C;AAEM,SAAU,WAAW,CAAC,gBAAqB,EAAA;AAC/C,IAAA,OAAO,OAAO,gBAAgB,CAAC,IAAI,IAAI,UAAU,IAAI,OAAO,gBAAgB,CAAC,MAAM,IAAI,UAAU;AACnG;AAEO,eAAe,iBAAiB,CAAC,EAAU,EAAA;AAChD,IAAA,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC;AAExC,IAAA,MAAM,EAAC,GAAG,EAAE,KAAK,EAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,CAAA,mBAAA,EAAsB,EAAE,CAAA,IAAA,CAAM,CAC/B;AAED,IAAA,MAAM,KAAK,GAAmC,IAAIC,eAAU,CAAC,QAAQ,IAAG;QACtE;aACG,IAAI,CAA6B,oBAAoB,EAAE;YACtD;SACD;aACA,IAAI,CAAC,CAAC,IAAG;AACR,YAAA,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE;AACpB,gBAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YACxB;iBAAO;AACL,gBAAA,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AACjD,gBAAA,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;YAC1B;YACA,QAAQ,CAAC,QAAQ,EAAE;AACrB,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClC,IAAA,CAAC,CAAC;IAEF,OAAO;QACL,GAAG;QACH;KACD;AACH;AAEiBC;AAAjB,CAAA,UAAiB,UAAU,EAAA;IACzB,SAAgB,IAAI,CAAC,OAAgB,EAAA;QACnC,OAAO,OAAO,CAAC,GAAG,CAAiB,2BAA2B,EAAE,EAAC,OAAO,EAAC,CAAC;IAC5E;AAFgB,IAAA,UAAA,CAAA,IAAI,OAEnB;AAEM,IAAA,eAAe,QAAQ,CAC5B,UAAkB,EAClB,MAAkB,EAClB,OAAgB,EAAA;AAEhB,QAAA,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CACjC,CAAA,kBAAA,EAAqB,UAAU,CAAA,0BAAA,CAA4B,EAC3D,MAAM,EACN,EAAC,OAAO,EAAC,CACV;AAED,QAAA,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC;AACxE,QAAA,OAAO,SAAS;IAClB;AAbsB,IAAA,UAAA,CAAA,QAAQ,WAa7B;AAED,IAAA,SAAgB,UAAU,CAAC,UAAkB,EAAE,OAAgB,EAAA;AAC7D,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAA,kBAAA,EAAqB,UAAU,CAAA,QAAA,CAAU,EAAE,EAAC,OAAO,EAAC,CAAC;IAC7E;AAFgB,IAAA,UAAA,CAAA,UAAU,aAEzB;AACH,CAAC,EAvBgBA,kBAAU,KAAVA,kBAAU,GAAA,EAAA,CAAA,CAAA;AAyBrB,SAAU,aAAa,CAAC,OAAgB,EAAA;IAC5C,OAAO,OAAO,CAAC,GAAG,CAAa,sBAAsB,EAAE,EAAC,OAAO,EAAC,CAAC;AACnE;AAEM,SAAU,GAAG,CAAC,EAAU,EAAE,OAAgB,EAAA;AAC9C,IAAA,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC;AAExC,IAAA,OAAO,OAAO,CAAC,GAAG,CAAc,GAAG,eAAe,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE,EAAE,EAAC,OAAO,EAAC,CAAC;AACxE;SAsBgB,MAAM,CACpB,WAAA,GAMI,EAAE,EACN,OAAgB,EAAA;AAEhB,IAAA,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC;AAExC,IAAA,OAAO,OAAO,CAAC,GAAG,CAA2C,eAAe,EAAE;AAC5E,QAAA,MAAM,EAAE,WAAW;QACnB;AACD,KAAA,CAAC;AACJ;AAEO,eAAe,MAAM,CAAC,QAAwB,EAAE,OAAgB,EAAA;AACrE,IAAA,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC;AAExC,IAAA,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;AACjC,IAAA,MAAM,eAAe,GAAG,QAAQ,CAAC,QAAQ;IACzC,OAAO,QAAQ,CAAC,QAAQ;AAExB,IAAA,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,IAAI,CAAc,eAAe,EAAE,QAAQ,EAAE,EAAC,OAAO,EAAC,CAAC;AAE9F,IAAA,OAAOC,cAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAG;AAC1E,QAAA,gBAAgB,CAAC,QAAQ,GAAG,QAAQ;AACpC,QAAA,OAAO,gBAAgB;AACzB,IAAA,CAAC,CAAC;AACJ;AAEO,eAAe,MAAM,CAC1B,EAAU,EACV,QAAwB,EACxB,OAAgB,EAAA;AAEhB,IAAA,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC;AAExC,IAAA,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAc,CAAA,EAAG,eAAe,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE,CAAC;AAEnF,IAAA,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;AACjC,IAAA,MAAM,eAAe,GAAG,QAAQ,CAAC,QAAQ;IACzC,OAAO,QAAQ,CAAC,QAAQ;AAExB,IAAA,MAAM,EAAC,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,iBAAiB,EAAC,GAAG,mBAAmB,CAC3F,gBAAgB,CAAC,QAAQ,EACzB,eAAe,CAChB;AAED,IAAA,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CAAc,CAAA,EAAG,eAAe,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE,EAAE,QAAQ,EAAE;QAC3F;AACD,KAAA,CAAC;AACF,IAAA,eAAe,CAAC,QAAQ,GAAG,eAAe;IAE1C,MAAMA,cAAM,CAAC,MAAM,CAAC,EAAE,EAAE,iBAAiB,CAAC;IAC1C,MAAMA,cAAM,CAAC,MAAM,CAAC,EAAE,EAAE,iBAAiB,CAAC;AAE1C,IAAA,OAAO,eAAe;AACxB;AAEM,SAAU,MAAM,CAAC,EAAU,EAAE,OAAgB,EAAA;AACjD,IAAA,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC;AAExC,IAAA,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,eAAe,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE,EAAE,EAAC,OAAO,EAAC,CAAC;AAC9D;AAEM,SAAU,UAAU,CAAC,GAAa,EAAE,OAAgB,EAAA;AACxD,IAAA,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC;AAExC,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,oBAAoB,CAC1C,GAAG,EACH,eAAe,EACf,OAAO,CAAC,gBAAgB,EAAE,EAC1B,OAAO,CACR;AAED,IAAA,OAAO;SACJ,IAAI,CAAwB,OAAO,EAAE,SAAS,EAAE,EAAC,OAAO,EAAC;AACzD,SAAA,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,mBAAmB,CAAS,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC7E;AAGiBA;AAAjB,CAAA,UAAiB,MAAM,EAAA;AACrB,IAAA,SAAgB,MAAM,CACpB,UAAkB,EAClB,SAAA,GAAsB,EAAE,EACxB,OAAgB,EAAA;AAEhB,QAAA,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC;QAExC,MAAM,QAAQ,GAA2B,EAAE;AAC3C,QAAA,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU;AAE1C,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,MAAM,OAAO,GAAG;AACb,iBAAA,GAAG,CAAM,CAAA,EAAG,eAAe,CAAA,CAAA,EAAI,UAAU,CAAA,QAAA,EAAW,QAAQ,CAAA,CAAE,EAAE,EAAE,EAAE,EAAC,OAAO,EAAC;iBAC7E,IAAI,CAAC,MAAM,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC;iBACzC,KAAK,CAAC,CAAC,IAAG;gBACT,OAAO,CAAC,KAAK,CAAC,CAAA,gCAAA,EAAmC,QAAQ,CAAA,EAAA,CAAI,EAAE,CAAC,CAAC;AACjE,gBAAA,OAAO,CAAC;AACV,YAAA,CAAC,CAAC;AACJ,YAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;QACxB;AAEA,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACvE;AAtBgB,IAAA,MAAA,CAAA,MAAM,SAsBrB;AAED,IAAA,SAAgB,MAAM,CACpB,UAAkB,EAClB,SAAA,GAAsB,EAAE,EACxB,OAAgB,EAAA;AAEhB,QAAA,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC;QAExC,MAAM,QAAQ,GAA2B,EAAE;AAC3C,QAAA,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU;AAE1C,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,MAAM,OAAO,GAAG;AACb,iBAAA,MAAM,CAAC,CAAA,EAAG,eAAe,CAAA,CAAA,EAAI,UAAU,CAAA,QAAA,EAAW,QAAQ,CAAA,CAAE,EAAE,EAAC,OAAO,EAAC;iBACvE,IAAI,CAAC,MAAM,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC;iBACzC,KAAK,CAAC,CAAC,IAAG;gBACT,OAAO,CAAC,KAAK,CAAC,CAAA,gCAAA,EAAmC,QAAQ,CAAA,EAAA,CAAI,EAAE,CAAC,CAAC;AACjE,gBAAA,OAAO,CAAC;AACV,YAAA,CAAC,CAAC;AACJ,YAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;QACxB;AAEA,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACvE;AAtBgB,IAAA,MAAA,CAAA,MAAM,SAsBrB;AACH,CAAC,EAhDgBA,cAAM,KAANA,cAAM,GAAA,EAAA,CAAA,CAAA;AAkDvB,SAAS,mBAAmB,CAAI,IAAS,EAAE,IAAS,EAAA;AAClD,IAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC;AAC1B,IAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC;AAE1B,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxD,IAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAEzD,IAAA,OAAO,EAAC,WAAW,EAAE,YAAY,EAAC;AACpC;;;;;;;;;;;;;;;"}