@transcend-io/cli 4.12.0 → 4.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +137 -14
  2. package/build/cli-request-upload.d.ts +3 -0
  3. package/build/cli-request-upload.d.ts.map +1 -0
  4. package/build/cli-request-upload.js +57 -0
  5. package/build/cli-request-upload.js.map +1 -0
  6. package/build/graphql/fetchAllAttributeKeys.d.ts +15 -0
  7. package/build/graphql/fetchAllAttributeKeys.d.ts.map +1 -0
  8. package/build/graphql/fetchAllAttributeKeys.js +32 -0
  9. package/build/graphql/fetchAllAttributeKeys.js.map +1 -0
  10. package/build/graphql/gqls/attributeKey.d.ts +2 -0
  11. package/build/graphql/gqls/attributeKey.d.ts.map +1 -0
  12. package/build/graphql/gqls/attributeKey.js +19 -0
  13. package/build/graphql/gqls/attributeKey.js.map +1 -0
  14. package/build/graphql/gqls/enricher.d.ts +10 -0
  15. package/build/graphql/gqls/enricher.d.ts.map +1 -1
  16. package/build/graphql/gqls/enricher.js +11 -1
  17. package/build/graphql/gqls/enricher.js.map +1 -1
  18. package/build/graphql/gqls/index.d.ts +1 -0
  19. package/build/graphql/gqls/index.d.ts.map +1 -1
  20. package/build/graphql/gqls/index.js +1 -0
  21. package/build/graphql/gqls/index.js.map +1 -1
  22. package/build/graphql/index.d.ts +1 -0
  23. package/build/graphql/index.d.ts.map +1 -1
  24. package/build/graphql/index.js +1 -0
  25. package/build/graphql/index.js.map +1 -1
  26. package/build/requests/constants.d.ts +32 -5
  27. package/build/requests/constants.d.ts.map +1 -1
  28. package/build/requests/constants.js +21 -3
  29. package/build/requests/constants.js.map +1 -1
  30. package/build/requests/fuzzyMatchColumns.d.ts +3 -2
  31. package/build/requests/fuzzyMatchColumns.d.ts.map +1 -1
  32. package/build/requests/fuzzyMatchColumns.js +4 -2
  33. package/build/requests/fuzzyMatchColumns.js.map +1 -1
  34. package/build/requests/index.d.ts +3 -0
  35. package/build/requests/index.d.ts.map +1 -1
  36. package/build/requests/index.js +3 -0
  37. package/build/requests/index.js.map +1 -1
  38. package/build/requests/mapColumnsToAttributes.d.ts +20 -0
  39. package/build/requests/mapColumnsToAttributes.d.ts.map +1 -0
  40. package/build/requests/mapColumnsToAttributes.js +46 -0
  41. package/build/requests/mapColumnsToAttributes.js.map +1 -0
  42. package/build/requests/mapColumnsToIdentifiers.d.ts +20 -0
  43. package/build/requests/mapColumnsToIdentifiers.d.ts.map +1 -0
  44. package/build/requests/mapColumnsToIdentifiers.js +48 -0
  45. package/build/requests/mapColumnsToIdentifiers.js.map +1 -0
  46. package/build/requests/mapCsvColumnsToApi.d.ts.map +1 -1
  47. package/build/requests/mapCsvColumnsToApi.js +1 -1
  48. package/build/requests/mapCsvColumnsToApi.js.map +1 -1
  49. package/build/requests/mapCsvRowsToRequestInputs.d.ts +25 -7
  50. package/build/requests/mapCsvRowsToRequestInputs.d.ts.map +1 -1
  51. package/build/requests/mapCsvRowsToRequestInputs.js +108 -38
  52. package/build/requests/mapCsvRowsToRequestInputs.js.map +1 -1
  53. package/build/requests/submitPrivacyRequest.d.ts +6 -4
  54. package/build/requests/submitPrivacyRequest.d.ts.map +1 -1
  55. package/build/requests/submitPrivacyRequest.js +22 -5
  56. package/build/requests/submitPrivacyRequest.js.map +1 -1
  57. package/build/requests/uploadPrivacyRequestsFromCsv.d.ts +32 -0
  58. package/build/requests/uploadPrivacyRequestsFromCsv.d.ts.map +1 -0
  59. package/build/requests/uploadPrivacyRequestsFromCsv.js +139 -0
  60. package/build/requests/uploadPrivacyRequestsFromCsv.js.map +1 -0
  61. package/build/tsbuildinfo +1 -1
  62. package/package.json +3 -2
@@ -18,9 +18,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
18
18
  __setModuleDefault(result, mod);
19
19
  return result;
20
20
  };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
21
24
  Object.defineProperty(exports, "__esModule", { value: true });
22
25
  exports.submitPrivacyRequest = exports.PrivacyRequestResponse = void 0;
23
26
  const t = __importStar(require("io-ts"));
27
+ const uniq_1 = __importDefault(require("lodash/uniq"));
24
28
  const type_utils_1 = require("@transcend-io/type-utils");
25
29
  const privacy_types_1 = require("@transcend-io/privacy-types");
26
30
  exports.PrivacyRequestResponse = t.type({
@@ -48,7 +52,20 @@ exports.PrivacyRequestResponse = t.type({
48
52
  * @param options - Additional options
49
53
  * @returns Successfully submitted request
50
54
  */
51
- async function submitPrivacyRequest(sombra, input, { attestedExtraIdentifiers = {}, details = '', isTest = false, additionalAttributes = [], } = {}) {
55
+ async function submitPrivacyRequest(sombra, input, { details = '', isTest = false, emailIsVerified = true, isSilent = true, additionalAttributes = [], } = {}) {
56
+ // Merge the per-request attributes with the
57
+ // global attributes
58
+ const mergedAttributes = [...additionalAttributes];
59
+ (input.attributes || []).forEach((attribute) => {
60
+ const existing = mergedAttributes.find((attr) => attr.key === attribute.key);
61
+ if (existing) {
62
+ existing.values.push(...attribute.values);
63
+ existing.values = (0, uniq_1.default)(existing.values);
64
+ }
65
+ else {
66
+ mergedAttributes.push(attribute);
67
+ }
68
+ });
52
69
  // Make the GraphQL request
53
70
  const response = await sombra
54
71
  .post('v1/data-subject-request', {
@@ -57,15 +74,15 @@ async function submitPrivacyRequest(sombra, input, { attestedExtraIdentifiers =
57
74
  subject: {
58
75
  coreIdentifier: input.coreIdentifier,
59
76
  email: input.email,
60
- emailIsVerified: input.emailIsVerified,
61
- attestedExtraIdentifiers,
77
+ emailIsVerified,
78
+ attestedExtraIdentifiers: input.attestedExtraIdentifiers,
62
79
  },
63
80
  subjectType: input.subjectType,
64
- isSilent: input.isSilent,
81
+ isSilent,
65
82
  isTest,
66
83
  ...(input.locale ? { locale: input.locale } : {}),
67
84
  details,
68
- attributes: additionalAttributes,
85
+ attributes: mergedAttributes,
69
86
  ...(input.createdAt ? { createdAt: input.createdAt } : {}),
70
87
  ...(input.dataSiloIds ? { dataSiloIds: input.dataSiloIds } : {}),
71
88
  ...(input.status ? { completedRequestStatus: input.status } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"submitPrivacyRequest.js","sourceRoot":"","sources":["../../src/requests/submitPrivacyRequest.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA2B;AAC3B,yDAAiE;AACjE,+DAKqC;AAQxB,QAAA,sBAAsB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC3C,EAAE,EAAE,CAAC,CAAC,MAAM;IACZ,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,MAAM,EAAE,IAAA,qBAAQ,EAAC,6BAAa,CAAC;IAC/B,IAAI,EAAE,IAAA,qBAAQ,EAAC,6BAAa,CAAC;IAC7B,WAAW,EAAE,CAAC,CAAC,MAAM;IACrB,KAAK,EAAE,CAAC,CAAC,MAAM;IACf,cAAc,EAAE,CAAC,CAAC,MAAM;IACxB,QAAQ,EAAE,CAAC,CAAC,OAAO;IACnB,MAAM,EAAE,CAAC,CAAC,OAAO;IACjB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAA,qBAAQ,EAAC,8BAAc,CAAC,CAAC,CAAC;IACpD,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAA,qBAAQ,EAAC,yCAAyB,CAAC,CAAC,CAAC;IAC1E,eAAe,EAAE,CAAC,CAAC,KAAK,CACtB,CAAC,CAAC,IAAI,CAAC;QACL,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;QACxC,IAAI,EAAE,CAAC,CAAC,MAAM;KACf,CAAC,CACH;CACF,CAAC,CAAC;AAKH;;;;;;;GAOG;AACI,KAAK,UAAU,oBAAoB,CACxC,MAAW,EACX,KAA0B,EAC1B,EACE,wBAAwB,GAAG,EAAE,EAC7B,OAAO,GAAG,EAAE,EACZ,MAAM,GAAG,KAAK,EACd,oBAAoB,GAAG,EAAE,MAUvB,EAAE;IAEN,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM;SAC1B,IAAI,CAAC,yBAAyB,EAAE;QAC/B,IAAI,EAAE;YACJ,IAAI,EAAE,KAAK,CAAC,WAAW;YACvB,OAAO,EAAE;gBACP,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,wBAAwB;aACzB;YACD,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM;YACN,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,OAAO;YACP,UAAU,EAAE,oBAAoB;YAChC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,sBAAsB,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClE;KACF,CAAC;SACD,IAAI,EAAE,CAAC;IAEV,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,IAAA,wBAAW,EAC9C,CAAC,CAAC,IAAI,CAAC;QACL,OAAO,EAAE,8BAAsB;KAChC,CAAC,EACF,QAAQ,CACT,CAAC;IACF,OAAO,eAAe,CAAC;AACzB,CAAC;AAlDD,oDAkDC"}
1
+ {"version":3,"file":"submitPrivacyRequest.js","sourceRoot":"","sources":["../../src/requests/submitPrivacyRequest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Upload a set of privacy requests from CSV
3
+ *
4
+ * @param options - Options
5
+ */
6
+ export declare function uploadPrivacyRequestsFromCsv({ cacheFilepath, file, auth, sombraAuth, concurrency, transcendApiUrl, attributes, emailIsVerified, skipFilterStep, isTest, isSilent, dryRun, }: {
7
+ /** File to cache metadata about mapping of CSV shape to script */
8
+ cacheFilepath: string;
9
+ /** CSV file path */
10
+ file: string;
11
+ /** Transcend API key authentication */
12
+ auth: string;
13
+ /** Concurrency to upload in */
14
+ concurrency?: number;
15
+ /** API URL for Transcend backend */
16
+ transcendApiUrl?: string;
17
+ /** Sombra API key authentication */
18
+ sombraAuth?: string;
19
+ /** Skip the step where requests are filtered */
20
+ skipFilterStep?: boolean;
21
+ /** Whether test requests are being uploaded */
22
+ isTest?: boolean;
23
+ /** Whether requests are uploaded in silent mode */
24
+ isSilent?: boolean;
25
+ /** Whether the email was verified up front */
26
+ emailIsVerified?: boolean;
27
+ /** Attributes string pre-parse */
28
+ attributes?: string[];
29
+ /** Whether a dry run is happening */
30
+ dryRun?: boolean;
31
+ }): Promise<void>;
32
+ //# sourceMappingURL=uploadPrivacyRequestsFromCsv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploadPrivacyRequestsFromCsv.d.ts","sourceRoot":"","sources":["../../src/requests/uploadPrivacyRequestsFromCsv.ts"],"names":[],"mappings":"AAsBA;;;;GAIG;AACH,wBAAsB,4BAA4B,CAAC,EACjD,aAAa,EACb,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,WAAgB,EAChB,eAA4C,EAC5C,UAAe,EACf,eAAsB,EACtB,cAAsB,EACtB,MAAc,EACd,QAAe,EACf,MAAc,GACf,EAAE;IACD,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,qCAAqC;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyJhB"}
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.uploadPrivacyRequestsFromCsv = void 0;
26
+ const colors_1 = __importDefault(require("colors"));
27
+ const bluebird_1 = require("bluebird");
28
+ const t = __importStar(require("io-ts"));
29
+ const uniq_1 = __importDefault(require("lodash/uniq"));
30
+ const persisted_state_1 = require("@transcend-io/persisted-state");
31
+ const logger_1 = require("../logger");
32
+ const graphql_1 = require("../graphql");
33
+ const mapRequestEnumValues_1 = require("./mapRequestEnumValues");
34
+ const constants_1 = require("./constants");
35
+ const mapCsvColumnsToApi_1 = require("./mapCsvColumnsToApi");
36
+ const parseAttributesFromString_1 = require("./parseAttributesFromString");
37
+ const readCsv_1 = require("./readCsv");
38
+ const submitPrivacyRequest_1 = require("./submitPrivacyRequest");
39
+ const mapColumnsToAttributes_1 = require("./mapColumnsToAttributes");
40
+ const mapColumnsToIdentifiers_1 = require("./mapColumnsToIdentifiers");
41
+ const mapCsvRowsToRequestInputs_1 = require("./mapCsvRowsToRequestInputs");
42
+ const filterRows_1 = require("./filterRows");
43
+ /**
44
+ * Upload a set of privacy requests from CSV
45
+ *
46
+ * @param options - Options
47
+ */
48
+ async function uploadPrivacyRequestsFromCsv({ cacheFilepath, file, auth, sombraAuth, concurrency = 20, transcendApiUrl = 'https://api.transcend.io', attributes = [], emailIsVerified = true, skipFilterStep = false, isTest = false, isSilent = true, dryRun = false, }) {
49
+ // Parse out the extra attributes to apply to all requests uploaded
50
+ const parsedAttributes = (0, parseAttributesFromString_1.parseAttributesFromString)(attributes);
51
+ // Create a new state to persist the metadata that
52
+ // maps the request inputs to the Transcend API shape
53
+ const state = new persisted_state_1.PersistedState(cacheFilepath, constants_1.CachedState, {});
54
+ let cached = state.getValue(file) || {
55
+ columnNames: {},
56
+ requestTypeToRequestAction: {},
57
+ subjectTypeToSubjectName: {},
58
+ languageToLocale: {},
59
+ statusToRequestStatus: {},
60
+ identifierNames: {},
61
+ attributeNames: {},
62
+ failingRequests: [],
63
+ };
64
+ // Create sombra instance to communicate with
65
+ const sombra = await (0, graphql_1.createSombraGotInstance)(transcendApiUrl, auth, sombraAuth);
66
+ // Read in the list of integration requests
67
+ const requestsList = (0, readCsv_1.readCsv)(file, t.record(t.string, t.string));
68
+ const columnNames = (0, uniq_1.default)(requestsList.map((x) => Object.keys(x)).flat());
69
+ // Log out an example request
70
+ if (requestsList.length === 0) {
71
+ throw new Error('No Requests found in list! Ensure the first row of the CSV is a header and the rest are requests.');
72
+ }
73
+ const firstRequest = requestsList[0];
74
+ logger_1.logger.info(colors_1.default.magenta(`First request: ${JSON.stringify(firstRequest, null, 2)}`));
75
+ // Determine what rows in the CSV should be imported
76
+ // Choose columns that contain metadata to filter the requests
77
+ const filteredRequestList = skipFilterStep
78
+ ? requestsList
79
+ : await (0, filterRows_1.filterRows)(requestsList);
80
+ // Build a GraphQL client
81
+ const client = (0, graphql_1.buildTranscendGraphQLClient)(transcendApiUrl, auth);
82
+ // Determine the columns that should be mapped
83
+ const columnNameMap = await (0, mapCsvColumnsToApi_1.mapCsvColumnsToApi)(columnNames, cached);
84
+ state.setValue(cached, file);
85
+ const identifierNameMap = await (0, mapColumnsToIdentifiers_1.mapColumnsToIdentifiers)(client, columnNames, cached);
86
+ state.setValue(cached, file);
87
+ const attributeNameMap = await (0, mapColumnsToAttributes_1.mapColumnsToAttributes)(client, columnNames, cached);
88
+ await (0, mapRequestEnumValues_1.mapRequestEnumValues)(client, filteredRequestList, {
89
+ fileName: file,
90
+ state,
91
+ columnNameMap,
92
+ });
93
+ cached = state.getValue(file);
94
+ // map the CSV to request input
95
+ const requestInputs = (0, mapCsvRowsToRequestInputs_1.mapCsvRowsToRequestInputs)(filteredRequestList, cached, {
96
+ columnNameMap,
97
+ identifierNameMap,
98
+ attributeNameMap,
99
+ });
100
+ // Submit each request
101
+ await (0, bluebird_1.map)(requestInputs, async ([rawRow, requestInput], ind) => {
102
+ var _a;
103
+ logger_1.logger.info(colors_1.default.magenta(`[${ind}/${requestInputs.length}] Importing: ${JSON.stringify(requestInput, null, 2)}`));
104
+ // Skip on dry run
105
+ if (dryRun) {
106
+ logger_1.logger.info(colors_1.default.magenta('Bailing out on dry run because dryRun is set'));
107
+ return;
108
+ }
109
+ try {
110
+ // Make the GraphQL request to submit the privacy request
111
+ const requestResponse = await (0, submitPrivacyRequest_1.submitPrivacyRequest)(sombra, requestInput, {
112
+ details: `Uploaded by Transcend Cli: "tr-request-upload" : ${JSON.stringify(rawRow, null, 2)}`,
113
+ isTest,
114
+ emailIsVerified,
115
+ isSilent,
116
+ additionalAttributes: parsedAttributes,
117
+ });
118
+ logger_1.logger.info(colors_1.default.green(
119
+ // eslint-disable-next-line max-len
120
+ `[${ind}/${requestInputs.length}] Successfully submitted the test data subject request for email: "${requestInput.email}"`));
121
+ logger_1.logger.info(colors_1.default.green(`[${ind}/${requestInputs.length}] View it at: "${requestResponse.link}"`));
122
+ }
123
+ catch (err) {
124
+ const msg = `${err.message} - ${JSON.stringify((_a = err.response) === null || _a === void 0 ? void 0 : _a.body, null, 2)}`;
125
+ cached.failingRequests.push({
126
+ ...requestInput,
127
+ error: msg,
128
+ attemptedAt: new Date().toISOString(),
129
+ });
130
+ state.setValue(cached, file);
131
+ logger_1.logger.error(colors_1.default.red(msg));
132
+ logger_1.logger.error(colors_1.default.red(`[${ind}/${requestInputs.length}] Failed to submit request for: "${requestInput.email}"`));
133
+ }
134
+ }, {
135
+ concurrency,
136
+ });
137
+ }
138
+ exports.uploadPrivacyRequestsFromCsv = uploadPrivacyRequestsFromCsv;
139
+ //# sourceMappingURL=uploadPrivacyRequestsFromCsv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploadPrivacyRequestsFromCsv.js","sourceRoot":"","sources":["../../src/requests/uploadPrivacyRequestsFromCsv.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA4B;AAC5B,uCAA+B;AAC/B,yCAA2B;AAC3B,uDAA+B;AAE/B,mEAA+D;AAC/D,sCAAmC;AACnC,wCAGoB;AACpB,iEAA8D;AAC9D,2CAA0C;AAC1C,6DAA0D;AAC1D,2EAAwE;AACxE,uCAAoC;AACpC,iEAA8D;AAC9D,qEAAkE;AAClE,uEAAoE;AACpE,2EAAwE;AACxE,6CAA0C;AAE1C;;;;GAIG;AACI,KAAK,UAAU,4BAA4B,CAAC,EACjD,aAAa,EACb,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,WAAW,GAAG,EAAE,EAChB,eAAe,GAAG,0BAA0B,EAC5C,UAAU,GAAG,EAAE,EACf,eAAe,GAAG,IAAI,EACtB,cAAc,GAAG,KAAK,EACtB,MAAM,GAAG,KAAK,EACd,QAAQ,GAAG,IAAI,EACf,MAAM,GAAG,KAAK,GA0Bf;IACC,mEAAmE;IACnE,MAAM,gBAAgB,GAAG,IAAA,qDAAyB,EAAC,UAAU,CAAC,CAAC;IAE/D,kDAAkD;IAClD,qDAAqD;IACrD,MAAM,KAAK,GAAG,IAAI,gCAAc,CAAC,aAAa,EAAE,uBAAW,EAAE,EAAE,CAAC,CAAC;IACjE,IAAI,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI;QACnC,WAAW,EAAE,EAAE;QACf,0BAA0B,EAAE,EAAE;QAC9B,wBAAwB,EAAE,EAAE;QAC5B,gBAAgB,EAAE,EAAE;QACpB,qBAAqB,EAAE,EAAE;QACzB,eAAe,EAAE,EAAE;QACnB,cAAc,EAAE,EAAE;QAClB,eAAe,EAAE,EAAE;KACpB,CAAC;IAEF,6CAA6C;IAC7C,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAuB,EAC1C,eAAe,EACf,IAAI,EACJ,UAAU,CACX,CAAC;IAEF,2CAA2C;IAC3C,MAAM,YAAY,GAAG,IAAA,iBAAO,EAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,IAAA,cAAI,EAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAEzE,6BAA6B;IAC7B,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;QAC7B,MAAM,IAAI,KAAK,CACb,mGAAmG,CACpG,CAAC;KACH;IACD,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAErC,eAAM,CAAC,IAAI,CACT,gBAAM,CAAC,OAAO,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAC1E,CAAC;IAEF,oDAAoD;IACpD,8DAA8D;IAC9D,MAAM,mBAAmB,GAAG,cAAc;QACxC,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,MAAM,IAAA,uBAAU,EAAC,YAAY,CAAC,CAAC;IAEnC,yBAAyB;IACzB,MAAM,MAAM,GAAG,IAAA,qCAA2B,EAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IAElE,8CAA8C;IAC9C,MAAM,aAAa,GAAG,MAAM,IAAA,uCAAkB,EAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACpE,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,MAAM,iBAAiB,GAAG,MAAM,IAAA,iDAAuB,EACrD,MAAM,EACN,WAAW,EACX,MAAM,CACP,CAAC;IACF,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,MAAM,gBAAgB,GAAG,MAAM,IAAA,+CAAsB,EACnD,MAAM,EACN,WAAW,EACX,MAAM,CACP,CAAC;IACF,MAAM,IAAA,2CAAoB,EAAC,MAAM,EAAE,mBAAmB,EAAE;QACtD,QAAQ,EAAE,IAAI;QACd,KAAK;QACL,aAAa;KACd,CAAC,CAAC;IACH,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE9B,+BAA+B;IAC/B,MAAM,aAAa,GAAG,IAAA,qDAAyB,EAAC,mBAAmB,EAAE,MAAM,EAAE;QAC3E,aAAa;QACb,iBAAiB;QACjB,gBAAgB;KACjB,CAAC,CAAC;IAEH,sBAAsB;IACtB,MAAM,IAAA,cAAG,EACP,aAAa,EACb,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,GAAG,EAAE,EAAE;;QACpC,eAAM,CAAC,IAAI,CACT,gBAAM,CAAC,OAAO,CACZ,IAAI,GAAG,IAAI,aAAa,CAAC,MAAM,gBAAgB,IAAI,CAAC,SAAS,CAC3D,YAAY,EACZ,IAAI,EACJ,CAAC,CACF,EAAE,CACJ,CACF,CAAC;QAEF,kBAAkB;QAClB,IAAI,MAAM,EAAE;YACV,eAAM,CAAC,IAAI,CACT,gBAAM,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAC/D,CAAC;YACF,OAAO;SACR;QAED,IAAI;YACF,yDAAyD;YACzD,MAAM,eAAe,GAAG,MAAM,IAAA,2CAAoB,EAChD,MAAM,EACN,YAAY,EACZ;gBACE,OAAO,EAAE,oDAAoD,IAAI,CAAC,SAAS,CACzE,MAAM,EACN,IAAI,EACJ,CAAC,CACF,EAAE;gBACH,MAAM;gBACN,eAAe;gBACf,QAAQ;gBACR,oBAAoB,EAAE,gBAAgB;aACvC,CACF,CAAC;YAEF,eAAM,CAAC,IAAI,CACT,gBAAM,CAAC,KAAK;YACV,mCAAmC;YACnC,IAAI,GAAG,IAAI,aAAa,CAAC,MAAM,sEAAsE,YAAY,CAAC,KAAK,GAAG,CAC3H,CACF,CAAC;YACF,eAAM,CAAC,IAAI,CACT,gBAAM,CAAC,KAAK,CACV,IAAI,GAAG,IAAI,aAAa,CAAC,MAAM,kBAAkB,eAAe,CAAC,IAAI,GAAG,CACzE,CACF,CAAC;SACH;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,MAAM,IAAI,CAAC,SAAS,CAC5C,MAAA,GAAG,CAAC,QAAQ,0CAAE,IAAI,EAClB,IAAI,EACJ,CAAC,CACF,EAAE,CAAC;YACJ,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC;gBAC1B,GAAG,YAAY;gBACf,KAAK,EAAE,GAAG;gBACV,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACtC,CAAC,CAAC;YACH,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC7B,eAAM,CAAC,KAAK,CAAC,gBAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9B,eAAM,CAAC,KAAK,CACV,gBAAM,CAAC,GAAG,CACR,IAAI,GAAG,IAAI,aAAa,CAAC,MAAM,oCAAoC,YAAY,CAAC,KAAK,GAAG,CACzF,CACF,CAAC;SACH;IACH,CAAC,EACD;QACE,WAAW;KACZ,CACF,CAAC;AACJ,CAAC;AA/LD,oEA+LC"}