brighterscript 1.0.0-alpha.20 → 1.0.0-alpha.21

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/CHANGELOG.md CHANGED
@@ -6,7 +6,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
 
8
8
 
9
+ ## [1.0.0-alpha.21](https://github.com/rokucommunity/brighterscript/compare/v1.0.0-alpha20...v1.0.0-alpha.21) - 2022-05-02
10
+ ### Added
11
+ - allow enym types as function parameters ([#579](https://github.com/rokucommunity/brighterscript/pull/579))
12
+ ### Changed
13
+ - all changes from [v0.49.0](#0481---2022-05-02)
14
+
15
+
16
+
17
+ ## [0.49.0](https://github.com/rokucommunity/brighterscript/compare/v0.48.1...v0.49.0) - 2022-05-02
18
+ ### Added
19
+ - allow interfaces and enums as function param types ([#580](https://github.com/rokucommunity/brighterscript/pull/580))
20
+ - Transpile files added by plugins after start of transpile cycle ([#578](https://github.com/rokucommunity/brighterscript/pull/578))
21
+ - add AstEditor to `beforeProgramTranspile` and `afterProgramTranspile` plugin events ([#576](https://github.com/rokucommunity/brighterscript/pull/576))
22
+
23
+
24
+
9
25
  ## [1.0.0-alpha.20](https://github.com/rokucommunity/brighterscript/compare/v1.0.0-alpha.19...v1.0.0-alpha.20) - 2022-04-28
26
+ ### Changed
10
27
  - all changes from [v0.48.1](#0481---2022-04-14)
11
28
  - all changes from [v0.48.0](#0480---2022-04-13)
12
29
  - all changes from [v0.47.3](#0473---2022-04-08)
package/dist/Cache.d.ts CHANGED
@@ -6,5 +6,9 @@ export declare class Cache<TKey = any, TValue = any> extends Map<TKey, TValue> {
6
6
  * Get value from the cache if it exists,
7
7
  * otherwise call the factory function to create the value, add it to the cache, and return it.
8
8
  */
9
- getOrAdd(key: TKey, factory: (key: TKey) => TValue): TValue;
9
+ getOrAdd<R extends TValue = TValue>(key: TKey, factory: (key: TKey) => R): R;
10
+ /**
11
+ * Get the item with the specified key.
12
+ */
13
+ get<R extends TValue = TValue>(key: TKey): R;
10
14
  }
package/dist/Cache.js CHANGED
@@ -19,6 +19,12 @@ class Cache extends Map {
19
19
  return this.get(key);
20
20
  }
21
21
  }
22
+ /**
23
+ * Get the item with the specified key.
24
+ */
25
+ get(key) {
26
+ return super.get(key);
27
+ }
22
28
  }
23
29
  exports.Cache = Cache;
24
30
  //# sourceMappingURL=Cache.js.map
package/dist/Cache.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Cache.js","sourceRoot":"","sources":["../src/Cache.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,KAAgC,SAAQ,GAAiB;IAElE;;;OAGG;IACI,QAAQ,CAAC,GAAS,EAAE,OAA8B;QACrD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAChB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACrB,OAAO,KAAK,CAAC;SAChB;aAAM;YACH,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACxB;IACL,CAAC;CACJ;AAfD,sBAeC"}
1
+ {"version":3,"file":"Cache.js","sourceRoot":"","sources":["../src/Cache.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,KAAgC,SAAQ,GAAiB;IAElE;;;OAGG;IACI,QAAQ,CAA4B,GAAS,EAAE,OAAyB;QAC3E,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAChB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACrB,OAAO,KAAK,CAAC;SAChB;aAAM;YACH,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACxB;IACL,CAAC;IAED;;OAEG;IACI,GAAG,CAA4B,GAAS;QAC3C,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAM,CAAC;IAC/B,CAAC;CACJ;AAtBD,sBAsBC"}
package/dist/Program.js CHANGED
@@ -1107,8 +1107,8 @@ class Program {
1107
1107
  _getTranspiledFileContents(file, outputPath) {
1108
1108
  const editor = new AstEditor_1.AstEditor();
1109
1109
  this.plugins.emit('beforeFileTranspile', {
1110
- file: file,
1111
1110
  program: this,
1111
+ file: file,
1112
1112
  outputPath: outputPath,
1113
1113
  editor: editor
1114
1114
  });
@@ -1125,8 +1125,8 @@ class Program {
1125
1125
  typedef = file.getTypedef();
1126
1126
  }
1127
1127
  const event = {
1128
- file: file,
1129
1128
  program: this,
1129
+ file: file,
1130
1130
  outputPath: outputPath,
1131
1131
  editor: editor,
1132
1132
  code: result.code,
@@ -1150,9 +1150,7 @@ class Program {
1150
1150
  collection[(0, util_1.standardizePath) `${entry.src}`] = entry;
1151
1151
  return collection;
1152
1152
  }, {});
1153
- const entries = [];
1154
- for (const key in this.files) {
1155
- const file = this.files[key];
1153
+ const getOutputPath = (file) => {
1156
1154
  let filePathObj = mappedFileEntries[(0, util_1.standardizePath) `${file.srcPath}`];
1157
1155
  if (!filePathObj) {
1158
1156
  //this file has been added in-memory, from a plugin, for example
@@ -1170,25 +1168,16 @@ class Program {
1170
1168
  .replace(/\.bs$/gi, '.brs');
1171
1169
  //prepend the staging folder path
1172
1170
  outputPath = (0, util_1.standardizePath) `${stagingFolderPath}/${outputPath}`;
1173
- entries.push({
1174
- file: file,
1175
- program: this,
1176
- outputPath: outputPath,
1177
- editor: new AstEditor_1.AstEditor()
1178
- });
1179
- }
1180
- const astEditor = new AstEditor_1.AstEditor();
1181
- this.plugins.emit('beforeProgramTranspile', {
1182
- program: this,
1183
- entries: entries,
1184
- editor: astEditor
1185
- });
1186
- const promises = entries.map(async (entry) => {
1171
+ return outputPath;
1172
+ };
1173
+ const processedFiles = new Set();
1174
+ const transpileFile = async (file, outputPath) => {
1175
+ //mark this file as processed so we don't do it again
1176
+ processedFiles.add(file);
1187
1177
  //skip transpiling typedef files
1188
- if ((0, reflection_1.isBrsFile)(entry.file) && entry.file.isTypedef) {
1178
+ if ((0, reflection_1.isBrsFile)(file) && file.isTypedef) {
1189
1179
  return;
1190
1180
  }
1191
- const { file, outputPath } = entry;
1192
1181
  const fileTranspileResult = this._getTranspiledFileContents(file, outputPath);
1193
1182
  //make sure the full dir path exists
1194
1183
  await fsExtra.ensureDir(path.dirname(outputPath));
@@ -1204,12 +1193,42 @@ class Program {
1204
1193
  const typedefPath = outputPath.replace(/\.brs$/i, '.d.bs');
1205
1194
  await fsExtra.writeFile(typedefPath, fileTranspileResult.typedef);
1206
1195
  }
1196
+ };
1197
+ const entries = Object.values(this.files).map(file => {
1198
+ return {
1199
+ file: file,
1200
+ outputPath: getOutputPath(file)
1201
+ };
1202
+ });
1203
+ const astEditor = new AstEditor_1.AstEditor();
1204
+ this.plugins.emit('beforeProgramTranspile', {
1205
+ program: this,
1206
+ entries: entries,
1207
+ editor: astEditor
1208
+ });
1209
+ let promises = entries.map(async (entry) => {
1210
+ return transpileFile(entry.file, entry.outputPath);
1207
1211
  });
1208
1212
  //if there's no bslib file already loaded into the program, copy it to the staging directory
1209
- if (!this.getFile(bslibAliasedRokuModulesPkgPath) && !this.getFile(`pkg:/source/bslib.brs`)) {
1213
+ if (!this.getFile(bslibAliasedRokuModulesPkgPath) && !this.getFile((0, util_1.standardizePath) `pkg:/source/bslib.brs`)) {
1210
1214
  promises.push(util_1.util.copyBslibToStaging(stagingFolderPath));
1211
1215
  }
1212
1216
  await Promise.all(promises);
1217
+ //transpile any new files that plugins added since the start of this transpile process
1218
+ do {
1219
+ promises = [];
1220
+ for (const key in this.files) {
1221
+ const file = this.files[key];
1222
+ //this is a new file
1223
+ if (!processedFiles.has(file)) {
1224
+ promises.push(transpileFile(file, getOutputPath(file)));
1225
+ }
1226
+ }
1227
+ if (promises.length > 0) {
1228
+ this.logger.info(`Transpiling ${promises.length} new files`);
1229
+ await Promise.all(promises);
1230
+ }
1231
+ } while (promises.length > 0);
1213
1232
  this.plugins.emit('afterProgramTranspile', {
1214
1233
  program: this,
1215
1234
  entries: entries,
@@ -1 +1 @@
1
- {"version":3,"file":"Program.js","sourceRoot":"","sources":["../src/Program.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Program.js","sourceRoot":"","sources":["../src/Program.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,oCAAoC;AACpC,6BAA6B;AAE7B,iEAAqE;AAErE,mCAAgC;AAChC,6DAA0D;AAC1D,6CAA0C;AAC1C,6CAA0C;AAE1C,iCAAoD;AACpD,yCAAsC;AACtC,6DAA0D;AAC1D,uDAAoD;AACpD,qCAA4C;AAC5C,iCAA0B;AAC1B,uDAA+C;AAC/C,sDAAwD;AACxD,2CAAiC;AACjC,uDAAgD;AAChD,sDAAwH;AAExH,4CAA4C;AAC5C,iDAA8C;AAC9C,qDAAkD;AAClD,6CAAqD;AACrD,oDAAiD;AAGjD,MAAM,iCAAiC,GAAG,wDAAwD,CAAC;AACnG,MAAM,8BAA8B,GAAG,0CAA0C,CAAC;AA0BlF,MAAa,OAAO;IAChB;IACI;;OAEG;IACI,OAAiB,EACxB,MAAe,EACf,OAAyB;QAFlB,YAAO,GAAP,OAAO,CAAU;QAiC5B;;;;;WAKG;QACK,oBAAe,GAAG,IAAI,iCAAe,EAAE,CAAC;QAExC,uBAAkB,GAAG,IAAI,uCAAkB,EAAE,CAAC;QAatD;;;WAGG;QACK,gBAAW,GAAG,EAAoB,CAAC;QA4B3C;;WAEG;QACK,WAAM,GAAG,EAA6B,CAAC;QAE/C;;WAEG;QACK,UAAK,GAAG,EAA6B,CAAC;QAStC,WAAM,GAAG,EAA2B,CAAC;QAU7C;;;;;WAKG;QACK,eAAU,GAAG,EAA0D,CAAC;QAnH5E,IAAI,CAAC,OAAO,GAAG,WAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,eAAM,CAAC,OAAO,CAAC,QAAoB,CAAC,CAAC;QACjE,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,yBAAe,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE/D,yDAAyD;QACzD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,qBAAS,EAAE,CAAC,CAAC;QAEvC,6BAA6B;QAC7B,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,WAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAErD,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC7B,CAAC;IAIO,iBAAiB;QACrB,2BAA2B;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,aAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC7D,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;QACtC,0EAA0E;QAC1E,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,GAAG,EAAE,CAAC,CAAC,4BAAU,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC5B,8GAA8G;QAC9G,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC;QAC3C,yEAAyE;QACxE,IAAI,CAAC,WAAmB,CAAC,WAAW,GAAG,IAAI,CAAC;IACjD,CAAC;IA6BD;;OAEG;IACH,IAAW,YAAY;QACnB,wGAAwG;QACxG,IAAI,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,EAAE;YAC9C,OAAO,8BAA8B,CAAC;YAEtC,uEAAuE;SAC1E;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,iCAAiC,CAAC,EAAE;YACxD,OAAO,iCAAiC,CAAC;YAEzC,iCAAiC;SACpC;aAAM;YACH,OAAO,uBAAuB,CAAC;SAClC;IACL,CAAC;IAED,IAAW,WAAW;QAClB,IAAI,IAAI,CAAC,YAAY,KAAK,iCAAiC,EAAE;YACzD,OAAO,qBAAqB,CAAC;SAChC;aAAM;YACH,OAAO,OAAO,CAAC;SAClB;IACL,CAAC;IAYD;;OAEG;IACI,WAAW;QACd,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAIS,QAAQ,CAAC,KAAY;QAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAClC,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,KAAK;SACf,CAAC,CAAC;IACP,CAAC;IAUD;;OAEG;IACI,YAAY,CAAC,aAAqB;;QACrC,IAAI,aAAa,EAAE;YACf,uDAAuD;YACvD,wEAAwE;YACxE,OAAO,MAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,0CAAG,CAAC,CAAC,CAAC;SAC5D;aAAM;YACH,OAAO,SAAS,CAAC;SACpB;IACL,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,OAAgB,EAAE,KAAe;;QACvD,MAAM,GAAG,GAAG,CAAC,MAAA,MAAA,OAAO,CAAC,aAAa,0CAAE,IAAI,mCAAI,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3E,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;SAC7B;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACtB,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,KAAK;SACf,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CACrB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CACrF,CAAC;QACF,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,OAAgB;;QACxC,MAAM,GAAG,GAAG,CAAC,MAAA,MAAA,OAAO,CAAC,aAAa,0CAAE,IAAI,mCAAI,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3E,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;gBACzB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjB,MAAM;aACT;SACJ;QACD,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACK,4BAA4B,CAAC,UAAqD;QACtF,iCAAiC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAEtC,sFAAsF;YACtF,IAAI,IAAI,CAAC,oBAAoB,KAAK,CAAC,EAAE;gBACjC,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;gBAC9B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACjD,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aACrD;SACJ;IACL,CAAC;IAED;;;OAGG;IACI,oBAAoB;QACvB,IAAI,MAAM,GAAG,EAAe,CAAC;QAC7B,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE;gBACtC,mDAAmD;gBACnD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACrB;SACJ;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;OAGG;IACI,cAAc;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAQ,CAAC,IAAI,EAAE,CAAC,0BAA0B,CAAC,EAAE,GAAG,EAAE;YAEtE,IAAI,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;YAExC,qCAAqC;YACrC,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC/B,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACnC,WAAW,CAAC,IAAI,CACZ,GAAG,KAAK,CAAC,cAAc,EAAE,CAC5B,CAAC;aACL;YAED,iDAAiD;YACjD,IAAI,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACpD,KAAK,IAAI,IAAI,IAAI,iBAAiB,EAAE;gBAChC,WAAW,CAAC,IAAI,CACZ,GAAG,IAAI,CAAC,cAAc,EAAE,CAC3B,CAAC;aACL;YACD,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAQ,CAAC,KAAK,EAAE,CAAC,oBAAoB,CAAC,EAAE,GAAG,EAAE;gBACtF,wDAAwD;gBACxD,IAAI,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,iCAC9C,IAAI,CAAC,OAAO,KACf,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,KAC9B,WAAW,CAAC,CAAC;gBAChB,OAAO,gBAAgB,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,eAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,kBAAkB,eAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;YACjK,OAAO,mBAAmB,CAAC;QAC/B,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,cAAc,CAAC,WAA2B;QAC7C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACI,OAAO,CAAC,QAAgB,EAAE,aAAa,GAAG,IAAI;QACjD,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACnD,CAAC;IAED;;;OAGG;IACI,cAAc,CAAC,SAAiB;QACnC,IAAI,CAAC,SAAS,EAAE;YACZ,OAAO,SAAS,CAAC;SACpB;QACD,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1F,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,SAAS;QACZ,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,iBAAiB,CAAC,aAAqB;;QAC1C,OAAO,MAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,0CAAE,KAAK,CAAC;IACnD,CAAC;IAED;;OAEG;IACK,UAAU,CAAoB,IAAO;QACzC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC;QAC/C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,YAAY,CAAoB,IAAO;QAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IAChB,CAAC;IAeM,OAAO,CAAoB,SAA2B,EAAE,YAAoB;QAC/E,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;QAC9C,IAAI,OAAe,CAAC;QACpB,IAAI,OAAe,CAAC;QACpB,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;YAC/B,eAAe;YACf,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gBAC/B,gDAAgD;gBAChD,OAAO,GAAG,IAAA,sBAAC,EAAA,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/D,OAAO,GAAG,SAAS,CAAC;gBAEpB,mDAAmD;aACtD;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;gBACnC,OAAO,GAAG,WAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBAC1C,+CAA+C;gBAC/C,OAAO,GAAG,WAAI,CAAC,eAAe,CAC1B,kBAAc,CAAC,wBAAwB,CACnC,OAAO,EACP,IAAI,CAAC,OAAO,CAAC,OAAO,EACpB,EAAE,CACL,CACJ,CAAC;gBAEF,oDAAoD;aACvD;iBAAM;gBACH,OAAO,GAAG,IAAA,sBAAC,EAAA,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC;gBAClD,OAAO,GAAG,WAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;aAC7C;YAED,cAAc;SACjB;aAAM;YACH,OAAO,GAAG,IAAA,sBAAC,EAAA,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;YAC9B,OAAO,GAAG,WAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SAClD;QACD,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAQ,CAAC,KAAK,EAAE,CAAC,mBAAmB,EAAE,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE;YAEtF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;YAC1C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;YAE1C,0CAA0C;YAC1C,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACvB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;aAC5B;YACD,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YACxD,IAAI,IAAyB,CAAC;YAE9B,MAAM,oBAAoB,GAAG;gBACzB,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,OAAO;gBAChB,MAAM,EAAE,YAAY;aACC,CAAC;YAE1B,IAAI,aAAa,KAAK,MAAM,IAAI,aAAa,KAAK,KAAK,EAAE;gBACrD,6BAA6B;gBAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAC3B,IAAI,iBAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CACtC,CAAC;gBAEF,0CAA0C;gBAC1C,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;oBAC5C,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACzB,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,cAAc,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;iBAClF;gBAED,6BAA6B;gBAC7B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAEzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC;gBAE3D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE;oBACnE,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBAC/C,CAAC,CAAC,CAAC;gBAEH,oDAAoD;gBACpD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE;oBAChC,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,OAAO;iBAChB,CAAC,CAAC;gBAEH,IAAI,GAAG,OAAO,CAAC;gBAEf,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aAEvD;iBAAM;YACH,aAAa;YACb,aAAa,KAAK,MAAM;gBACxB,4FAA4F;gBAC5F,YAAY,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAC7C;gBACE,6BAA6B;gBAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAC3B,IAAI,iBAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CACtC,CAAC;gBAEF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC;gBAE3D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE;oBACnE,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBAC/C,CAAC,CAAC,CAAC;gBAEH,oDAAoD;gBACpD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE;oBAChC,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,OAAO;iBAChB,CAAC,CAAC;gBAEH,IAAI,GAAG,OAAO,CAAC;gBAEf,sCAAsC;gBACtC,IAAI,KAAK,GAAG,IAAI,mBAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACxC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAErB,+EAA+E;gBAC/E,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;aAE1C;iBAAM;gBACH,gFAAgF;gBAChF,iDAAiD;gBACjD,wBAAwB;gBACxB,wBAAwB;gBACxB,yBAAyB;gBACzB,aAAa;gBACb,2BAA2B;aAC9B;YACD,OAAO,IAAI,CAAC;QAChB,CAAC,CAAM,CAAC;IACZ,CAAC;IAED;;;OAGG;IACI,iBAAiB;QACpB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACrB,MAAM,WAAW,GAAG,IAAI,aAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;YAC9D,WAAW,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACxD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;SAC9B;IACL,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,QAAkB,EAAE,aAAa,GAAG,IAAI;QACvD,KAAK,IAAI,OAAO,IAAI,QAAQ,EAAE;YAC1B,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;SAC3C;IACL,CAAC;IAED;;;;OAIG;IACI,UAAU,CAAC,QAAgB,EAAE,aAAa,GAAG,IAAI;QACpD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;QAEpD,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QACjD,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBACnC,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,IAAI;aACb,CAAC,CAAC;YAEH,qFAAqF;YACrF,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,KAAK,EAAE;gBACP,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE;oBACpC,OAAO,EAAE,IAAI;oBACb,KAAK,EAAE,KAAK;iBACf,CAAC,CAAC;gBACH,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChB,4DAA4D;gBAC5D,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBACtD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE;oBACnC,OAAO,EAAE,IAAI;oBACb,KAAK,EAAE,KAAK;iBACf,CAAC,CAAC;aACN;YACD,kCAAkC;YAClC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAExB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAErD,8EAA8E;YAC9E,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;gBACzC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;aAClF;YAED,2DAA2D;YAC3D,IAAI,IAAA,sBAAS,EAAC,IAAI,CAAC,EAAE;gBACjB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;aAClC;YACD,cAAc;YACd,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBAClC,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,IAAI;aACb,CAAC,CAAC;SACN;IACL,CAAC;IAED;;;;OAIG;IACI,mBAAmB,CAAC,aAAqB,EAAE,aAAa,GAAG,IAAI;QAClE,IAAI,aAAa,EAAE;YACf,aAAa,GAAG,WAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;SACvD;QACD,MAAM,kBAAkB,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;QACvD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAChD,uGAAuG;YACvG,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,YAAY,KAAK,kBAAkB,EAAE;gBAClG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;aACxC;SACJ;IACL,CAAC;IAED;;;OAGG;IACI,QAAQ;QACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAQ,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,GAAG,EAAE;;YACxD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE;gBACvC,OAAO,EAAE,IAAI;aAChB,CAAC,CAAC;YAEH,qBAAqB;YACrB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAE1C,wCAAwC;gBACxC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE;oBACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,EAAE,GAAG,EAAE,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,CAAC,CAAC;oBAC1G,qCAAqC;oBACrC,IAAI,CAAC,WAAW,CAAC,IAAI,iCACd,uCAAkB,CAAC,+BAA+B,EAAE,KACvD,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,WAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,IACpD,CAAC;iBACN;gBAED,yCAAyC;gBACzC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;oBACnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE;wBACpC,OAAO,EAAE,IAAI;wBACb,IAAI,EAAE,IAAI;qBACb,CAAC,CAAC;oBAEH,6EAA6E;oBAC7E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE;wBAChC,OAAO,EAAE,IAAI;wBACb,IAAI,EAAE,IAAI;qBACb,CAAC,CAAC;oBACH,4DAA4D;oBAC5D,MAAA,IAAI,CAAC,QAAQ,+CAAb,IAAI,CAAa,CAAC;oBAClB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;oBAExB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE;wBACnC,OAAO,EAAE,IAAI;wBACb,IAAI,EAAE,IAAI;qBACb,CAAC,CAAC;iBACN;aACJ;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAQ,CAAC,IAAI,EAAE,CAAC,qBAAqB,CAAC,EAAE,GAAG,EAAE;gBAC1D,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;oBAC1C,kCAAkC;oBAClC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;wBACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE;4BACrC,OAAO,EAAE,IAAI;4BACb,KAAK,EAAE,KAAK;yBACf,CAAC,CAAC;wBAEH,KAAK,CAAC,QAAQ,EAAE,CAAC;wBACjB,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;wBAEzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE;4BACpC,OAAO,EAAE,IAAI;4BACb,KAAK,EAAE,KAAK;yBACf,CAAC,CAAC;qBACN;iBACJ;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,6BAA6B,EAAE,CAAC;YAErC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE;gBACtC,OAAO,EAAE,IAAI;aAChB,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACK,6BAA6B;;QACjC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAqB,CAAC;QACtD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,oEAAoE;YACpE,IAAI,IAAA,sBAAS,EAAC,IAAI,CAAC,EAAE;gBACjB,MAAM,kBAAkB,GAAG,MAAA,IAAI,CAAC,aAAa,0CAAE,IAAI,CAAC,WAAW,EAAE,CAAC;gBAClE,IAAI,kBAAkB,EAAE;oBACpB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE;wBAC3C,gBAAgB,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;qBACpD;yBAAM;wBACH,gBAAgB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACvD;iBACJ;aACJ;SACJ;QAED,KAAK,MAAM,QAAQ,IAAI,gBAAgB,CAAC,MAAM,EAAE,EAAE;YAC9C,8DAA8D;YAC9D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,KAAK,IAAI,OAAO,IAAI,QAAQ,EAAE;oBAC1B,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;oBAClC,IAAI,CAAC,WAAW,CAAC,IAAI,iCACd,uCAAkB,CAAC,sBAAsB,CAAC,aAAa,CAAC,IAAI,CAAC,KAChE,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,EAClC,IAAI,EAAE,OAAO,EACb,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;4BAC5D,OAAO;gCACH,QAAQ,EAAE,gCAAQ,CAAC,MAAM,CACrB,gBAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EACpC,CAAC,CAAC,aAAa,CAAC,KAAK,CACxB;gCACD,OAAO,EAAE,mBAAmB;6BAC/B,CAAC;wBACN,CAAC,CAAC,IACJ,CAAC;iBACN;aACJ;SACJ;IACL,CAAC;IAED;;OAEG;IACK,wBAAwB,CAAC,IAAa;QAC1C,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACrB,OAAO,IAAI,CAAC;aACf;SACJ;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAoB,SAAmB,EAAE,aAAa,GAAG,IAAI;QACxE,OAAO,SAAS;aACX,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;aACtD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,SAAS,CAAQ,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACI,OAAO,CAAoB,QAAgB,EAAE,aAAa,GAAG,IAAI;QACpE,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;YAC9B,OAAO,SAAS,CAAC;SACpB;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAClC,OAAO,IAAI,CAAC,KAAK,CACb,CAAC,aAAa,CAAC,CAAC,CAAC,WAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CACvE,CAAC;SACV;aAAM;YACH,OAAO,IAAI,CAAC,MAAM,CACd,CAAC,aAAa,CAAC,CAAC,CAAC,WAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CACvE,CAAC;SACV;IACL,CAAC;IAED;;;OAGG;IACI,gBAAgB,CAAC,IAAuB;QAC3C,IAAI,MAAM,GAAG,EAAa,CAAC;QAC3B,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;YACzB,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAE7B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACrB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtB;SACJ;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;OAEG;IACI,oBAAoB,CAAC,IAAuB;QAC/C,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;YACzB,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAE7B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACrB,OAAO,KAAK,CAAC;aAChB;SACJ;IACL,CAAC;IAEM,mBAAmB,CAAC,IAAY,EAAE,UAAmB,EAAE,aAAsB;;QAChF,IAAI,OAAO,GAAG,IAAI,GAAG,EAAkC,CAAC;QACxD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAW,CAAC;QACzC,IAAI,kBAAkB,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAW,EAAE,CAAC;QACtD,IAAI,SAAS,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,EAAE,CAAC;QACpC,6CAA6C;QAC7C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE;YACnD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE;gBACpC,IAAI,IAAA,sBAAS,EAAC,IAAI,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBAC5C,SAAS;iBACZ;gBACD,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAExB,KAAK,MAAM,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE;oBAC3I,IAAI,mBAAmB,GAAG,MAAA,MAAA,SAAS,CAAC,aAAa,0CAAE,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,0CAAE,WAAW,EAAE,CAAC;oBAChG,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,IAAI,CAAC,CAAC,mBAAmB,IAAI,mBAAmB,KAAK,kBAAkB,CAAC,EAAE;wBACzH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;4BACzB,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;yBAC3D;qBACJ;iBACJ;aACJ;SACJ;QACD,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjC,CAAC;IAEM,uBAAuB,CAAC,KAAe,EAAE,UAAmB;;QAC/D,IAAI,OAAO,GAAG,IAAI,GAAG,EAA0C,CAAC;QAChE,MAAM,aAAa,GAAG,IAAI,GAAG,EAAW,CAAC;QAEzC,qDAAqD;QACrD,IAAI,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,OAAO,IAAA,uBAAU,EAAC,YAAY,CAAC,EAAE;YAC7B,KAAK,IAAI,MAAM,IAAI,MAAA,MAAA,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,0CAAE,gBAAgB,mCAAI,EAAE,EAAE;gBAC3E,IAAI,IAAA,kCAAqB,EAAC,MAAM,CAAC,EAAE;oBAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;oBACzB,IAAI,CAAC,UAAU,IAAI,IAAI,KAAK,UAAU,EAAE;wBACpC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;qBACvB;iBACJ;aACJ;YACD,YAAY,GAAG,YAAY,CAAC,cAAc,EAAc,CAAC;SAC5D;QAED,6CAA6C;QAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE;YACpC,IAAI,IAAA,sBAAS,EAAC,IAAI,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC5C,SAAS;aACZ;YACD,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAExB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,EAAE;gBAC/D,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;wBACzB,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;qBAC3D;iBACJ;aACJ;SACJ;QACD,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACI,cAAc,CAAC,OAAe,EAAE,QAAkB;QACrD,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,EAAE,CAAC;SACb;QACD,IAAI,MAAM,GAAG,EAAsB,CAAC;QAEpC,IAAI,IAAA,sBAAS,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,QAAQ,EAAE,qBAAS,CAAC,QAAQ,CAAC,EAAE;YACxF,oEAAoE;YACpE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAU,EAAC,CAAC,CAAC,CAAC,EAAE;gBAC/D,IAAI,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAiB,CAAC,CAAC;gBAChE,KAAK,IAAI,QAAQ,IAAI,SAAS,EAAE;oBAE5B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;iBAC3E;aACJ;YACD,0CAA0C;YAC1C,OAAO,MAAM,CAAC;SAEjB;QACD,+BAA+B;QAC/B,IAAI,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAEzC,4FAA4F;QAC5F,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEzD,mDAAmD;QACnD,IAAI,cAAc,GAAG,WAAI,CAAC,OAAO,CAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACb,GAAG,CAAC,eAAe,EAAE,CAAC;YACtB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACvD,GAAG,CAAC,iBAAiB,EAAE,CAAC;YACxB,OAAO,WAAW,CAAC;QACvB,CAAC,CAAC,EACF,CAAC,CAAC,EAAE,CAAC,CAAC,CACT,CAAC;QAEF,2DAA2D;QAC3D,IAAI,SAAS,GAAG,EAA4B,CAAC;QAC7C,KAAK,IAAI,UAAU,IAAI,cAAc,EAAE;YACnC,IAAI,GAAG,GAAG,GAAG,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YACnD,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE;gBAClC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC3B;SACJ;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;OAEG;IACI,mBAAmB;QACtB,MAAM,MAAM,GAAG,EAAyB,CAAC;QACzC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,IAAA,sBAAS,EAAC,IAAI,CAAC,EAAE;gBACjB,MAAM,CAAC,IAAI,CACP,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAChC,CAAC;aACL;SACJ;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACI,aAAa,CAAC,OAAe,EAAE,QAAkB;QACpD,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,EAAE,CAAC;SACb;QAED,IAAI,IAAA,sBAAS,EAAC,IAAI,CAAC,EAAE;YACjB,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;SACvC;aAAM;YACH,IAAI,OAAO,GAAG,EAAgB,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC3C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;gBACxB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;aACpE;YACD,OAAO,OAAO,CAAC;SAClB;IACL,CAAC;IAED;;OAEG;IACI,QAAQ,CAAC,OAAe,EAAE,QAAkB;QAC/C,eAAe;QACf,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,IAAI,CAAC;SACf;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEtC,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED;;;OAGG;IACI,cAAc,CAAC,OAAe,EAAE,KAAY;QAC/C,MAAM,WAAW,GAAG,EAAkB,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,IAAI,EAAE;YACN,MAAM,WAAW,GAAG,IAAI;gBACpB,8DAA8D;iBAC7D,cAAc,EAAE;gBACjB,4CAA4C;iBAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;gBAC7B,6CAA6C;iBAC5C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,WAAI,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YAEvD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAE3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBAClC,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,KAAK;gBACZ,WAAW,EAAE,WAAW;gBACxB,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,WAAW;aAC3B,CAAC,CAAC;SACN;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,iBAAiB,CAAC,OAAe;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,IAAI,EAAE;YACN,MAAM,MAAM,GAAG,EAAqB,CAAC;YACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE;gBACrC,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;gBACnC,cAAc,EAAE,MAAM;aACzB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;SACjB;IACL,CAAC;IAEM,gBAAgB,CAAC,QAAgB,EAAE,QAAkB;;QACxD,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAA,sBAAS,EAAC,IAAI,CAAC,EAAE;YAC3B,OAAO,EAAE,CAAC;SACb;QAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAC;QAEpD,IAAI,kBAAkB,GAAG,IAAI,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC;QACxE,IAAI,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClE,IAAI,cAAc,CAAC,aAAa,KAAK,EAAE,EAAE;YACrC,8BAA8B;YAC9B,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7E,KAAK,IAAI,SAAS,IAAI,UAAU,EAAE;gBAC9B,+FAA+F;gBAC/F,mEAAmE;gBACnE,IAAI,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC1E,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACtC,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC;oBAC1C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;iBACrC;aACJ;SACJ;aAAM,IAAI,cAAc,CAAC,aAAa,KAAK,GAAG,EAAE;YAC7C,6BAA6B;YAC7B,8CAA8C;YAC9C,IAAI,kBAAkB,EAAE;gBACpB,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACtD,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;oBAC3C,KAAK,CAAC,eAAe,EAAE,CAAC;oBACxB,IAAI,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;oBAC9E,IAAI,OAAO,EAAE;wBACT,IAAI,OAAO,GAAG,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAS,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;wBACpG,uDAAuD;wBACvD,KAAK,IAAI,SAAS,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,mCAAsB,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;4BAC9E,IAAI,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;4BAC1E,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gCAEtC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gCAClC,OAAO;6BACV;yBACJ;qBACJ;oBACD,KAAK,CAAC,iBAAiB,EAAE,CAAC;iBAC7B;aAEJ;YAED,IAAI,cAAc,CAAC,OAAO,EAAE;gBACxB,sBAAsB;gBACtB,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;gBACrG,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;oBACzB,wEAAwE;oBACxE,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;iBAC5E;gBACD,KAAK,IAAI,SAAS,IAAI,UAAU,EAAE;oBAC9B,+FAA+F;oBAC/F,mEAAmE;oBACnE,IAAI,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBAC1E,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;wBACtC,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC;wBAC1C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;qBACrC;iBACJ;aACJ;SAGJ;aAAM,IAAI,cAAc,CAAC,aAAa,KAAK,IAAI,EAAE;YAC9C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAU,EAAC,CAAC,CAAC,CAAC,EAAE;gBAC/D,IAAI,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;gBACrF,KAAK,IAAI,QAAQ,IAAI,SAAS,EAAE;oBAE5B,IAAI,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACxE,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;wBACtC,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC;wBAC1C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;qBACrC;iBACJ;aACJ;SACJ;aAAM,IAAI,cAAc,CAAC,aAAa,KAAK,KAAK,EAAE;YAC/C,IAAI,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACzI,IAAI,OAAO,GAAG,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,0CAAE,qBAAqB,CAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,CAAC,CAAC;YACtE,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACtC,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;aACrC;SACJ;QAED,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjC,CAAC;IAEO,uBAAuB,CAAC,IAAa,EAAE,QAAkB;QAC7D,IAAI,KAAK,GAAG,WAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnD,IAAI,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC;QAC/B,IAAI,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;YAC3D,yDAAyD;YACzD,KAAK,EAAE,CAAC;YACR,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACvD;QACD,IAAI,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC;QAC7C,KAAK,GAAG,UAAU,CAAC,aAAa,GAAG,CAAC,CAAC;QACrC,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC;QACT,IAAI,OAAO,CAAC;QAEZ,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;YAC7B,uCAAuC;YACvC,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC;YAC3B,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACpD,IAAI,YAAY,IAAI,YAAY,CAAC,IAAI,KAAK,qBAAS,CAAC,OAAO,EAAE;gBACzD,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,CAAC,qBAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClE,IAAI,CAAC,IAAI,EAAE;oBACP,mDAAmD;oBACnD,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;oBAC1D,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,CAAC,qBAAS,CAAC,GAAG,CAAC,CAAC,CAAC;iBACrE;gBACD,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,GAAG,CAAC,EAAE;oBACpB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC5B,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;iBAClC;gBAED,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;gBAC3C,aAAa,GAAG,KAAK,CAAC;aACzB;iBAAM;gBACH,mBAAmB;gBACnB,KAAK,GAAG,CAAC,CAAC;gBACV,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC;aACxB;SACJ;QACD,mJAAmJ;QACnJ,OAAO,KAAK,IAAI,CAAC,CAAC,EAAE;YAChB,IAAI,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC9C,IAAI,CAAC,IAAI,EAAE;oBACP,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC;iBACnD;qBAAM;oBACH,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC;oBACnD,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;wBACvB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;qBACnD;iBACJ;gBACD,MAAM;aACT;YACD,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;gBACpC,aAAa,GAAG,IAAI,CAAC;gBACrB,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;gBACpD,MAAM;aACT;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,aAAa,KAAK,EAAE,EAAE;gBAC/D,aAAa,GAAG,GAAG,CAAC;gBACpB,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;gBACpD,aAAa,GAAG,KAAK,CAAC;aACzB;YACD,KAAK,EAAE,CAAC;SACX;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACjD,aAAa,GAAG,KAAK,CAAC;SACzB;QAED,OAAO;YACH,UAAU,EAAE,UAAU,CAAC,KAAK;YAC5B,aAAa,EAAE,aAAa;YAC5B,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,OAAO;SACnB,CAAC;IACN,CAAC;IAEO,oBAAoB,CAAC,IAAY,EAAE,KAAa;QACpD,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,IAAI,UAAU,GAAG;YACb,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,CAAC;YACR,QAAQ,EAAE,CAAC;YACX,aAAa,EAAE,KAAK;YACpB,eAAe,EAAE,KAAK;SACzB,CAAC;QACF,OAAO,KAAK,IAAI,CAAC,EAAE;YACf,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEvC,IAAI,WAAW,KAAK,IAAI,EAAE,EAAE,8BAA8B;gBACtD,UAAU,CAAC,eAAe,GAAG,KAAK,CAAC;gBACnC,MAAM;aACT;YAED,IAAI,eAAe,EAAE;gBACjB,IAAI,WAAW,KAAK,GAAG,EAAE;oBACrB,MAAM;iBACT;aACJ;iBAAM;gBACH,IAAI,WAAW,KAAK,GAAG,EAAE;oBACrB,UAAU,CAAC,MAAM,EAAE,CAAC;iBACvB;gBAED,IAAI,WAAW,KAAK,GAAG,EAAE;oBACrB,UAAU,CAAC,MAAM,EAAE,CAAC;iBACvB;gBAED,IAAI,WAAW,KAAK,GAAG,EAAE;oBACrB,UAAU,CAAC,KAAK,EAAE,CAAC;iBACtB;gBAED,IAAI,WAAW,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,UAAU,CAAC,KAAK,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;oBAClG,UAAU,CAAC,KAAK,EAAE,CAAC;iBACtB;gBAED,IAAI,WAAW,KAAK,GAAG,EAAE;oBACrB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;wBACzB,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC;wBAClC,UAAU,CAAC,aAAa,GAAG,KAAK,CAAC;qBACpC;yBAAM;wBACH,UAAU,CAAC,MAAM,EAAE,CAAC;qBACvB;iBACJ;gBAED,IAAI,WAAW,KAAK,GAAG,EAAE;oBACrB,UAAU,CAAC,MAAM,EAAE,CAAC;iBACvB;gBAED,IAAI,WAAW,KAAK,GAAG,EAAE;oBACrB,UAAU,CAAC,KAAK,EAAE,CAAC;iBACtB;aACJ;YACD,KAAK,EAAE,CAAC;SACX;QACD,OAAO,UAAU,CAAC;IAEtB,CAAC;IAED;;OAEG;IACI,aAAa,CAAC,OAAe,EAAE,QAAkB;QACpD,eAAe;QACf,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,IAAI,CAAC;SACf;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED;;;OAGG;IAEI,0BAA0B,CAAC,aAAqB,EAAE,YAA2B;QAChF,IAAI,kBAAkB,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;QAErD,IAAI,MAAM,GAAG,EAAsB,CAAC;QACpC;;WAEG;QACH,IAAI,cAAc,GAAG,EAA6B,CAAC;QAEnD,6BAA6B;QAC7B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B;YACI,0CAA0C;YAC1C,CAAC,IAAI,CAAC,SAAS,KAAK,KAAK,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC;gBACvD,mCAAmC;gBACnC,kBAAkB,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EACnD;gBACE,uBAAuB;gBACvB,IAAI,YAAY,GAAG,WAAI,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACzF,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBAChD,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;oBAC/B,cAAc,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;oBAEpC,MAAM,CAAC,IAAI,CAAC;wBACR,KAAK,EAAE,YAAY;wBACnB,MAAM,EAAE,IAAI,CAAC,OAAO;wBACpB,IAAI,EAAE,0CAAkB,CAAC,IAAI;wBAC7B,QAAQ,EAAE;4BACN,OAAO,EAAE,YAAY;4BACrB,KAAK,EAAE,YAAY,CAAC,aAAa;yBACpC;qBACJ,CAAC,CAAC;oBAEH,uBAAuB;oBACvB,MAAM,CAAC,IAAI,CAAC;wBACR,KAAK,EAAE,IAAI,CAAC,OAAO;wBACnB,MAAM,EAAE,IAAI,CAAC,OAAO;wBACpB,IAAI,EAAE,0CAAkB,CAAC,IAAI;wBAC7B,QAAQ,EAAE;4BACN,OAAO,EAAE,IAAI,CAAC,OAAO;4BACrB,KAAK,EAAE,YAAY,CAAC,aAAa;yBACpC;qBACJ,CAAC,CAAC;iBACN;aACJ;SACJ;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACI,yBAAyB,CAAC,OAAe;QAC5C,OAAO,IAAI,CAAC,0BAA0B,CAClC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CACxB,CAAC;IACN,CAAC;IAED;;;OAGG;IACK,0BAA0B,CAAC,IAAa,EAAE,UAAmB;QACjE,MAAM,MAAM,GAAG,IAAI,qBAAS,EAAE,CAAC;QAE/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE;YACrC,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE,MAAM;SACjB,CAAC,CAAC;QAEH,8DAA8D;QAC9D,IAAI,MAAM,CAAC,UAAU,EAAE;YACnB,oFAAoF;YACpF,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;SACrD;QAED,oBAAoB;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEhC,iCAAiC;QACjC,IAAI,OAAe,CAAC;QACpB,IAAI,IAAA,sBAAS,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YACjD,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;SAC/B;QAED,MAAM,KAAK,GAA4B;YACnC,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,OAAO,EAAE,OAAO;SACnB,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAE/C,kEAAkE;QAClE,MAAM,CAAC,OAAO,EAAE,CAAC;QAEjB,OAAO;YACH,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,OAAO,EAAE,KAAK,CAAC,OAAO;SACzB,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,WAAsB,EAAE,iBAAyB;QACpE,iFAAiF;QACjF,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAA0B,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;YACxF,UAAU,CAAC,IAAA,sBAAC,EAAA,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC;YACpC,OAAO,UAAU,CAAC;QACtB,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,MAAM,aAAa,GAAG,CAAC,IAAa,EAAE,EAAE;YACpC,IAAI,WAAW,GAAG,iBAAiB,CAAC,IAAA,sBAAC,EAAA,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,WAAW,EAAE;gBACd,gEAAgE;gBAChE,WAAW,GAAG;oBACV,0EAA0E;oBAC1E,GAAG,EAAE,kBAAkB,WAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;oBAC1D,IAAI,EAAE,IAAI,CAAC,OAAO;iBACrB,CAAC;aACL;YAED,sBAAsB;YACtB,IAAI,UAAU,GAAG,WAAW,CAAC,IAAI;gBAC7B,8BAA8B;iBAC7B,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC5B,uCAAuC;iBACtC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAEhC,iCAAiC;YACjC,UAAU,GAAG,IAAA,sBAAC,EAAA,GAAG,iBAAiB,IAAI,UAAU,EAAE,CAAC;YACnD,OAAO,UAAU,CAAC;QACtB,CAAC,CAAC;QAEF,MAAM,cAAc,GAAG,IAAI,GAAG,EAAW,CAAC;QAE1C,MAAM,aAAa,GAAG,KAAK,EAAE,IAAa,EAAE,UAAmB,EAAE,EAAE;YAC/D,qDAAqD;YACrD,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEzB,gCAAgC;YAChC,IAAI,IAAA,sBAAS,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;gBACnC,OAAO;aACV;YAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAE9E,oCAAoC;YACpC,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YAElD,IAAI,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;gBACtC,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,OAAO,gCAAgC,UAAU,gCAAgC,CAAC,CAAC;aACvI;YACD,MAAM,eAAe,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,UAAU,MAAM,EAAE,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACpI,MAAM,OAAO,CAAC,GAAG,CAAC;gBACd,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,mBAAmB,CAAC,IAAI,CAAC;gBACvD,eAAe;aAClB,CAAC,CAAC;YAEH,IAAI,mBAAmB,CAAC,OAAO,EAAE;gBAC7B,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC3D,MAAM,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;aACrE;QACL,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACjD,OAAO;gBACH,IAAI,EAAE,IAAI;gBACV,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;aAClC,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,qBAAS,EAAE,CAAC;QAElC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACxC,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,SAAS;SACpB,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACvC,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,4FAA4F;QAC5F,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAA,sBAAC,EAAA,uBAAuB,CAAC,EAAE;YAC1F,QAAQ,CAAC,IAAI,CAAC,WAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC,CAAC;SAC7D;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE5B,sFAAsF;QACtF,GAAG;YACC,QAAQ,GAAG,EAAE,CAAC;YACd,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;gBAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7B,oBAAoB;gBACpB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBAC3B,QAAQ,CAAC,IAAI,CACT,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAC3C,CAAC;iBACL;aACJ;YACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,QAAQ,CAAC,MAAM,YAAY,CAAC,CAAC;gBAC7D,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;aAC/B;SACJ,QACM,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;QAE5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACvC,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,SAAS;SACpB,CAAC,CAAC;QACH,SAAS,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,oBAAoB,CAAC,YAAoB;QAC5C,MAAM,KAAK,GAAG,EAAe,CAAC;QAC9B,MAAM,iBAAiB,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;QACrD,4CAA4C;QAC5C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC1C,IAAI,IAAA,sBAAS,EAAC,IAAI,CAAC,EAAE;gBACjB,+CAA+C;gBAC/C,2CAA2C;gBAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,uBAAuB,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,SAAS,EAAE;oBACrF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACpB;aACJ;SACJ;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,iBAAiB,CAAC,SAAiB;QACtC,MAAM,KAAK,GAAG,EAAe,CAAC;QAC9B,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QAC/C,yCAAyC;QACzC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC1C,IAAI,IAAA,sBAAS,EAAC,IAAI,CAAC,EAAE;gBACjB,wCAAwC;gBACxC,2CAA2C;gBAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,SAAS,EAAE;oBAC/E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACpB;aACJ;SACJ;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,WAAW;QACd,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,yBAAyB;YACzB,2IAA2I;YAC3I,IAAI,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAE/D,IAAI,QAAgB,CAAC;YACrB,IAAI;gBACA,4EAA4E;gBAC5E,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBACvD,IAAI,CAAC,SAAS,GAAG,IAAA,wBAAa,EAAC,QAAQ,CAAC,CAAC;aAC5C;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;aAC9B;SACJ;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAGM,OAAO;;QACV,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAA,IAAI,CAAC,OAAO,+CAAZ,IAAI,CAAY,CAAC;SACpB;QACD,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;YAC1B,MAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0CAAE,OAAO,EAAE,CAAC;SAChC;QACD,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;CACJ;AAv9CD,0BAu9CC"}
package/dist/Scope.d.ts CHANGED
@@ -1,15 +1,16 @@
1
1
  import type { CompletionItem, Position, Range } from 'vscode-languageserver';
2
2
  import { Location } from 'vscode-languageserver';
3
- import type { CallableContainer, BsDiagnostic, BscFile, CallableContainerMap, FileLink, InheritableStatement, InheritableType } from './interfaces';
3
+ import type { CallableContainer, BsDiagnostic, BscFile, CallableContainerMap, FileLink, InheritableStatement, InheritableType, NamedTypeStatement } from './interfaces';
4
4
  import type { Program } from './Program';
5
- import type { NamespaceStatement, Statement, FunctionStatement, ClassStatement, InterfaceStatement, EnumStatement } from './parser/Statement';
5
+ import type { NamespaceStatement, Statement, FunctionStatement, ClassStatement, EnumStatement, InterfaceStatement } from './parser/Statement';
6
6
  import type { FunctionExpression, NewExpression } from './parser/Expression';
7
7
  import { ParseMode } from './parser/Parser';
8
8
  import { Cache } from './Cache';
9
- import type { BrsFile } from './files/BrsFile';
9
+ import type { BrsFile, TokenSymbolLookup } from './files/BrsFile';
10
10
  import type { DependencyGraph, DependencyChangedEvent } from './DependencyGraph';
11
11
  import { SymbolTable } from './SymbolTable';
12
12
  import type { BscType, TypeContext } from './types/BscType';
13
+ import type { Token } from './lexer/Token';
13
14
  /**
14
15
  * A class to keep track of all declarations within a given scope (like source scope, component scope)
15
16
  */
@@ -30,7 +31,7 @@ export declare class Scope {
30
31
  * If a namespace is declared as "NameA.NameB.NameC", there will be 3 entries in this dictionary,
31
32
  * "namea", "namea.nameb", "namea.nameb.namec"
32
33
  */
33
- get namespaceLookup(): any;
34
+ get namespaceLookup(): Map<string, NamespaceContainer>;
34
35
  /**
35
36
  * Get the class with the specified name.
36
37
  * @param className - The class name, including the namespace of the class if possible
@@ -48,13 +49,19 @@ export declare class Scope {
48
49
  * @param name - The name, including the namespace of the interface if possible
49
50
  * @param containingNamespace - The namespace used to resolve relative names. (i.e. the namespace around the current statement trying to find the interface or class)
50
51
  */
51
- getNamedTypeStatement(name: string, containingNamespace?: string): InheritableStatement;
52
+ getNamedTypeStatement(name: string, containingNamespace?: string): NamedTypeStatement;
52
53
  /**
53
54
  * A cache of a map of tokens -> TokenSymbolLookups, which are the result of getSymbolTypeFromToken()
54
55
  * Sometimes the lookup of symbols may take a while if there are lazyTypes or multiple tokens in a chain
55
56
  * By caching the result of this lookup, subsequent lookups of the same tokens are quicker
56
57
  */
57
- get symbolCache(): any;
58
+ get symbolCache(): Map<Token, TokenSymbolLookup>;
59
+ /**
60
+ * Get the enum with the specified name.
61
+ * @param enumName - The enum name, including the namespace if possible
62
+ * @param containingNamespace - The namespace used to resolve relative enum names. (i.e. the namespace around the current statement trying to find an enum)
63
+ */
64
+ getEnum(enumName: string, containingNamespace?: string): EnumStatement;
58
65
  /**
59
66
  * Get a class and its containing file by the class name
60
67
  * @param className - The class name, including the namespace of the class if possible
@@ -68,11 +75,23 @@ export declare class Scope {
68
75
  */
69
76
  getInterfaceFileLink(ifaceName: string, containingNamespace?: string): FileLink<InterfaceStatement>;
70
77
  /**
71
- * Get a InheritableStatement and its containing file by the name of the interface or class
72
- * @param name - The name of the interface or class, including the namespace of the class if possible
78
+ * Get an Enum and its containing file by the Enum name
79
+ * @param enumName - The Enum name, including the namespace of the enum if possible
80
+ * @param containingNamespace - The namespace used to resolve relative enum names. (i.e. the namespace around the current statement trying to find a enum)
81
+ */
82
+ getEnumFileLink(enumName: string, containingNamespace?: string): FileLink<EnumStatement>;
83
+ /**
84
+ * Get a Named Type (e.g. Class, Interface, Enum) and its containing file by the name
85
+ * @param name - The name of the type, including the namespace of the class/interface/enum, etc. if possible
73
86
  * @param containingNamespace - The namespace used to resolve relative names. (i.e. the namespace around the current statement trying to find a class)
74
87
  */
75
- getFileLink(name: string, containingNamespace?: string): FileLink<InheritableStatement>;
88
+ getNamedTypeFileLink(name: string, containingNamespace?: string): FileLink<NamedTypeStatement>;
89
+ /**
90
+ * Get a InheritableStatement and its containing file by the name of the interface or class
91
+ * @param name - The name of the interface or class, including the namespace of the class if possible
92
+ * @param containingNamespace - The namespace used to resolve relative names. (i.e. the namespace around the current statement trying to find a class)
93
+ */
94
+ getInheritableFileLink(name: string, containingNamespace?: string): FileLink<InheritableStatement>;
76
95
  /**
77
96
  * Gets the parent class of the given class
78
97
  * @param klass - The class to get the parent of, if possible
@@ -96,15 +115,21 @@ export declare class Scope {
96
115
  hasClass(className: string, namespaceName?: string): boolean;
97
116
  /**
98
117
  * Tests if an interface exists with the specified name
99
- * @param ifaceName - the all-lower-case namespace-included class name
118
+ * @param ifaceName - the all-lower-case namespace-included interface name
100
119
  * @param namespaceName - the current namespace name
101
120
  */
102
121
  hasInterface(ifaceName: string, namespaceName?: string): boolean;
103
122
  /**
104
- * Tests if a class OR an interface, etc. exists with the specified name
105
- * @param name - the all-lower-case namespace-included class or interface name
123
+ * Tests if an enum exists with the specified name
124
+ * @param enumName - the all-lower-case namespace-included enum name
106
125
  * @param namespaceName - the current namespace name
107
126
  */
127
+ hasEnum(enumName: string, namespaceName?: string): boolean;
128
+ /**
129
+ * Tests if a class OR an interface, etc. exists with the specified name
130
+ * @param name - the all-lower-case namespace-included class or interface name
131
+ * @param namespaceName - the current namespace name
132
+ */
108
133
  hasNamedType(name: string, namespaceName?: string): boolean;
109
134
  /**
110
135
  * A dictionary of all classes in this scope. This includes namespaced classes always with their full name.
@@ -113,9 +138,9 @@ export declare class Scope {
113
138
  getClassMap(): Map<string, FileLink<ClassStatement>>;
114
139
  getAncestorTypeListByContext(thisType: BscType, context?: TypeContext): InheritableType[];
115
140
  /**
116
- * A dictionary of all Interfaces in this scope. This includes namespaced Interfaces always with their full name.
117
- * The key is stored in lower case
118
- */
141
+ * A dictionary of all Interfaces in this scope. This includes namespaced Interfaces always with their full name.
142
+ * The key is stored in lower case
143
+ */
119
144
  getInterfaceMap(): Map<string, FileLink<InterfaceStatement>>;
120
145
  getAncestorTypeList(className: string, functionExpression?: FunctionExpression): InheritableType[];
121
146
  /**
package/dist/Scope.js CHANGED
@@ -70,7 +70,7 @@ class Scope {
70
70
  */
71
71
  getNamedTypeStatement(name, containingNamespace) {
72
72
  var _a;
73
- return (_a = this.getFileLink(name, containingNamespace)) === null || _a === void 0 ? void 0 : _a.item;
73
+ return (_a = this.getNamedTypeFileLink(name, containingNamespace)) === null || _a === void 0 ? void 0 : _a.item;
74
74
  }
75
75
  /**
76
76
  * A cache of a map of tokens -> TokenSymbolLookups, which are the result of getSymbolTypeFromToken()
@@ -80,6 +80,15 @@ class Scope {
80
80
  get symbolCache() {
81
81
  return this.cache.getOrAdd('symbolCache', () => new Map());
82
82
  }
83
+ /**
84
+ * Get the enum with the specified name.
85
+ * @param enumName - The enum name, including the namespace if possible
86
+ * @param containingNamespace - The namespace used to resolve relative enum names. (i.e. the namespace around the current statement trying to find an enum)
87
+ */
88
+ getEnum(enumName, containingNamespace) {
89
+ var _a;
90
+ return (_a = this.getEnumFileLink(enumName, containingNamespace)) === null || _a === void 0 ? void 0 : _a.item;
91
+ }
83
92
  /**
84
93
  * Get a class and its containing file by the class name
85
94
  * @param className - The class name, including the namespace of the class if possible
@@ -111,11 +120,34 @@ class Scope {
111
120
  return iface;
112
121
  }
113
122
  /**
114
- * Get a InheritableStatement and its containing file by the name of the interface or class
115
- * @param name - The name of the interface or class, including the namespace of the class if possible
123
+ * Get an Enum and its containing file by the Enum name
124
+ * @param enumName - The Enum name, including the namespace of the enum if possible
125
+ * @param containingNamespace - The namespace used to resolve relative enum names. (i.e. the namespace around the current statement trying to find a enum)
126
+ */
127
+ getEnumFileLink(enumName, containingNamespace) {
128
+ const lowerName = enumName === null || enumName === void 0 ? void 0 : enumName.toLowerCase();
129
+ const enumMap = this.getEnumMap();
130
+ let enumeration = enumMap.get(util_1.util.getFullyQualifiedClassName(lowerName, containingNamespace === null || containingNamespace === void 0 ? void 0 : containingNamespace.toLowerCase()));
131
+ //if we couldn't find the enum by its full namespaced name, look for a global enum with that name
132
+ if (!enumeration) {
133
+ enumeration = enumMap.get(lowerName);
134
+ }
135
+ return enumeration;
136
+ }
137
+ /**
138
+ * Get a Named Type (e.g. Class, Interface, Enum) and its containing file by the name
139
+ * @param name - The name of the type, including the namespace of the class/interface/enum, etc. if possible
116
140
  * @param containingNamespace - The namespace used to resolve relative names. (i.e. the namespace around the current statement trying to find a class)
117
141
  */
118
- getFileLink(name, containingNamespace) {
142
+ getNamedTypeFileLink(name, containingNamespace) {
143
+ return this.getInheritableFileLink(name, containingNamespace) || this.getEnumFileLink(name, containingNamespace);
144
+ }
145
+ /**
146
+ * Get a InheritableStatement and its containing file by the name of the interface or class
147
+ * @param name - The name of the interface or class, including the namespace of the class if possible
148
+ * @param containingNamespace - The namespace used to resolve relative names. (i.e. the namespace around the current statement trying to find a class)
149
+ */
150
+ getInheritableFileLink(name, containingNamespace) {
119
151
  return this.getClassFileLink(name, containingNamespace) || this.getInterfaceFileLink(name, containingNamespace);
120
152
  }
121
153
  /**
@@ -170,17 +202,25 @@ class Scope {
170
202
  }
171
203
  /**
172
204
  * Tests if an interface exists with the specified name
173
- * @param ifaceName - the all-lower-case namespace-included class name
205
+ * @param ifaceName - the all-lower-case namespace-included interface name
174
206
  * @param namespaceName - the current namespace name
175
207
  */
176
208
  hasInterface(ifaceName, namespaceName) {
177
- return !!this.hasInterface(ifaceName, namespaceName);
209
+ return !!this.getInterface(ifaceName, namespaceName);
178
210
  }
179
211
  /**
180
- * Tests if a class OR an interface, etc. exists with the specified name
181
- * @param name - the all-lower-case namespace-included class or interface name
212
+ * Tests if an enum exists with the specified name
213
+ * @param enumName - the all-lower-case namespace-included enum name
182
214
  * @param namespaceName - the current namespace name
183
215
  */
216
+ hasEnum(enumName, namespaceName) {
217
+ return !!this.getEnum(enumName, namespaceName);
218
+ }
219
+ /**
220
+ * Tests if a class OR an interface, etc. exists with the specified name
221
+ * @param name - the all-lower-case namespace-included class or interface name
222
+ * @param namespaceName - the current namespace name
223
+ */
184
224
  hasNamedType(name, namespaceName) {
185
225
  return !!this.getNamedTypeStatement(name, namespaceName);
186
226
  }
@@ -215,20 +255,20 @@ class Scope {
215
255
  return [];
216
256
  }
217
257
  /**
218
- * A dictionary of all Interfaces in this scope. This includes namespaced Interfaces always with their full name.
219
- * The key is stored in lower case
220
- */
258
+ * A dictionary of all Interfaces in this scope. This includes namespaced Interfaces always with their full name.
259
+ * The key is stored in lower case
260
+ */
221
261
  getInterfaceMap() {
222
262
  return this.cache.getOrAdd('interfaceMap', () => {
223
263
  const map = new Map();
224
264
  this.enumerateBrsFiles((file) => {
225
265
  var _a;
226
266
  if ((0, reflection_1.isBrsFile)(file)) {
227
- for (let cls of file.parser.references.interfaceStatements) {
228
- const lowerClassName = (_a = cls.getName(Parser_1.ParseMode.BrighterScript)) === null || _a === void 0 ? void 0 : _a.toLowerCase();
267
+ for (let iface of file.parser.references.interfaceStatements) {
268
+ const lowerIfaceName = (_a = iface.getName(Parser_1.ParseMode.BrighterScript)) === null || _a === void 0 ? void 0 : _a.toLowerCase();
229
269
  //only track classes with a defined name (i.e. exclude nameless malformed classes)
230
- if (lowerClassName) {
231
- map.set(lowerClassName, { item: cls, file: file });
270
+ if (lowerIfaceName) {
271
+ map.set(lowerIfaceName, { item: iface, file: file });
232
272
  }
233
273
  }
234
274
  }
@@ -240,7 +280,7 @@ class Scope {
240
280
  var _a, _b;
241
281
  const lowerNamespaceName = (_a = functionExpression.namespaceName) === null || _a === void 0 ? void 0 : _a.getName().toLowerCase();
242
282
  const ancestors = [];
243
- let currentClassOrIFace = (_b = this.getFileLink(className, lowerNamespaceName)) === null || _b === void 0 ? void 0 : _b.item;
283
+ let currentClassOrIFace = (_b = this.getInheritableFileLink(className, lowerNamespaceName)) === null || _b === void 0 ? void 0 : _b.item;
244
284
  if (currentClassOrIFace) {
245
285
  ancestors.push(currentClassOrIFace === null || currentClassOrIFace === void 0 ? void 0 : currentClassOrIFace.getThisBscType());
246
286
  }
@@ -637,7 +677,7 @@ class Scope {
637
677
  * This will only rebuilt if the symbol table has not been built before
638
678
  */
639
679
  linkSymbolTable() {
640
- var _a, _b;
680
+ var _a, _b, _c;
641
681
  for (const file of this.getAllFiles()) {
642
682
  if ((0, reflection_1.isBrsFile)(file)) {
643
683
  file.parser.symbolTable.setParent(this.symbolTable);
@@ -674,6 +714,12 @@ class Scope {
674
714
  const ifaceStmt = (_b = pair[1]) === null || _b === void 0 ? void 0 : _b.item;
675
715
  ifaceStmt === null || ifaceStmt === void 0 ? void 0 : ifaceStmt.buildSymbolTable(this.getParentInterface(ifaceStmt));
676
716
  }
717
+ //also link enums
718
+ const enumMap = this.getEnumMap();
719
+ for (const pair of enumMap) {
720
+ const enumStmt = (_c = pair[1]) === null || _c === void 0 ? void 0 : _c.item;
721
+ enumStmt === null || enumStmt === void 0 ? void 0 : enumStmt.buildSymbolTable();
722
+ }
677
723
  }
678
724
  unlinkSymbolTable() {
679
725
  var _a;
@@ -756,7 +802,7 @@ class Scope {
756
802
  if (!paramType && param.type) {
757
803
  const paramTypeName = param.type.getText();
758
804
  const currentNamespaceName = (_d = func.namespaceName) === null || _d === void 0 ? void 0 : _d.getName(Parser_1.ParseMode.BrighterScript);
759
- if (!this.hasClass(paramTypeName, currentNamespaceName)) {
805
+ if (!this.hasClass(paramTypeName, currentNamespaceName) && !this.hasInterface(paramTypeName) && !this.hasEnum(paramTypeName)) {
760
806
  this.diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.functionParameterTypeIsInvalid(param.name.text, paramTypeName)), { range: param.type.range, file: file }));
761
807
  }
762
808
  }