@transcend-io/cli 4.65.0 → 4.68.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/README.md CHANGED
@@ -89,6 +89,7 @@
89
89
  - [Authentication](#authentication-19)
90
90
  - [Arguments](#arguments-19)
91
91
  - [Usage](#usage-20)
92
+ - [Proxy usage](#proxy-usage)
92
93
 
93
94
  <!-- END doctoc generated TOC please keep comment here to allow auto update -->
94
95
 
@@ -1237,6 +1238,7 @@ In order to use this cli, you will first need to generate an API key on the Tran
1237
1238
  The API key must have the following scopes:
1238
1239
 
1239
1240
  - "Manage Request Identity Verification"
1241
+ - "Manage Request Compilation" (only when specifying `markSilent`)
1240
1242
 
1241
1243
  #### Arguments
1242
1244
 
@@ -1247,6 +1249,7 @@ The API key must have the following scopes:
1247
1249
  | sombraAuth | The sombra internal key, use for additional authentication when self-hosting sombra. | string | N/A | false |
1248
1250
  | transcendUrl | URL of the Transcend backend. Use https://api.us.transcend.io for US hosting. | string - URL | https://api.transcend.io | false |
1249
1251
  | file | Path to the CSV file where requests will be written to. | string - file-path | ./manual-enrichment-identifiers.csv | false |
1252
+ | markSilent | When true, set requests into silent mode before enriching | boolean | false | false |
1250
1253
  | concurrency | The concurrency to use when uploading requests in parallel. | number | 100 | false |
1251
1254
 
1252
1255
  #### Usage
@@ -1279,6 +1282,12 @@ With specific concurrency
1279
1282
  yarn tr-manual-enrichment-push-identifiers --auth=$TRANSCEND_API_KEY --enricherId=27d45a0d-7d03-47fa-9b30-6d697005cfcf --concurrency=200
1280
1283
  ```
1281
1284
 
1285
+ When enriching requests, mark all requests as silent mode before processing
1286
+
1287
+ ```sh
1288
+ yarn tr-manual-enrichment-push-identifiers --auth=$TRANSCEND_API_KEY --enricherId=27d45a0d-7d03-47fa-9b30-6d697005cfcf --markSilent=true
1289
+ ```
1290
+
1282
1291
  ### tr-mark-request-data-silos-completed
1283
1292
 
1284
1293
  This command takes in a CSV of Request IDs as well as a Data Silo ID and marks all associated privacy request jobs as completed.
@@ -1706,3 +1715,7 @@ Override XDI allowed commands
1706
1715
  ```sh
1707
1716
  yarn tr-build-xdi-sync-endpoint --auth=$TRANSCEND_API_KEY --xdiLocation=https://cdn.your-site.com/xdi.js --xdiAllowedCommands="ExtractIdentifiers:Simple"
1708
1717
  ```
1718
+
1719
+ ## Proxy usage
1720
+
1721
+ If you are trying to use the cli inside a corporate firewall and need to send traffic through a proxy, you can do so via the `http_proxy` environment variable or the `--httpProxy` flag, with a command like `yarn tr-pull --auth=$TRANSCEND_API_KEY --httpProxy="http://localhost:5051"`.
@@ -24,7 +24,7 @@ const constants_1 = require("./constants");
24
24
  */
25
25
  async function main() {
26
26
  // Parse command line arguments
27
- const { file = './manual-enrichment-identifiers.csv', transcendUrl = constants_1.DEFAULT_TRANSCEND_API, auth, enricherId, sombraAuth, concurrency = '100', } = (0, yargs_parser_1.default)(process.argv.slice(2));
27
+ const { file = './manual-enrichment-identifiers.csv', transcendUrl = constants_1.DEFAULT_TRANSCEND_API, auth, enricherId, sombraAuth, markSilent = 'false', concurrency = '100', } = (0, yargs_parser_1.default)(process.argv.slice(2));
28
28
  // Ensure auth is passed
29
29
  if (!auth) {
30
30
  logger_1.logger.error(colors_1.default.red('A Transcend API key must be provided. You can specify using --auth=$TRANSCEND_API_KEY'));
@@ -42,6 +42,7 @@ async function main() {
42
42
  transcendUrl,
43
43
  enricherId,
44
44
  concurrency: parseInt(concurrency, 10),
45
+ markSilent: markSilent === 'true',
45
46
  auth,
46
47
  sombraAuth,
47
48
  });
@@ -1 +1 @@
1
- {"version":3,"file":"cli-manual-enrichment-push-identifiers.js","sourceRoot":"","sources":["../src/cli-manual-enrichment-push-identifiers.ts"],"names":[],"mappings":";;;;;;AAEA,gEAAiC;AACjC,oDAA4B;AAE5B,qCAAkC;AAClC,2DAA6E;AAC7E,2CAAoD;AAEpD;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,IAAI;IACjB,+BAA+B;IAC/B,MAAM,EACJ,IAAI,GAAG,qCAAqC,EAC5C,YAAY,GAAG,iCAAqB,EACpC,IAAI,EACJ,UAAU,EACV,UAAU,EACV,WAAW,GAAG,KAAK,GACpB,GAAG,IAAA,sBAAK,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAA8B,CAAC;IAE9D,wBAAwB;IACxB,IAAI,CAAC,IAAI,EAAE;QACT,eAAM,CAAC,KAAK,CACV,gBAAM,CAAC,GAAG,CACR,uFAAuF,CACxF,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,gCAAgC;IAChC,IAAI,CAAC,UAAU,EAAE;QACf,eAAM,CAAC,KAAK,CACV,gBAAM,CAAC,GAAG,CACR,mCAAmC;YACjC,yEAAyE,CAC5E,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,qCAAqC;IACrC,MAAM,IAAA,0DAAsC,EAAC;QAC3C,IAAI;QACJ,YAAY;QACZ,UAAU;QACV,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QACtC,IAAI;QACJ,UAAU;KACX,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"cli-manual-enrichment-push-identifiers.js","sourceRoot":"","sources":["../src/cli-manual-enrichment-push-identifiers.ts"],"names":[],"mappings":";;;;;;AAEA,gEAAiC;AACjC,oDAA4B;AAE5B,qCAAkC;AAClC,2DAA6E;AAC7E,2CAAoD;AAEpD;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,IAAI;IACjB,+BAA+B;IAC/B,MAAM,EACJ,IAAI,GAAG,qCAAqC,EAC5C,YAAY,GAAG,iCAAqB,EACpC,IAAI,EACJ,UAAU,EACV,UAAU,EACV,UAAU,GAAG,OAAO,EACpB,WAAW,GAAG,KAAK,GACpB,GAAG,IAAA,sBAAK,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAA8B,CAAC;IAE9D,wBAAwB;IACxB,IAAI,CAAC,IAAI,EAAE;QACT,eAAM,CAAC,KAAK,CACV,gBAAM,CAAC,GAAG,CACR,uFAAuF,CACxF,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,gCAAgC;IAChC,IAAI,CAAC,UAAU,EAAE;QACf,eAAM,CAAC,KAAK,CACV,gBAAM,CAAC,GAAG,CACR,mCAAmC;YACjC,yEAAyE,CAC5E,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,qCAAqC;IACrC,MAAM,IAAA,0DAAsC,EAAC;QAC3C,IAAI;QACJ,YAAY;QACZ,UAAU;QACV,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QACtC,UAAU,EAAE,UAAU,KAAK,MAAM;QACjC,IAAI;QACJ,UAAU;KACX,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM,SAAU,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,MAAM,SAAU,CAAC"}
package/build/logger.js CHANGED
@@ -1,5 +1,23 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.logger = void 0;
7
+ const colors_1 = __importDefault(require("colors"));
8
+ const global_agent_1 = require("global-agent");
9
+ const undici_1 = require("undici");
10
+ const yargs_parser_1 = __importDefault(require("yargs-parser"));
4
11
  exports.logger = console;
12
+ // When the proxy env var of flag is specified, initiate the proxy
13
+ const { httpProxy = process.env.http_proxy } = (0, yargs_parser_1.default)(process.argv.slice(2));
14
+ exports.logger.info(colors_1.default.magenta(`Got httpProxy parameter of '${httpProxy}'`));
15
+ if (httpProxy) {
16
+ exports.logger.info(colors_1.default.green(`Initializing proxy: ${httpProxy}`));
17
+ // Use global-agent, which overrides `request` based requests
18
+ process.env.GLOBAL_AGENT_HTTP_PROXY = httpProxy;
19
+ (0, global_agent_1.bootstrap)();
20
+ // Use undici, which overrides `fetch` based requests
21
+ (0, undici_1.setGlobalDispatcher)(new undici_1.ProxyAgent(httpProxy));
22
+ }
5
23
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,+CAAyC;AACzC,mCAAyD;AACzD,gEAAiC;AAEpB,QAAA,MAAM,GAAG,OAAO,CAAC;AAE9B,kEAAkE;AAClE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,IAAA,sBAAK,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,cAAM,CAAC,IAAI,CAAC,gBAAM,CAAC,OAAO,CAAC,+BAA+B,SAAS,GAAG,CAAC,CAAC,CAAC;AACzE,IAAI,SAAS,EAAE;IACb,cAAM,CAAC,IAAI,CAAC,gBAAM,CAAC,KAAK,CAAC,uBAAuB,SAAS,EAAE,CAAC,CAAC,CAAC;IAE9D,6DAA6D;IAC7D,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAChD,IAAA,wBAAS,GAAE,CAAC;IAEZ,qDAAqD;IACrD,IAAA,4BAAmB,EAAC,IAAI,mBAAU,CAAC,SAAS,CAAC,CAAC,CAAC;CAChD"}
@@ -4,7 +4,7 @@
4
4
  * @param options - Options
5
5
  * @returns Number of items processed
6
6
  */
7
- export declare function pushManualEnrichmentIdentifiersFromCsv({ file, auth, sombraAuth, enricherId, concurrency, transcendUrl, }: {
7
+ export declare function pushManualEnrichmentIdentifiersFromCsv({ file, auth, sombraAuth, enricherId, markSilent, concurrency, transcendUrl, }: {
8
8
  /** CSV file path */
9
9
  file: string;
10
10
  /** Transcend API key authentication */
@@ -17,5 +17,7 @@ export declare function pushManualEnrichmentIdentifiersFromCsv({ file, auth, som
17
17
  concurrency?: number;
18
18
  /** API URL for Transcend backend */
19
19
  transcendUrl?: string;
20
+ /** Mark requests in silent mode before enriching */
21
+ markSilent?: boolean;
20
22
  }): Promise<number>;
21
23
  //# sourceMappingURL=pushManualEnrichmentIdentifiersFromCsv.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pushManualEnrichmentIdentifiersFromCsv.d.ts","sourceRoot":"","sources":["../../src/manual-enrichment/pushManualEnrichmentIdentifiersFromCsv.ts"],"names":[],"mappings":"AAWA;;;;;GAKG;AACH,wBAAsB,sCAAsC,CAAC,EAC3D,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,UAAU,EACV,WAAiB,EACjB,YAAoC,GACrC,EAAE;IACD,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,MAAM,CAAC,CAuDlB"}
1
+ {"version":3,"file":"pushManualEnrichmentIdentifiersFromCsv.d.ts","sourceRoot":"","sources":["../../src/manual-enrichment/pushManualEnrichmentIdentifiersFromCsv.ts"],"names":[],"mappings":"AAgBA;;;;;GAKG;AACH,wBAAsB,sCAAsC,CAAC,EAC3D,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAiB,EACjB,YAAoC,GACrC,EAAE;IACD,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsElB"}
@@ -17,9 +17,10 @@ const constants_1 = require("../constants");
17
17
  * @param options - Options
18
18
  * @returns Number of items processed
19
19
  */
20
- async function pushManualEnrichmentIdentifiersFromCsv({ file, auth, sombraAuth, enricherId, concurrency = 100, transcendUrl = constants_1.DEFAULT_TRANSCEND_API, }) {
20
+ async function pushManualEnrichmentIdentifiersFromCsv({ file, auth, sombraAuth, enricherId, markSilent, concurrency = 100, transcendUrl = constants_1.DEFAULT_TRANSCEND_API, }) {
21
21
  // Create sombra instance to communicate with
22
22
  const sombra = await (0, graphql_1.createSombraGotInstance)(transcendUrl, auth, sombraAuth);
23
+ const client = (0, graphql_1.buildTranscendGraphQLClient)(transcendUrl, auth);
23
24
  // Read from CSV
24
25
  logger_1.logger.info(colors_1.default.magenta(`Reading "${file}" from disk`));
25
26
  const activeResults = (0, requests_1.readCsv)(file, enrichPrivacyRequest_1.EnrichPrivacyRequest);
@@ -30,6 +31,16 @@ async function pushManualEnrichmentIdentifiersFromCsv({ file, auth, sombraAuth,
30
31
  let errorCount = 0;
31
32
  await (0, bluebird_1.map)(activeResults, async (request, index) => {
32
33
  try {
34
+ // Mark requests in silent mode before a certain date
35
+ if (markSilent) {
36
+ await (0, graphql_1.makeGraphQLRequest)(client, graphql_1.UPDATE_PRIVACY_REQUEST, {
37
+ input: {
38
+ id: request.id,
39
+ isSilent: true,
40
+ },
41
+ });
42
+ logger_1.logger.info(colors_1.default.magenta(`Mark request as silent mode - ${request.id}`));
43
+ }
33
44
  const result = await (0, enrichPrivacyRequest_1.enrichPrivacyRequest)(sombra, request, enricherId, index);
34
45
  if (result) {
35
46
  successCount += 1;
@@ -1 +1 @@
1
- {"version":3,"file":"pushManualEnrichmentIdentifiersFromCsv.js","sourceRoot":"","sources":["../../src/manual-enrichment/pushManualEnrichmentIdentifiersFromCsv.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,uCAA+B;AAC/B,sCAAmC;AACnC,wCAAqD;AACrD,iEAGgC;AAChC,0CAAsC;AACtC,4CAAqD;AAErD;;;;;GAKG;AACI,KAAK,UAAU,sCAAsC,CAAC,EAC3D,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,UAAU,EACV,WAAW,GAAG,GAAG,EACjB,YAAY,GAAG,iCAAqB,GAcrC;IACC,6CAA6C;IAC7C,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAuB,EAAC,YAAY,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAE7E,gBAAgB;IAChB,eAAM,CAAC,IAAI,CAAC,gBAAM,CAAC,OAAO,CAAC,YAAY,IAAI,aAAa,CAAC,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,IAAA,kBAAO,EAAC,IAAI,EAAE,2CAAoB,CAAC,CAAC;IAE1D,mBAAmB;IACnB,eAAM,CAAC,IAAI,CACT,gBAAM,CAAC,OAAO,CAAC,cAAc,aAAa,CAAC,MAAM,qBAAqB,CAAC,CACxE,CAAC;IAEF,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,MAAM,IAAA,cAAG,EACP,aAAa,EACb,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,IAAA,2CAAoB,EACvC,MAAM,EACN,OAAO,EACP,UAAU,EACV,KAAK,CACN,CAAC;YACF,IAAI,MAAM,EAAE;gBACV,YAAY,IAAI,CAAC,CAAC;aACnB;iBAAM;gBACL,YAAY,IAAI,CAAC,CAAC;aACnB;SACF;QAAC,OAAO,GAAG,EAAE;YACZ,UAAU,IAAI,CAAC,CAAC;SACjB;IACH,CAAC,EACD,EAAE,WAAW,EAAE,CAChB,CAAC;IAEF,eAAM,CAAC,IAAI,CACT,gBAAM,CAAC,KAAK,CACV,sDAAsD,YAAY,GAAG,CACtE,CACF,CAAC;IAEF,IAAI,YAAY,GAAG,CAAC,EAAE;QACpB,eAAM,CAAC,IAAI,CAAC,gBAAM,CAAC,OAAO,CAAC,kBAAkB,YAAY,GAAG,CAAC,CAAC,CAAC;KAChE;IAED,IAAI,UAAU,GAAG,CAAC,EAAE;QAClB,eAAM,CAAC,IAAI,CAAC,gBAAM,CAAC,GAAG,CAAC,gBAAgB,UAAU,GAAG,CAAC,CAAC,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,qBAAqB,UAAU,YAAY,CAAC,CAAC;KAC9D;IAED,OAAO,aAAa,CAAC,MAAM,CAAC;AAC9B,CAAC;AA3ED,wFA2EC"}
1
+ {"version":3,"file":"pushManualEnrichmentIdentifiersFromCsv.js","sourceRoot":"","sources":["../../src/manual-enrichment/pushManualEnrichmentIdentifiersFromCsv.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,uCAA+B;AAC/B,sCAAmC;AACnC,wCAKoB;AACpB,iEAGgC;AAChC,0CAAsC;AACtC,4CAAqD;AAErD;;;;;GAKG;AACI,KAAK,UAAU,sCAAsC,CAAC,EAC3D,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,GAAG,GAAG,EACjB,YAAY,GAAG,iCAAqB,GAgBrC;IACC,6CAA6C;IAC7C,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAuB,EAAC,YAAY,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,IAAA,qCAA2B,EAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAE/D,gBAAgB;IAChB,eAAM,CAAC,IAAI,CAAC,gBAAM,CAAC,OAAO,CAAC,YAAY,IAAI,aAAa,CAAC,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,IAAA,kBAAO,EAAC,IAAI,EAAE,2CAAoB,CAAC,CAAC;IAE1D,mBAAmB;IACnB,eAAM,CAAC,IAAI,CACT,gBAAM,CAAC,OAAO,CAAC,cAAc,aAAa,CAAC,MAAM,qBAAqB,CAAC,CACxE,CAAC;IAEF,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,MAAM,IAAA,cAAG,EACP,aAAa,EACb,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,IAAI;YACF,qDAAqD;YACrD,IAAI,UAAU,EAAE;gBACd,MAAM,IAAA,4BAAkB,EAAC,MAAM,EAAE,gCAAsB,EAAE;oBACvD,KAAK,EAAE;wBACL,EAAE,EAAE,OAAO,CAAC,EAAE;wBACd,QAAQ,EAAE,IAAI;qBACf;iBACF,CAAC,CAAC;gBAEH,eAAM,CAAC,IAAI,CACT,gBAAM,CAAC,OAAO,CAAC,iCAAiC,OAAO,CAAC,EAAE,EAAE,CAAC,CAC9D,CAAC;aACH;YAED,MAAM,MAAM,GAAG,MAAM,IAAA,2CAAoB,EACvC,MAAM,EACN,OAAO,EACP,UAAU,EACV,KAAK,CACN,CAAC;YACF,IAAI,MAAM,EAAE;gBACV,YAAY,IAAI,CAAC,CAAC;aACnB;iBAAM;gBACL,YAAY,IAAI,CAAC,CAAC;aACnB;SACF;QAAC,OAAO,GAAG,EAAE;YACZ,UAAU,IAAI,CAAC,CAAC;SACjB;IACH,CAAC,EACD,EAAE,WAAW,EAAE,CAChB,CAAC;IAEF,eAAM,CAAC,IAAI,CACT,gBAAM,CAAC,KAAK,CACV,sDAAsD,YAAY,GAAG,CACtE,CACF,CAAC;IAEF,IAAI,YAAY,GAAG,CAAC,EAAE;QACpB,eAAM,CAAC,IAAI,CAAC,gBAAM,CAAC,OAAO,CAAC,kBAAkB,YAAY,GAAG,CAAC,CAAC,CAAC;KAChE;IAED,IAAI,UAAU,GAAG,CAAC,EAAE;QAClB,eAAM,CAAC,IAAI,CAAC,gBAAM,CAAC,GAAG,CAAC,gBAAgB,UAAU,GAAG,CAAC,CAAC,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,qBAAqB,UAAU,YAAY,CAAC,CAAC;KAC9D;IAED,OAAO,aAAa,CAAC,MAAM,CAAC;AAC9B,CAAC;AA7FD,wFA6FC"}