@pinnacle0/webpack-util 0.3.38 → 0.3.40

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/package.json CHANGED
@@ -1,44 +1,38 @@
1
1
  {
2
2
  "name": "@pinnacle0/webpack-util",
3
- "version": "0.3.38",
3
+ "version": "0.3.40",
4
4
  "license": "MIT",
5
5
  "main": "src/index.js",
6
6
  "dependencies": {
7
- "@babel/core": "7.19.3",
8
- "@babel/plugin-proposal-decorators": "7.19.3",
9
- "@babel/preset-env": "7.19.4",
10
- "@babel/preset-react": "7.18.6",
11
- "@babel/preset-typescript": "7.18.6",
12
- "@pmmmwh/react-refresh-webpack-plugin": "0.5.8",
13
- "@swc/core": "1.3.9",
14
- "autoprefixer": "10.4.12",
15
- "babel-loader": "8.2.5",
16
- "css-loader": "6.7.1",
7
+ "@pmmmwh/react-refresh-webpack-plugin": "0.5.9",
8
+ "@swc/core": "1.3.19",
9
+ "autoprefixer": "10.4.13",
10
+ "css-loader": "6.7.2",
17
11
  "css-minimizer-webpack-plugin": "4.2.2",
18
12
  "fork-ts-checker-webpack-plugin": "7.2.13",
19
13
  "fs-extra": "10.1.0",
20
14
  "html-webpack-plugin": "5.5.0",
21
15
  "less": "4.1.3",
22
16
  "less-loader": "11.1.0",
23
- "mini-css-extract-plugin": "2.6.1",
24
- "postcss": "8.4.18",
17
+ "mini-css-extract-plugin": "2.7.0",
18
+ "postcss": "8.4.19",
25
19
  "postcss-loader": "7.0.1",
26
- "pretty-format": "29.2.1",
20
+ "pretty-format": "29.3.1",
27
21
  "react-refresh": "0.14.0",
28
22
  "style-loader": "3.3.1",
29
23
  "swc-loader": "0.2.3",
24
+ "swc-plugin-core-fe-hmr": "0.1.0",
30
25
  "terser-webpack-plugin": "5.3.6",
31
- "webpack": "5.74.0",
26
+ "webpack": "5.75.0",
32
27
  "webpack-dev-server": "4.11.1",
33
- "yargs": "17.6.0"
28
+ "yargs": "17.6.2"
34
29
  },
35
30
  "peerDependencies": {
36
- "@pinnacle0/devtool-util": "1.1.4",
31
+ "@pinnacle0/devtool-util": "1.1.5",
37
32
  "typescript": "*"
38
33
  },
39
34
  "devDependencies": {
40
- "@pinnacle0/devtool-util": "1.1.4",
41
- "@types/babel__core": "7.1.19",
35
+ "@pinnacle0/devtool-util": "1.1.5",
42
36
  "@types/fs-extra": "9.0.13",
43
37
  "@types/html-webpack-plugin": "3.2.6",
44
38
  "@types/yargs": "17.0.13",
@@ -1,5 +1,7 @@
1
1
  export declare class RegExpUtil {
2
2
  static fileExtension(...extensions: [string, ...string[]]): RegExp;
3
- static webpackNotExclude(values: string[]): RegExp;
3
+ static webpackExclude({ nonES5Module }: {
4
+ nonES5Module: string[];
5
+ }): RegExp;
4
6
  private static validateFileExtension;
5
7
  }
@@ -10,8 +10,8 @@ class RegExpUtil {
10
10
  }
11
11
  return new RegExp(`(${escapedExtensions.join("|")})$`);
12
12
  }
13
- static webpackNotExclude(values) {
14
- const escapedPatterns = values.filter(_ => _.length > 0).map(_ => _.replace("/", "\\/") + "(\\/|$)");
13
+ static webpackExclude({ nonES5Module }) {
14
+ const escapedPatterns = nonES5Module.filter(_ => _.length > 0).map(_ => _.replace("/", "\\/") + "(\\/|$)");
15
15
  if (escapedPatterns.length < 1) {
16
16
  return /node_modules/;
17
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RegExpUtil.js","sourceRoot":"","sources":["../../../../src/WebpackConfigGenerator/Rule/RegExpUtil.ts"],"names":[],"mappings":";;;AAAA,MAAa,UAAU;IACnB,MAAM,CAAC,aAAa,CAAC,GAAG,UAAiC;QACrD,MAAM,iBAAiB,GAAa,EAAE,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;YAC1B,UAAU,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;YACtC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAA,IAAI,CAAC,CAAC,CAAC;SAC9D;QACD,OAAO,IAAI,MAAM,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,MAAgB;QACrC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;QACrG,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,OAAO,cAAc,CAAC;SACzB;QACD,OAAO,IAAI,MAAM,CAAC,qBAAqB,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzE,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,GAAW;QAC5C,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;SACjD;aAAM,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,mDAAmD,GAAG,IAAI,CAAC,CAAC;SAC/E;aAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACtC,MAAM,IAAI,KAAK,CAAC,2FAA2F,GAAG,IAAI,CAAC,CAAC;SACvH;IACL,CAAC;CACJ;AA3BD,gCA2BC"}
1
+ {"version":3,"file":"RegExpUtil.js","sourceRoot":"","sources":["../../../../src/WebpackConfigGenerator/Rule/RegExpUtil.ts"],"names":[],"mappings":";;;AAAA,MAAa,UAAU;IACnB,MAAM,CAAC,aAAa,CAAC,GAAG,UAAiC;QACrD,MAAM,iBAAiB,GAAa,EAAE,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;YAC1B,UAAU,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;YACtC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAA,IAAI,CAAC,CAAC,CAAC;SAC9D;QACD,OAAO,IAAI,MAAM,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,EAAC,YAAY,EAA2B;QAC1D,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;QAC3G,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,OAAO,cAAc,CAAC;SACzB;QACD,OAAO,IAAI,MAAM,CAAC,qBAAqB,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzE,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,GAAW;QAC5C,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;SACjD;aAAM,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,mDAAmD,GAAG,IAAI,CAAC,CAAC;SAC/E;aAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACtC,MAAM,IAAI,KAAK,CAAC,2FAA2F,GAAG,IAAI,CAAC,CAAC;SACvH;IACL,CAAC;CACJ;AA3BD,gCA2BC"}
@@ -29,7 +29,7 @@ function nonES5({ nonES5Module }) {
29
29
  return {
30
30
  test: RegExpUtil_1.RegExpUtil.fileExtension(".js", ".jsx"),
31
31
  use: [swcLoader],
32
- exclude: RegExpUtil_1.RegExpUtil.webpackNotExclude(nonES5Module),
32
+ exclude: RegExpUtil_1.RegExpUtil.webpackExclude({ nonES5Module }),
33
33
  };
34
34
  }
35
35
  exports.nonES5 = nonES5;
@@ -1 +1 @@
1
- {"version":3,"file":"non-es5.rule.js","sourceRoot":"","sources":["../../../../src/WebpackConfigGenerator/Rule/non-es5.rule.ts"],"names":[],"mappings":";;;AACA,6CAAwC;AAMxC;;;GAGG;AACH,SAAgB,MAAM,CAAC,EAAC,YAAY,EAAO;IACvC,MAAM,SAAS,GAA2B;QACtC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;QACrC,OAAO,EAAE;YACL,GAAG,EAAE;gBACD,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE;oBACJ,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE,IAAI;iBACnB;gBACD,SAAS,EAAE;oBACP,KAAK,EAAE;wBACH,OAAO,EAAE,SAAS;qBACrB;oBACD,eAAe,EAAE,IAAI;oBACrB,iBAAiB,EAAE,IAAI;iBAC1B;aACJ;SACJ;KACJ,CAAC;IAEF,OAAO;QACH,IAAI,EAAE,uBAAU,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC;QAC7C,GAAG,EAAE,CAAC,SAAS,CAAC;QAChB,OAAO,EAAE,uBAAU,CAAC,iBAAiB,CAAC,YAAY,CAAC;KACtD,CAAC;AACN,CAAC;AA1BD,wBA0BC"}
1
+ {"version":3,"file":"non-es5.rule.js","sourceRoot":"","sources":["../../../../src/WebpackConfigGenerator/Rule/non-es5.rule.ts"],"names":[],"mappings":";;;AACA,6CAAwC;AAMxC;;;GAGG;AACH,SAAgB,MAAM,CAAC,EAAC,YAAY,EAAO;IACvC,MAAM,SAAS,GAA2B;QACtC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;QACrC,OAAO,EAAE;YACL,GAAG,EAAE;gBACD,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE;oBACJ,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE,IAAI;iBACnB;gBACD,SAAS,EAAE;oBACP,KAAK,EAAE;wBACH,OAAO,EAAE,SAAS;qBACrB;oBACD,eAAe,EAAE,IAAI;oBACrB,iBAAiB,EAAE,IAAI;iBAC1B;aACJ;SACJ;KACJ,CAAC;IAEF,OAAO;QACH,IAAI,EAAE,uBAAU,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC;QAC7C,GAAG,EAAE,CAAC,SAAS,CAAC;QAChB,OAAO,EAAE,uBAAU,CAAC,cAAc,CAAC,EAAC,YAAY,EAAC,CAAC;KACrD,CAAC;AACN,CAAC;AA1BD,wBA0BC"}
@@ -1,10 +1,6 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.tsRule = void 0;
7
- const path_1 = __importDefault(require("path"));
8
4
  const RegExpUtil_1 = require("./RegExpUtil");
9
5
  /**
10
6
  * Handles dependency requests to typescript files
@@ -18,17 +14,6 @@ const RegExpUtil_1 = require("./RegExpUtil");
18
14
  * @see https://github.com/pmmmwh/react-refresh-webpack-plugin
19
15
  */
20
16
  function tsRule({ fastRefresh }) {
21
- const babelLoader = {
22
- loader: require.resolve("babel-loader"),
23
- options: {
24
- presets: ["@babel/preset-env", "@babel/preset-react", "@babel/preset-typescript"].map(_ => require.resolve(_)),
25
- plugins: [
26
- [require.resolve("@babel/plugin-proposal-decorators"), { version: "legacy" }],
27
- require.resolve(path_1.default.join(__dirname, "./core-fe-hmr-babel-plugin")),
28
- require.resolve("react-refresh/babel"),
29
- ],
30
- },
31
- };
32
17
  const swcLoader = {
33
18
  loader: require.resolve("swc-loader"),
34
19
  options: {
@@ -41,16 +26,20 @@ function tsRule({ fastRefresh }) {
41
26
  transform: {
42
27
  react: {
43
28
  runtime: "classic",
29
+ refresh: fastRefresh,
44
30
  },
45
31
  legacyDecorator: true,
46
32
  decoratorMetadata: true,
47
33
  },
34
+ experimental: {
35
+ plugins: [[require.resolve("swc-plugin-core-fe-hmr"), {}]],
36
+ },
48
37
  },
49
38
  },
50
39
  };
51
40
  return {
52
41
  test: RegExpUtil_1.RegExpUtil.fileExtension(".ts", ".tsx"),
53
- use: fastRefresh ? [babelLoader] : [swcLoader],
42
+ use: [swcLoader],
54
43
  };
55
44
  }
56
45
  exports.tsRule = tsRule;
@@ -1 +1 @@
1
- {"version":3,"file":"ts.rule.js","sourceRoot":"","sources":["../../../../src/WebpackConfigGenerator/Rule/ts.rule.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAExB,6CAAwC;AAMxC;;;;;;;;;;GAUG;AACH,SAAgB,MAAM,CAAC,EAAC,WAAW,EAAO;IACtC,MAAM,WAAW,GAA2B;QACxC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;QACvC,OAAO,EAAE;YACL,OAAO,EAAE,CAAC,mBAAmB,EAAE,qBAAqB,EAAE,0BAA0B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9G,OAAO,EAAE;gBACL,CAAC,OAAO,CAAC,OAAO,CAAC,mCAAmC,CAAC,EAAE,EAAC,OAAO,EAAE,QAAQ,EAAC,CAAC;gBAC3E,OAAO,CAAC,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC;gBACnE,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC;aACzC;SACJ;KACJ,CAAC;IAEF,MAAM,SAAS,GAA2B;QACtC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;QACrC,OAAO,EAAE;YACL,GAAG,EAAE;gBACD,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE;oBACJ,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE,IAAI;iBACnB;gBACD,SAAS,EAAE;oBACP,KAAK,EAAE;wBACH,OAAO,EAAE,SAAS;qBACrB;oBACD,eAAe,EAAE,IAAI;oBACrB,iBAAiB,EAAE,IAAI;iBAC1B;aACJ;SACJ;KACJ,CAAC;IAEF,OAAO;QACH,IAAI,EAAE,uBAAU,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC;QAC7C,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;KACjD,CAAC;AACN,CAAC;AArCD,wBAqCC"}
1
+ {"version":3,"file":"ts.rule.js","sourceRoot":"","sources":["../../../../src/WebpackConfigGenerator/Rule/ts.rule.ts"],"names":[],"mappings":";;;AACA,6CAAwC;AAMxC;;;;;;;;;;GAUG;AACH,SAAgB,MAAM,CAAC,EAAC,WAAW,EAAO;IACtC,MAAM,SAAS,GAA2B;QACtC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;QACrC,OAAO,EAAE;YACL,GAAG,EAAE;gBACD,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE;oBACJ,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE,IAAI;iBACnB;gBACD,SAAS,EAAE;oBACP,KAAK,EAAE;wBACH,OAAO,EAAE,SAAS;wBAClB,OAAO,EAAE,WAAW;qBACvB;oBACD,eAAe,EAAE,IAAI;oBACrB,iBAAiB,EAAE,IAAI;iBAC1B;gBACD,YAAY,EAAE;oBACV,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,EAAE,EAAE,CAAC,CAAC;iBAC7D;aACJ;SACJ;KACJ,CAAC;IAEF,OAAO;QACH,IAAI,EAAE,uBAAU,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC;QAC7C,GAAG,EAAE,CAAC,SAAS,CAAC;KACnB,CAAC;AACN,CAAC;AA7BD,wBA6BC"}
@@ -1,13 +0,0 @@
1
- import type * as babel from "@babel/core";
2
- interface State extends Pick<babel.PluginPass, "file" | "key" | "opts" | "cwd" | "filename"> {
3
- hasInjectedDeclineWebpackHMRNode: boolean;
4
- }
5
- /**
6
- * Injects `if (module.hot) module.hot.decline()` code snippet in files that contains "core-fe" Module classes.
7
- *
8
- * This tells webpack HMR to force refresh the browser when a file containing "core-fe" Module classes is changed,
9
- * otherwise react loses reference of the MainComponent created by `ModuleProxy` in "core-fe"
10
- * and throws a runtime error during development (which is bad for developer experience).
11
- */
12
- export default function ({ types: t }: typeof babel): babel.PluginObj<State>;
13
- export {};
@@ -1,62 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /**
4
- * Injects `if (module.hot) module.hot.decline()` code snippet in files that contains "core-fe" Module classes.
5
- *
6
- * This tells webpack HMR to force refresh the browser when a file containing "core-fe" Module classes is changed,
7
- * otherwise react loses reference of the MainComponent created by `ModuleProxy` in "core-fe"
8
- * and throws a runtime error during development (which is bad for developer experience).
9
- */
10
- function default_1({ types: t }) {
11
- return {
12
- visitor: {
13
- ImportDeclaration(path, state) {
14
- if (state.hasInjectedDeclineWebpackHMRNode) {
15
- return;
16
- }
17
- const { node: { source: { value: importSource }, specifiers: importSpecifiers, }, } = path;
18
- if (importSource !== "core-fe") {
19
- return;
20
- }
21
- if (!hasImportSpecifierOfIdentifierModule(t, importSpecifiers)) {
22
- return;
23
- }
24
- // We now know the TS/JS file has included `Module`, inject the code snippet
25
- const programPath = path.findParent(parentPath => t.isProgram(parentPath.node));
26
- // prettier-ignore
27
- const declineWebpackHMRNode = t.ifStatement(t.memberExpression(t.identifier("module"), t.identifier("hot")), t.expressionStatement(t.callExpression(t.memberExpression(t.memberExpression(t.identifier("module"), t.identifier("hot")), t.identifier("decline")), [])));
28
- // Append `if (module.hot) module.hot.decline()` to end of program body
29
- programPath.pushContainer("body", declineWebpackHMRNode);
30
- // We only need to inject the code snippet once per file, mark as injected
31
- state.hasInjectedDeclineWebpackHMRNode = true;
32
- },
33
- },
34
- };
35
- }
36
- exports.default = default_1;
37
- /**
38
- * @param t `babel.types`
39
- * @param importSpecifiers The "specifier" property of a `babel.types.ImportDeclaration` node
40
- * @returns true if the import declaration includes the identifier `Module`
41
- */
42
- function hasImportSpecifierOfIdentifierModule(t, importSpecifiers) {
43
- const specifier = importSpecifiers.find(specifier => {
44
- // Check if it is one of:
45
- // -> `import { <IMPORT_SPECIFIER_NODE> } from "core-fe";`
46
- // -> `import DontCareDefaultIdent, { <IMPORT_SPECIFIER_NODE> } from "core-fe";`
47
- if (t.isImportSpecifier(specifier)) {
48
- const importedSpecifier = specifier.imported;
49
- return t.isIdentifier(importedSpecifier) && importedSpecifier.name === "Module";
50
- }
51
- // Check if it is:
52
- // -> `import * as <IMPORT_NAMESPACE_SPECIFIER_NODE> from "core-fe";`
53
- if (t.isImportNamespaceSpecifier(specifier)) {
54
- // Not worth the effort to check if <IMPORT_NAMESPACE_SPECIFIER_NODE>.Module is used
55
- // Maybe enforce "core-fe" should not be imported with a namespace with an ESLint rule?
56
- return true;
57
- }
58
- return false;
59
- });
60
- return specifier !== undefined;
61
- }
62
- //# sourceMappingURL=core-fe-hmr-babel-plugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"core-fe-hmr-babel-plugin.js","sourceRoot":"","sources":["../../../../src/WebpackConfigGenerator/Rule/core-fe-hmr-babel-plugin.ts"],"names":[],"mappings":";;AAMA;;;;;;GAMG;AACH,mBAAyB,EAAC,KAAK,EAAE,CAAC,EAAe;IAC7C,OAAO;QACH,OAAO,EAAE;YACL,iBAAiB,CAAC,IAAI,EAAE,KAAK;gBACzB,IAAI,KAAK,CAAC,gCAAgC,EAAE;oBACxC,OAAO;iBACV;gBAED,MAAM,EACF,IAAI,EAAE,EACF,MAAM,EAAE,EAAC,KAAK,EAAE,YAAY,EAAC,EAC7B,UAAU,EAAE,gBAAgB,GAC/B,GACJ,GAAG,IAAI,CAAC;gBAET,IAAI,YAAY,KAAK,SAAS,EAAE;oBAC5B,OAAO;iBACV;gBAED,IAAI,CAAC,oCAAoC,CAAC,CAAC,EAAE,gBAAgB,CAAC,EAAE;oBAC5D,OAAO;iBACV;gBAED,4EAA4E;gBAC5E,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAyC,CAAC;gBAExH,kBAAkB;gBAClB,MAAM,qBAAqB,GAAG,CAAC,CAAC,WAAW,CACvC,CAAC,CAAC,gBAAgB,CACd,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EACtB,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CACtB,EACD,CAAC,CAAC,mBAAmB,CACjB,CAAC,CAAC,cAAc,CACZ,CAAC,CAAC,gBAAgB,CACd,CAAC,CAAC,gBAAgB,CACd,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EACtB,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CACtB,EACD,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAC1B,EACD,EAAE,CACL,CACJ,CACJ,CAAC;gBAEF,uEAAuE;gBACvE,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;gBAEzD,0EAA0E;gBAC1E,KAAK,CAAC,gCAAgC,GAAG,IAAI,CAAC;YAClD,CAAC;SACJ;KACJ,CAAC;AACN,CAAC;AAtDD,4BAsDC;AAED;;;;GAIG;AACH,SAAS,oCAAoC,CAAC,CAAqB,EAAE,gBAA6D;IAC9H,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;QAChD,yBAAyB;QACzB,0DAA0D;QAC1D,gFAAgF;QAChF,IAAI,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE;YAChC,MAAM,iBAAiB,GAAG,SAAS,CAAC,QAAQ,CAAC;YAC7C,OAAO,CAAC,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,iBAAiB,CAAC,IAAI,KAAK,QAAQ,CAAC;SACnF;QAED,kBAAkB;QAClB,qEAAqE;QACrE,IAAI,CAAC,CAAC,0BAA0B,CAAC,SAAS,CAAC,EAAE;YACzC,oFAAoF;YACpF,uFAAuF;YACvF,OAAO,IAAI,CAAC;SACf;QAED,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,OAAO,SAAS,KAAK,SAAS,CAAC;AACnC,CAAC"}