@saltcorn/mobile-builder 0.8.5-beta.4 → 0.8.5-beta.5

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
@@ -3,20 +3,20 @@
3
3
  "description": "plugin to to build a mobile app from a tenant application",
4
4
  "homepage": "https://saltcorn.com",
5
5
  "repository": "github:saltcorn/saltcorn",
6
- "version": "0.8.5-beta.4",
6
+ "version": "0.8.5-beta.5",
7
7
  "author": "Christian Hugo",
8
8
  "scripts": {
9
9
  "build": "webpack --mode development",
10
10
  "postinstall": "node ./docker/post-installer.js"
11
11
  },
12
12
  "dependencies": {
13
- "@saltcorn/markup": "0.8.5-beta.4",
14
- "@saltcorn/data": "0.8.5-beta.4",
15
- "@saltcorn/db-common": "0.8.5-beta.4",
16
- "@saltcorn/server": "0.8.5-beta.4",
17
- "@saltcorn/base-plugin": "0.8.5-beta.4",
18
- "@saltcorn/sbadmin2": "0.8.5-beta.4",
19
- "@saltcorn/mobile-app": "0.8.5-beta.4",
13
+ "@saltcorn/markup": "0.8.5-beta.5",
14
+ "@saltcorn/data": "0.8.5-beta.5",
15
+ "@saltcorn/db-common": "0.8.5-beta.5",
16
+ "@saltcorn/server": "0.8.5-beta.5",
17
+ "@saltcorn/base-plugin": "0.8.5-beta.5",
18
+ "@saltcorn/sbadmin2": "0.8.5-beta.5",
19
+ "@saltcorn/mobile-app": "0.8.5-beta.5",
20
20
  "fs-extra": "^10.0.1",
21
21
  "live-plugin-manager": "^0.16.0",
22
22
  "webpack-merge": "^5.8.0",
@@ -1,44 +0,0 @@
1
- import { Command } from "@oclif/core";
2
- /**
3
- *
4
- */
5
- export default class BuildAppCommand extends Command {
6
- static description: string;
7
- static flags: {
8
- platforms: import("@oclif/core/lib/interfaces").OptionFlag<string[]>;
9
- entryPoint: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
10
- localUserTables: import("@oclif/core/lib/interfaces").OptionFlag<string[]>;
11
- useDocker: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
- copyAppDirectory: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
13
- appFileName: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
14
- serverURL: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
15
- };
16
- supportedPlatforms: string[];
17
- packageRoot: string;
18
- appDir: string;
19
- wwwDir: string;
20
- staticPlugins: string[];
21
- manager: any;
22
- validateParameters: (flags: any) => void;
23
- run(): Promise<void>;
24
- copyStaticAssets: () => void;
25
- copySbadmin2Deps: () => void;
26
- writeCfgFile: ({ entryPoint, serverPath, localUserTables }: any) => void;
27
- bundlePackages: () => Promise<void>;
28
- copyBundlesToApp: () => void;
29
- installNpmPackages: () => Promise<void>;
30
- createSqliteDb: () => Promise<void>;
31
- buildTablesFile: (localUserTables: string[]) => Promise<void>;
32
- addPlatforms: (platforms: string[]) => void;
33
- callBuild: (platforms: string[]) => number | null;
34
- runBuildContainer: (options: any) => any;
35
- buildApkInContainer: () => any;
36
- /**
37
- * build '.apk / .ipa' files with cordova (only android is tested)
38
- * @param flags
39
- * @returns
40
- */
41
- buildApp: (flags: any) => any;
42
- copyApp: (flags: any) => Promise<void>;
43
- }
44
- //# sourceMappingURL=build-app.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build-app.d.ts","sourceRoot":"","sources":["../../src/commands/build-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAoB7C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,OAAO;IAClD,MAAM,CAAC,WAAW,SAAkC;IAEpD,MAAM,CAAC,KAAK;;;;;;;;MAsCV;IAEF,kBAAkB,WAAsB;IAExC,WAAW,SAA6B;IACxC,MAAM,SAAuD;IAC7D,MAAM,SAA4B;IAElC,aAAa,WAAwB;IAErC,OAAO,MAGJ;IAEH,kBAAkB,UAAW,GAAG,UAU9B;IAEI,GAAG;IAsBT,gBAAgB,aAuBd;IAEF,gBAAgB,aA6Bd;IAEF,YAAY,gDAAiD,GAAG,UAQ9D;IAEF,cAAc,sBA+BZ;IAEF,gBAAgB,aAcd;IAEF,kBAAkB,sBAkBhB;IAEF,cAAc,sBAMZ;IAEF,eAAe,oBAA2B,MAAM,EAAE,mBAkBhD;IAEF,YAAY,cAAe,MAAM,EAAE,UASjC;IAEF,SAAS,cAAe,MAAM,EAAE,mBAO9B;IAEF,iBAAiB,YAAa,GAAG,KAAG,GAAG,CAUnC;IAEJ,mBAAmB,YA6BjB;IAEF;;;;OAIG;IACH,QAAQ,UAAW,GAAG,SASpB;IAEF,OAAO,UAAiB,GAAG,mBAkBzB;CACH"}
@@ -1,288 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const core_1 = require("@oclif/core");
7
- const child_process_1 = require("child_process");
8
- const fs_extra_1 = require("fs-extra");
9
- const path_1 = require("path");
10
- const index_1 = __importDefault(require("@saltcorn/data/db/index"));
11
- const plugin_1 = __importDefault(require("@saltcorn/data/models/plugin"));
12
- const reset = require("@saltcorn/data/db/reset_schema");
13
- const { PluginManager } = require("live-plugin-manager");
14
- const { staticDependencies, requirePlugin, } = require("@saltcorn/server/load_plugins");
15
- /**
16
- *
17
- */
18
- class BuildAppCommand extends core_1.Command {
19
- constructor() {
20
- super(...arguments);
21
- this.supportedPlatforms = ["android", "ios"];
22
- this.packageRoot = (0, path_1.join)(__dirname, "../../");
23
- this.appDir = (0, path_1.join)(require.resolve("@saltcorn/mobile-app"), "..");
24
- this.wwwDir = (0, path_1.join)(this.appDir, "www");
25
- this.staticPlugins = ["base", "sbadmin2"];
26
- this.manager = new PluginManager({
27
- pluginsPath: (0, path_1.join)(this.packageRoot, "plugin_packages", "node_modules"),
28
- staticDependencies,
29
- });
30
- this.validateParameters = (flags) => {
31
- if (!flags.entryPoint) {
32
- throw new Error("please specify an entry point for the first view");
33
- }
34
- if (!flags.platforms) {
35
- throw new Error("please specify cordova platforms (android or iOS)");
36
- }
37
- for (const platform of flags.platforms)
38
- if (!this.supportedPlatforms.includes(platform))
39
- throw new Error(`The platform '${platform}' is not supported`);
40
- };
41
- this.copyStaticAssets = () => {
42
- const assetsDst = (0, path_1.join)(this.wwwDir, "static_assets", index_1.default.connectObj.version_tag);
43
- if (!(0, fs_extra_1.existsSync)(assetsDst)) {
44
- (0, fs_extra_1.mkdirSync)(assetsDst, { recursive: true });
45
- }
46
- const serverRoot = (0, path_1.join)(require.resolve("@saltcorn/server"), "..");
47
- const srcPrefix = (0, path_1.join)(serverRoot, "public");
48
- const srcFiles = [
49
- "jquery-3.6.0.min.js",
50
- "saltcorn-common.js",
51
- "saltcorn.js",
52
- "saltcorn.css",
53
- "codemirror.js",
54
- "codemirror.css",
55
- "socket.io.min.js",
56
- ];
57
- for (const srcFile of srcFiles) {
58
- (0, fs_extra_1.copySync)((0, path_1.join)(srcPrefix, srcFile), (0, path_1.join)(assetsDst, srcFile));
59
- }
60
- };
61
- this.copySbadmin2Deps = () => {
62
- const sbadmin2Dst = (0, path_1.join)(this.wwwDir, "plugins/pubdeps/sbadmin2/startbootstrap-sb-admin-2-bs5/4.1.5-beta.5");
63
- if (!(0, fs_extra_1.existsSync)(sbadmin2Dst)) {
64
- (0, fs_extra_1.mkdirSync)(sbadmin2Dst, { recursive: true });
65
- }
66
- const devPath = (0, path_1.join)(__dirname, "../../../../", "node_modules/startbootstrap-sb-admin-2-bs5");
67
- const prodPath = (0, path_1.join)(require.resolve("@saltcorn/cli"), "../..", "node_modules/startbootstrap-sb-admin-2-bs5");
68
- const srcPrefix = (0, fs_extra_1.existsSync)(devPath) ? devPath : prodPath;
69
- const srcFiles = [
70
- "vendor/fontawesome-free",
71
- "vendor/bootstrap/js/bootstrap.bundle.min.js",
72
- "vendor/jquery-easing/jquery.easing.min.js",
73
- "css/sb-admin-2.css",
74
- "js/sb-admin-2.min.js",
75
- ];
76
- for (const srcFile of srcFiles) {
77
- (0, fs_extra_1.copySync)((0, path_1.join)(srcPrefix, srcFile), (0, path_1.join)(sbadmin2Dst, srcFile));
78
- }
79
- };
80
- this.writeCfgFile = ({ entryPoint, serverPath, localUserTables }) => {
81
- let cfg = {
82
- version_tag: index_1.default.connectObj.version_tag,
83
- entry_view: `get/view/${entryPoint}`,
84
- server_path: serverPath,
85
- localUserTables,
86
- };
87
- (0, fs_extra_1.writeFileSync)((0, path_1.join)(this.wwwDir, "config"), JSON.stringify(cfg));
88
- };
89
- this.bundlePackages = async () => {
90
- const plugins = (await plugin_1.default.find()).filter((plugin) => !this.staticPlugins.includes(plugin.name));
91
- const result = (0, child_process_1.spawnSync)("npm", ["run", "build", "--", "--env", `plugins=${JSON.stringify(plugins)}`], {
92
- stdio: "pipe",
93
- cwd: this.packageRoot,
94
- });
95
- console.log(result.output.toString());
96
- for (const plugin of plugins) {
97
- const required = await requirePlugin(plugin, false, this.manager);
98
- const srcPublicDir = (0, path_1.join)(required.location, "public");
99
- if ((0, fs_extra_1.existsSync)(srcPublicDir)) {
100
- const dstPublicDir = (0, path_1.join)(this.wwwDir, "plugins", "public", plugin.name);
101
- if (!(0, fs_extra_1.existsSync)(dstPublicDir)) {
102
- (0, fs_extra_1.mkdirSync)(dstPublicDir, { recursive: true });
103
- }
104
- for (const dirEntry of (0, fs_extra_1.readdirSync)(srcPublicDir)) {
105
- (0, fs_extra_1.copySync)((0, path_1.join)(srcPublicDir, dirEntry), (0, path_1.join)(dstPublicDir, dirEntry));
106
- }
107
- }
108
- }
109
- };
110
- this.copyBundlesToApp = () => {
111
- const localBundleDir = (0, path_1.join)(this.packageRoot, "bundle");
112
- const appBundlesDir = (0, path_1.join)(require.resolve("@saltcorn/mobile-app"), "../www/js/bundles");
113
- if (!(0, fs_extra_1.existsSync)(appBundlesDir))
114
- (0, fs_extra_1.mkdirSync)(appBundlesDir, { recursive: true });
115
- for (let bundleName of (0, fs_extra_1.readdirSync)(localBundleDir)) {
116
- (0, fs_extra_1.copySync)((0, path_1.join)(localBundleDir, bundleName), (0, path_1.join)(appBundlesDir, bundleName));
117
- }
118
- };
119
- this.installNpmPackages = async () => {
120
- const npmTargetDir = (0, path_1.join)(this.wwwDir, "npm_packages");
121
- if (!(0, fs_extra_1.existsSync)(npmTargetDir))
122
- (0, fs_extra_1.mkdirSync)(npmTargetDir, { recursive: true });
123
- const jwtInfo = await this.manager.install("jwt-decode", "3.1.2");
124
- (0, fs_extra_1.copySync)((0, path_1.join)(jwtInfo.location, "build/jwt-decode.js"), (0, path_1.join)(npmTargetDir, "jwt-decode.js"));
125
- const routerInfo = await this.manager.install("universal-router", "9.1.0");
126
- (0, fs_extra_1.copySync)((0, path_1.join)(routerInfo.location, "universal-router.min.js"), (0, path_1.join)(npmTargetDir, "universal-router.min.js"));
127
- const axiosInfo = await this.manager.install("axios", "0.27.2");
128
- (0, fs_extra_1.copySync)((0, path_1.join)(axiosInfo.location, "dist", "axios.min.js"), (0, path_1.join)(npmTargetDir, "axios.min.js"));
129
- };
130
- this.createSqliteDb = async () => {
131
- const dbPath = (0, path_1.join)(this.wwwDir, "scdb.sqlite");
132
- let connectObj = index_1.default.connectObj;
133
- connectObj.sqlite_path = dbPath;
134
- await index_1.default.changeConnection(connectObj);
135
- await reset();
136
- };
137
- this.buildTablesFile = async (localUserTables) => {
138
- const scTables = (await index_1.default.listScTables()).filter((table) => ["_sc_migrations", "_sc_errors"].indexOf(table.name) === -1);
139
- const tablesWithData = await Promise.all(scTables.map(async (row) => {
140
- const dbData = await index_1.default.select(row.name);
141
- return { table: row.name, rows: dbData };
142
- }));
143
- (0, fs_extra_1.writeFileSync)((0, path_1.join)(this.wwwDir, "tables.json"), JSON.stringify({
144
- created_at: new Date(),
145
- sc_tables: tablesWithData,
146
- }));
147
- };
148
- this.addPlatforms = (platforms) => {
149
- const result = (0, child_process_1.spawnSync)("npm", ["run", "add-platform", "--", ...platforms], {
150
- cwd: this.appDir,
151
- });
152
- console.log(result.output.toString());
153
- };
154
- this.callBuild = (platforms) => {
155
- this.addPlatforms(platforms);
156
- const result = (0, child_process_1.spawnSync)("npm", ["run", "build-app", "--", ...platforms], {
157
- cwd: this.appDir,
158
- });
159
- console.log(result.output.toString());
160
- return result.status;
161
- };
162
- this.runBuildContainer = (options) => (0, child_process_1.spawnSync)("docker", [
163
- "run",
164
- "-v",
165
- `${this.appDir}:/saltcorn-mobile-app`,
166
- "saltcorn/cordova-builder",
167
- ], options);
168
- this.buildApkInContainer = () => {
169
- const spawnOptions = {
170
- cwd: ".",
171
- };
172
- // try docker without sudo
173
- let result = this.runBuildContainer(spawnOptions);
174
- if (result.status === 0) {
175
- console.log(result.output.toString());
176
- }
177
- else if (result.status === 1 || result.status === 125) {
178
- // try docker rootless
179
- spawnOptions.env = {
180
- DOCKER_HOST: `unix://${process.env.XDG_RUNTIME_DIR}/docker.sock`,
181
- };
182
- result = this.runBuildContainer(spawnOptions);
183
- if (result.status === 0) {
184
- console.log(result.output.toString());
185
- }
186
- else {
187
- console.log("Unable to run the docker build image.");
188
- console.log("Try installing 'docker rootless' mode, or add the current user to the 'docker' group.");
189
- console.log(result);
190
- console.log(result.output.toString());
191
- }
192
- }
193
- else {
194
- console.log("An error occured");
195
- console.log(result);
196
- }
197
- return result.status;
198
- };
199
- /**
200
- * build '.apk / .ipa' files with cordova (only android is tested)
201
- * @param flags
202
- * @returns
203
- */
204
- this.buildApp = (flags) => {
205
- if (!flags.useDocker) {
206
- return this.callBuild(flags.platforms);
207
- }
208
- else {
209
- let code = this.buildApkInContainer();
210
- if (code === 0 && flags.platforms.indexOf("ios") > -1)
211
- code = this.callBuild(["ios"]);
212
- return code;
213
- }
214
- };
215
- this.copyApp = async (flags) => {
216
- if (!(0, fs_extra_1.existsSync)(flags.copyAppDirectory)) {
217
- (0, fs_extra_1.mkdirSync)(flags.copyAppDirectory);
218
- }
219
- const apkName = "app-debug.apk";
220
- const apkFile = (0, path_1.join)(this.appDir, "platforms", "android", "app", "build", "outputs", "apk", "debug", apkName);
221
- const targetFile = flags.appFileName ? flags.appFileName : apkName;
222
- (0, fs_extra_1.copySync)(apkFile, (0, path_1.join)(flags.copyAppDirectory, targetFile));
223
- };
224
- }
225
- async run() {
226
- const { flags } = await this.parse(BuildAppCommand);
227
- this.validateParameters(flags);
228
- const localUserTables = flags.localUserTables ? flags.localUserTables : [];
229
- this.copyStaticAssets();
230
- this.copySbadmin2Deps();
231
- this.writeCfgFile({
232
- entryPoint: flags.entryPoint,
233
- serverPath: flags.serverURL ? flags.serverURL : "http://10.0.2.2:3000",
234
- localUserTables: localUserTables,
235
- });
236
- await this.bundlePackages();
237
- this.copyBundlesToApp();
238
- await this.installNpmPackages();
239
- await this.buildTablesFile(localUserTables);
240
- await this.createSqliteDb();
241
- const resultCode = this.buildApp(flags);
242
- if (resultCode === 0 && flags.copyAppDirectory)
243
- await this.copyApp(flags);
244
- process.exit(resultCode);
245
- }
246
- }
247
- exports.default = BuildAppCommand;
248
- BuildAppCommand.description = "build mobile app from tenant";
249
- BuildAppCommand.flags = {
250
- platforms: core_1.Flags.string({
251
- name: "platforms",
252
- char: "p",
253
- description: "Platforms to build for space separated list",
254
- multiple: true,
255
- }),
256
- entryPoint: core_1.Flags.string({
257
- name: "entry point",
258
- char: "v",
259
- description: "Entry Point",
260
- }),
261
- localUserTables: core_1.Flags.string({
262
- name: "local user tables",
263
- char: "l",
264
- description: "user defined tables that should be replicated into the app",
265
- multiple: true,
266
- }),
267
- useDocker: core_1.Flags.boolean({
268
- name: "user docker build container",
269
- char: "d",
270
- description: "Use a docker container to build the app.",
271
- }),
272
- copyAppDirectory: core_1.Flags.directory({
273
- name: "app target-directory",
274
- char: "c",
275
- description: "If set, the app file will be copied here",
276
- }),
277
- appFileName: core_1.Flags.string({
278
- name: "app file name",
279
- char: "a",
280
- description: "",
281
- }),
282
- serverURL: core_1.Flags.string({
283
- name: "server URL",
284
- char: "s",
285
- description: "",
286
- }),
287
- };
288
- //# sourceMappingURL=build-app.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build-app.js","sourceRoot":"","sources":["../../src/commands/build-app.ts"],"names":[],"mappings":";;;;;AAAA,sCAA6C;AAC7C,iDAA0C;AAC1C,uCAMkB;AAClB,+BAA4B;AAC5B,oEAAyC;AACzC,0EAAkD;AAElD,MAAM,KAAK,GAAG,OAAO,CAAC,gCAAgC,CAAC,CAAC;AACxD,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;AACzD,MAAM,EACJ,kBAAkB,EAClB,aAAa,GACd,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAE7C;;GAEG;AACH,MAAqB,eAAgB,SAAQ,cAAO;IAApD;;QA2CE,uBAAkB,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAExC,gBAAW,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACxC,WAAM,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7D,WAAM,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAElC,kBAAa,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAErC,YAAO,GAAG,IAAI,aAAa,CAAC;YAC1B,WAAW,EAAE,IAAA,WAAI,EAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,EAAE,cAAc,CAAC;YACtE,kBAAkB;SACnB,CAAC,CAAC;QAEH,uBAAkB,GAAG,CAAC,KAAU,EAAE,EAAE;YAClC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;gBACrB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;aACrE;YACD,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBACpB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;aACtE;YACD,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS;gBACpC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBAC7C,MAAM,IAAI,KAAK,CAAC,iBAAiB,QAAQ,oBAAoB,CAAC,CAAC;QACrE,CAAC,CAAC;QAwBF,qBAAgB,GAAG,GAAG,EAAE;YACtB,MAAM,SAAS,GAAG,IAAA,WAAI,EACpB,IAAI,CAAC,MAAM,EACX,eAAe,EACf,eAAE,CAAC,UAAU,CAAC,WAAW,CAC1B,CAAC;YACF,IAAI,CAAC,IAAA,qBAAU,EAAC,SAAS,CAAC,EAAE;gBAC1B,IAAA,oBAAS,EAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;aAC3C;YACD,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,CAAC;YACnE,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC7C,MAAM,QAAQ,GAAG;gBACf,qBAAqB;gBACrB,oBAAoB;gBACpB,aAAa;gBACb,cAAc;gBACd,eAAe;gBACf,gBAAgB;gBAChB,kBAAkB;aACnB,CAAC;YACF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;gBAC9B,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,OAAO,CAAC,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;aAC9D;QACH,CAAC,CAAC;QAEF,qBAAgB,GAAG,GAAG,EAAE;YACtB,MAAM,WAAW,GAAG,IAAA,WAAI,EACtB,IAAI,CAAC,MAAM,EACX,qEAAqE,CACtE,CAAC;YACF,IAAI,CAAC,IAAA,qBAAU,EAAC,WAAW,CAAC,EAAE;gBAC5B,IAAA,oBAAS,EAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;aAC7C;YACD,MAAM,OAAO,GAAG,IAAA,WAAI,EAClB,SAAS,EACT,cAAc,EACd,4CAA4C,CAC7C,CAAC;YACF,MAAM,QAAQ,GAAG,IAAA,WAAI,EACnB,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAChC,OAAO,EACP,4CAA4C,CAC7C,CAAC;YACF,MAAM,SAAS,GAAG,IAAA,qBAAU,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC3D,MAAM,QAAQ,GAAG;gBACf,yBAAyB;gBACzB,6CAA6C;gBAC7C,2CAA2C;gBAC3C,oBAAoB;gBACpB,sBAAsB;aACvB,CAAC;YACF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;gBAC9B,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,OAAO,CAAC,EAAE,IAAA,WAAI,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;aAChE;QACH,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAO,EAAE,EAAE;YAClE,IAAI,GAAG,GAAG;gBACR,WAAW,EAAE,eAAE,CAAC,UAAU,CAAC,WAAW;gBACtC,UAAU,EAAE,YAAY,UAAU,EAAE;gBACpC,WAAW,EAAE,UAAU;gBACvB,eAAe;aAChB,CAAC;YACF,IAAA,wBAAa,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC;QAEF,mBAAc,GAAG,KAAK,IAAI,EAAE;YAC1B,MAAM,OAAO,GAAG,CAAC,MAAM,gBAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAC1C,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAC9D,CAAC;YACF,MAAM,MAAM,GAAG,IAAA,yBAAS,EACtB,KAAK,EACL,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EACrE;gBACE,KAAK,EAAE,MAAM;gBACb,GAAG,EAAE,IAAI,CAAC,WAAW;aACtB,CACF,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACtC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC5B,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAClE,MAAM,YAAY,GAAG,IAAA,WAAI,EAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACvD,IAAI,IAAA,qBAAU,EAAC,YAAY,CAAC,EAAE;oBAC5B,MAAM,YAAY,GAAG,IAAA,WAAI,EACvB,IAAI,CAAC,MAAM,EACX,SAAS,EACT,QAAQ,EACR,MAAM,CAAC,IAAI,CACZ,CAAC;oBACF,IAAI,CAAC,IAAA,qBAAU,EAAC,YAAY,CAAC,EAAE;wBAC7B,IAAA,oBAAS,EAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;qBAC9C;oBACD,KAAK,MAAM,QAAQ,IAAI,IAAA,sBAAW,EAAC,YAAY,CAAC,EAAE;wBAChD,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,IAAA,WAAI,EAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;qBACtE;iBACF;aACF;QACH,CAAC,CAAC;QAEF,qBAAgB,GAAG,GAAG,EAAE;YACtB,MAAM,cAAc,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACxD,MAAM,aAAa,GAAG,IAAA,WAAI,EACxB,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,EACvC,mBAAmB,CACpB,CAAC;YACF,IAAI,CAAC,IAAA,qBAAU,EAAC,aAAa,CAAC;gBAC5B,IAAA,oBAAS,EAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,KAAK,IAAI,UAAU,IAAI,IAAA,sBAAW,EAAC,cAAc,CAAC,EAAE;gBAClD,IAAA,mBAAQ,EACN,IAAA,WAAI,EAAC,cAAc,EAAE,UAAU,CAAC,EAChC,IAAA,WAAI,EAAC,aAAa,EAAE,UAAU,CAAC,CAChC,CAAC;aACH;QACH,CAAC,CAAC;QAEF,uBAAkB,GAAG,KAAK,IAAI,EAAE;YAC9B,MAAM,YAAY,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YACvD,IAAI,CAAC,IAAA,qBAAU,EAAC,YAAY,CAAC;gBAAE,IAAA,oBAAS,EAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAClE,IAAA,mBAAQ,EACN,IAAA,WAAI,EAAC,OAAO,CAAC,QAAQ,EAAE,qBAAqB,CAAC,EAC7C,IAAA,WAAI,EAAC,YAAY,EAAE,eAAe,CAAC,CACpC,CAAC;YACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;YAC3E,IAAA,mBAAQ,EACN,IAAA,WAAI,EAAC,UAAU,CAAC,QAAQ,EAAE,yBAAyB,CAAC,EACpD,IAAA,WAAI,EAAC,YAAY,EAAE,yBAAyB,CAAC,CAC9C,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAChE,IAAA,mBAAQ,EACN,IAAA,WAAI,EAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,EAChD,IAAA,WAAI,EAAC,YAAY,EAAE,cAAc,CAAC,CACnC,CAAC;QACJ,CAAC,CAAC;QAEF,mBAAc,GAAG,KAAK,IAAI,EAAE;YAC1B,MAAM,MAAM,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YAChD,IAAI,UAAU,GAAG,eAAE,CAAC,UAAU,CAAC;YAC/B,UAAU,CAAC,WAAW,GAAG,MAAM,CAAC;YAChC,MAAM,eAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,KAAK,EAAE,CAAC;QAChB,CAAC,CAAC;QAEF,oBAAe,GAAG,KAAK,EAAE,eAAyB,EAAE,EAAE;YACpD,MAAM,QAAQ,GAAG,CAAC,MAAM,eAAE,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAC/C,CAAC,KAAU,EAAE,EAAE,CACb,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAC9D,CAAC;YACF,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CACtC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,GAAQ,EAAE,EAAE;gBAC9B,MAAM,MAAM,GAAG,MAAM,eAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACzC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAC3C,CAAC,CAAC,CACH,CAAC;YACF,IAAA,wBAAa,EACX,IAAA,WAAI,EAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAChC,IAAI,CAAC,SAAS,CAAC;gBACb,UAAU,EAAE,IAAI,IAAI,EAAE;gBACtB,SAAS,EAAE,cAAc;aAC1B,CAAC,CACH,CAAC;QACJ,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,SAAmB,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,IAAA,yBAAS,EACtB,KAAK,EACL,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,EAC3C;gBACE,GAAG,EAAE,IAAI,CAAC,MAAM;aACjB,CACF,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC;QAEF,cAAS,GAAG,CAAC,SAAmB,EAAE,EAAE;YAClC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC7B,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,KAAK,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,EAAE;gBACxE,GAAG,EAAE,IAAI,CAAC,MAAM;aACjB,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACtC,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,CAAC,CAAC;QAEF,sBAAiB,GAAG,CAAC,OAAY,EAAO,EAAE,CACxC,IAAA,yBAAS,EACP,QAAQ,EACR;YACE,KAAK;YACL,IAAI;YACJ,GAAG,IAAI,CAAC,MAAM,uBAAuB;YACrC,0BAA0B;SAC3B,EACD,OAAO,CACR,CAAC;QAEJ,wBAAmB,GAAG,GAAG,EAAE;YACzB,MAAM,YAAY,GAAQ;gBACxB,GAAG,EAAE,GAAG;aACT,CAAC;YACF,0BAA0B;YAC1B,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAClD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;aACvC;iBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE;gBACvD,sBAAsB;gBACtB,YAAY,CAAC,GAAG,GAAG;oBACjB,WAAW,EAAE,UAAU,OAAO,CAAC,GAAG,CAAC,eAAe,cAAc;iBACjE,CAAC;gBACF,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;gBAC9C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;oBACvB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;iBACvC;qBAAM;oBACL,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;oBACrD,OAAO,CAAC,GAAG,CACT,uFAAuF,CACxF,CAAC;oBACF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;iBACvC;aACF;iBAAM;gBACL,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;aACrB;YACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,CAAC,CAAC;QAEF;;;;WAIG;QACH,aAAQ,GAAG,CAAC,KAAU,EAAE,EAAE;YACxB,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBACpB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;aACxC;iBAAM;gBACL,IAAI,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACtC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACnD,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBACjC,OAAO,IAAI,CAAC;aACb;QACH,CAAC,CAAC;QAEF,YAAO,GAAG,KAAK,EAAE,KAAU,EAAE,EAAE;YAC7B,IAAI,CAAC,IAAA,qBAAU,EAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;gBACvC,IAAA,oBAAS,EAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;aACnC;YACD,MAAM,OAAO,GAAG,eAAe,CAAC;YAChC,MAAM,OAAO,GAAG,IAAA,WAAI,EAClB,IAAI,CAAC,MAAM,EACX,WAAW,EACX,SAAS,EACT,KAAK,EACL,OAAO,EACP,SAAS,EACT,KAAK,EACL,OAAO,EACP,OAAO,CACR,CAAC;YACF,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;YACnE,IAAA,mBAAQ,EAAC,OAAO,EAAE,IAAA,WAAI,EAAC,KAAK,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC;IACJ,CAAC;IA3RC,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACpD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAE/B,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,YAAY,CAAC;YAChB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,sBAAsB;YACtE,eAAe,EAAE,eAAe;SACjC,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAChC,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,UAAU,KAAK,CAAC,IAAI,KAAK,CAAC,gBAAgB;YAAE,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3B,CAAC;;AAxFH,kCA+VC;AA9VQ,2BAAW,GAAG,8BAA8B,CAAC;AAE7C,qBAAK,GAAG;IACb,SAAS,EAAE,YAAK,CAAC,MAAM,CAAC;QACtB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,6CAA6C;QAC1D,QAAQ,EAAE,IAAI;KACf,CAAC;IACF,UAAU,EAAE,YAAK,CAAC,MAAM,CAAC;QACvB,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,aAAa;KAC3B,CAAC;IACF,eAAe,EAAE,YAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,4DAA4D;QACzE,QAAQ,EAAE,IAAI;KACf,CAAC;IACF,SAAS,EAAE,YAAK,CAAC,OAAO,CAAC;QACvB,IAAI,EAAE,6BAA6B;QACnC,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,0CAA0C;KACxD,CAAC;IACF,gBAAgB,EAAE,YAAK,CAAC,SAAS,CAAC;QAChC,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,0CAA0C;KACxD,CAAC;IACF,WAAW,EAAE,YAAK,CAAC,MAAM,CAAC;QACxB,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,EAAE;KAChB,CAAC;IACF,SAAS,EAAE,YAAK,CAAC,MAAM,CAAC;QACtB,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,EAAE;KAChB,CAAC;CACH,CAAC"}