@uipath/solution-sdk 1.196.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -0
- package/dist/generated/src/apis/ConfigurationsApi.d.ts +28 -0
- package/dist/generated/src/apis/DeploymentsApi.d.ts +49 -0
- package/dist/generated/src/apis/PackagesApi.d.ts +88 -0
- package/dist/generated/src/apis/ProjectsApi.d.ts +37 -0
- package/dist/generated/src/apis/SearchApi.d.ts +38 -0
- package/dist/generated/src/apis/SettingsApi.d.ts +32 -0
- package/dist/generated/src/apis/index.d.ts +6 -0
- package/dist/generated/src/index.d.ts +3 -0
- package/dist/generated/src/models/BlobFileAccessDto.d.ts +45 -0
- package/dist/generated/src/models/CreateConfigurationCommand.d.ts +38 -0
- package/dist/generated/src/models/DeploymentActivationStatus.d.ts +30 -0
- package/dist/generated/src/models/DeploymentAutoRequest.d.ts +52 -0
- package/dist/generated/src/models/DeploymentDto.d.ts +38 -0
- package/dist/generated/src/models/DeploymentItemDto.d.ts +215 -0
- package/dist/generated/src/models/DeploymentOperation.d.ts +29 -0
- package/dist/generated/src/models/DeploymentOperationStatus.d.ts +28 -0
- package/dist/generated/src/models/DeploymentRequest.d.ts +69 -0
- package/dist/generated/src/models/DeploymentSearchItemDto2.d.ts +206 -0
- package/dist/generated/src/models/DeploymentStatus.d.ts +33 -0
- package/dist/generated/src/models/DeploymentType.d.ts +25 -0
- package/dist/generated/src/models/DeploymentUpgradeType.d.ts +27 -0
- package/dist/generated/src/models/DeploymentsSearchRequest2.d.ts +114 -0
- package/dist/generated/src/models/ExtendedPackageVersionState.d.ts +27 -0
- package/dist/generated/src/models/FolderInfo.d.ts +44 -0
- package/dist/generated/src/models/LocationDto.d.ts +44 -0
- package/dist/generated/src/models/OrderByDirection.d.ts +25 -0
- package/dist/generated/src/models/Overwrite.d.ts +63 -0
- package/dist/generated/src/models/OverwriteType.d.ts +25 -0
- package/dist/generated/src/models/PackageInfo.d.ts +99 -0
- package/dist/generated/src/models/PackageVersionComponentsDto.d.ts +46 -0
- package/dist/generated/src/models/PackageVersionInfoDto.d.ts +100 -0
- package/dist/generated/src/models/PackageVersionOrigin.d.ts +27 -0
- package/dist/generated/src/models/PackageVersionResourceDto.d.ts +63 -0
- package/dist/generated/src/models/PageInfoDtoOfDeploymentSearchItemDto2.d.ts +39 -0
- package/dist/generated/src/models/PageInfoDtoOfPackageInfo.d.ts +39 -0
- package/dist/generated/src/models/ProblemDetails.d.ts +57 -0
- package/dist/generated/src/models/ProjectCreateRequest.d.ts +38 -0
- package/dist/generated/src/models/ProjectDto.d.ts +75 -0
- package/dist/generated/src/models/ProjectImportStatus.d.ts +27 -0
- package/dist/generated/src/models/ResourceOverwrite.d.ts +45 -0
- package/dist/generated/src/models/ResourceStats.d.ts +44 -0
- package/dist/generated/src/models/ResponseDictionaryDto.d.ts +38 -0
- package/dist/generated/src/models/RuntimeSetup.d.ts +32 -0
- package/dist/generated/src/models/SearchFilter.d.ts +57 -0
- package/dist/generated/src/models/WorkflowAction.d.ts +29 -0
- package/dist/generated/src/models/index.d.ts +37 -0
- package/dist/generated/src/runtime.d.ts +184 -0
- package/dist/index.js +15612 -0
- package/dist/index.js.map +159 -0
- package/dist/scripts/generate-sdk.js +176 -0
- package/dist/scripts/generate-sdk.js.map +10 -0
- package/dist/src/bundle-service.d.ts +25 -0
- package/dist/src/index.d.ts +9 -0
- package/dist/src/solution-file.d.ts +133 -0
- package/dist/src/types.d.ts +42 -0
- package/dist/src/upload-service.d.ts +34 -0
- package/dist/src/user-agent.d.ts +1 -0
- package/dist/src/zip-utils.d.ts +63 -0
- package/package.json +44 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../node_modules/commander/lib/error.js", "../../../node_modules/commander/lib/argument.js", "../../../node_modules/commander/lib/help.js", "../../../node_modules/commander/lib/option.js", "../../../node_modules/commander/lib/suggestSimilar.js", "../../../node_modules/commander/lib/command.js", "../../../node_modules/commander/index.js", "../../common/src/singleton.ts", "../../common/src/telemetry/global-telemetry-properties.ts", "../../common/src/sdk-user-agent.ts", "../generated/src/runtime.ts", "../src/user-agent.ts", "../generated/src/models/ResponseDictionaryDto.ts", "../generated/src/models/BlobFileAccessDto.ts", "../generated/src/models/CreateConfigurationCommand.ts", "../generated/src/models/DeploymentActivationStatus.ts", "../generated/src/models/OverwriteType.ts", "../generated/src/models/Overwrite.ts", "../generated/src/models/ResourceOverwrite.ts", "../generated/src/models/RuntimeSetup.ts", "../generated/src/models/DeploymentAutoRequest.ts", "../generated/src/models/DeploymentDto.ts", "../generated/src/models/WorkflowAction.ts", "../generated/src/models/DeploymentOperation.ts", "../generated/src/models/PackageVersionOrigin.ts", "../generated/src/models/DeploymentOperationStatus.ts", "../generated/src/models/DeploymentUpgradeType.ts", "../generated/src/models/DeploymentStatus.ts", "../generated/src/models/DeploymentItemDto.ts", "../generated/src/models/DeploymentRequest.ts", "../generated/src/models/DeploymentType.ts", "../generated/src/models/DeploymentSearchItemDto2.ts", "../generated/src/models/OrderByDirection.ts", "../generated/src/models/DeploymentsSearchRequest2.ts", "../generated/src/models/ExtendedPackageVersionState.ts", "../generated/src/models/FolderInfo.ts", "../generated/src/models/LocationDto.ts", "../generated/src/models/PackageInfo.ts", "../generated/src/models/ResourceStats.ts", "../generated/src/models/PackageVersionResourceDto.ts", "../generated/src/models/PackageVersionComponentsDto.ts", "../generated/src/models/PackageVersionInfoDto.ts", "../generated/src/models/PageInfoDtoOfDeploymentSearchItemDto2.ts", "../generated/src/models/PageInfoDtoOfPackageInfo.ts", "../generated/src/models/ProblemDetails.ts", "../generated/src/models/ProjectCreateRequest.ts", "../generated/src/models/ProjectImportStatus.ts", "../generated/src/models/ProjectDto.ts", "../generated/src/models/SearchFilter.ts", "../generated/src/apis/ConfigurationsApi.ts", "../generated/src/apis/DeploymentsApi.ts", "../generated/src/apis/PackagesApi.ts", "../generated/src/apis/ProjectsApi.ts", "../generated/src/apis/SearchApi.ts", "../generated/src/apis/SettingsApi.ts", "../../filesystem/src/node.ts", "../../../node_modules/open/index.js", "../../../node_modules/wsl-utils/index.js", "../../../node_modules/wsl-utils/node_modules/is-wsl/index.js", "../../../node_modules/is-inside-container/index.js", "../../../node_modules/is-inside-container/node_modules/is-docker/index.js", "../../../node_modules/powershell-utils/index.js", "../../../node_modules/wsl-utils/utilities.js", "../../../node_modules/open/node_modules/define-lazy-prop/index.js", "../../../node_modules/default-browser/index.js", "../../../node_modules/default-browser-id/index.js", "../../../node_modules/run-applescript/index.js", "../../../node_modules/bundle-name/index.js", "../../../node_modules/default-browser/windows.js", "../../../node_modules/is-in-ssh/index.js", "../../filesystem/src/index.ts", "../../common/src/catch-error.ts", "../../common/src/error-handler.ts", "../../../node_modules/commander/esm.mjs", "../../common/src/command-examples.ts", "../../common/src/output-context.ts", "../../common/src/completer.ts", "../../../node_modules/@jmespath-community/jmespath/dist/index.mjs", "../../../node_modules/js-yaml/dist/js-yaml.mjs", "../../common/src/logger.ts", "../../common/src/output-format-context.ts", "../../common/src/telemetry/telemetry-events.ts", "../../common/src/registry.ts", "../../common/src/telemetry/logger-telemetry-provider.ts", "../../common/src/telemetry/node-context-storage.ts", "../../common/src/telemetry/telemetry-service.ts", "../../common/src/telemetry/node-appinsights-telemetry-provider.ts", "../../common/src/telemetry/telemetry-init.ts", "../../common/src/formatter.ts", "../../common/src/telemetry/pii-redactor.ts", "../../common/src/trackedAction.ts", "../../common/src/console-guard.ts", "../../common/src/constants.ts", "../../common/src/interactivity-context.ts", "../../common/src/polling/types.ts", "../../common/src/polling/poll-failure-mapping.ts", "../../common/src/polling/terminal-statuses.ts", "../../common/src/screen-logger.ts", "../../common/src/tool-provider.ts", "../src/solution-file.ts", "../../../node_modules/fflate/esm/index.mjs", "../src/zip-utils.ts", "../src/bundle-service.ts", "../../studioweb-sdk/generated/src/runtime.ts", "../../studioweb-sdk/generated/src/models/AccessStatus.ts", "../../studioweb-sdk/generated/src/models/PinnedProject.ts", "../../studioweb-sdk/generated/src/models/ProjectStructure.ts", "../../studioweb-sdk/generated/src/models/ProjectAppliedProfileModel.ts", "../../studioweb-sdk/generated/src/models/PropertyBindingModel.ts", "../../studioweb-sdk/generated/src/models/UserBindingProfileModel.ts", "../../studioweb-sdk/generated/src/models/ProjectAppModel.ts", "../../studioweb-sdk/generated/src/models/ProjectLockModel.ts", "../../studioweb-sdk/generated/src/models/TestManagerMetadataModel.ts", "../../studioweb-sdk/generated/src/models/TargetFramework.ts", "../../studioweb-sdk/generated/src/models/ProjectStatus.ts", "../../studioweb-sdk/generated/src/models/SharingPermissions.ts", "../../studioweb-sdk/generated/src/models/SharedProject.ts", "../../studioweb-sdk/generated/src/models/UserMessageDbModel.ts", "../../studioweb-sdk/generated/src/models/ProjectConnectionModel.ts", "../../studioweb-sdk/generated/src/models/TriggerMetadataModel.ts", "../../studioweb-sdk/generated/src/models/ConnectionMetadataModel.ts", "../../studioweb-sdk/generated/src/models/ProjectMetadataModel.ts", "../../studioweb-sdk/generated/src/models/PublishStatus.ts", "../../studioweb-sdk/generated/src/models/PublishResultModel.ts", "../../studioweb-sdk/generated/src/models/SapContext.ts", "../../studioweb-sdk/generated/src/models/ProjectPackageModel.ts", "../../studioweb-sdk/generated/src/models/ProjectDbModel.ts", "../../studioweb-sdk/generated/src/models/AdditionalBindingProperties.ts", "../../studioweb-sdk/generated/src/models/AdditionalBindingPropertiesDto.ts", "../../studioweb-sdk/generated/src/models/AppUsageType.ts", "../../studioweb-sdk/generated/src/models/FileType.ts", "../../studioweb-sdk/generated/src/models/FileDto.ts", "../../studioweb-sdk/generated/src/models/SpecialFolderType.ts", "../../studioweb-sdk/generated/src/models/FolderDto.ts", "../../studioweb-sdk/generated/src/models/MetadataConnectionDto.ts", "../../studioweb-sdk/generated/src/models/MetadataTriggerDto.ts", "../../studioweb-sdk/generated/src/models/PackageDto.ts", "../../studioweb-sdk/generated/src/models/TestManagerMetadataDto.ts", "../../studioweb-sdk/generated/src/models/ProjectErrorCode.ts", "../../studioweb-sdk/generated/src/models/ProjectErrorInformation.ts", "../../studioweb-sdk/generated/src/models/SapContextDto.ts", "../../studioweb-sdk/generated/src/models/WorkflowUiState.ts", "../../studioweb-sdk/generated/src/models/TargetPlatform.ts", "../../studioweb-sdk/generated/src/models/ProjectDto.ts", "../../studioweb-sdk/generated/src/models/SolutionStatus.ts", "../../studioweb-sdk/generated/src/models/SolutionPublishStatus.ts", "../../studioweb-sdk/generated/src/models/SolutionDto.ts", "../../studioweb-sdk/generated/src/apis/SolutionApi.ts", "../../studioweb-sdk/src/client.ts", "../src/upload-service.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * CommanderError class\n */\nclass CommanderError extends Error {\n /**\n * Constructs the CommanderError class\n * @param {number} exitCode suggested exit code which could be used with process.exit\n * @param {string} code an id string representing the error\n * @param {string} message human-readable description of the error\n */\n constructor(exitCode, code, message) {\n super(message);\n // properly capture stack trace in Node.js\n Error.captureStackTrace(this, this.constructor);\n this.name = this.constructor.name;\n this.code = code;\n this.exitCode = exitCode;\n this.nestedError = undefined;\n }\n}\n\n/**\n * InvalidArgumentError class\n */\nclass InvalidArgumentError extends CommanderError {\n /**\n * Constructs the InvalidArgumentError class\n * @param {string} [message] explanation of why argument is invalid\n */\n constructor(message) {\n super(1, 'commander.invalidArgument', message);\n // properly capture stack trace in Node.js\n Error.captureStackTrace(this, this.constructor);\n this.name = this.constructor.name;\n }\n}\n\nexports.CommanderError = CommanderError;\nexports.InvalidArgumentError = InvalidArgumentError;\n",
|
|
6
|
+
"const { InvalidArgumentError } = require('./error.js');\n\nclass Argument {\n /**\n * Initialize a new command argument with the given name and description.\n * The default is that the argument is required, and you can explicitly\n * indicate this with <> around the name. Put [] around the name for an optional argument.\n *\n * @param {string} name\n * @param {string} [description]\n */\n\n constructor(name, description) {\n this.description = description || '';\n this.variadic = false;\n this.parseArg = undefined;\n this.defaultValue = undefined;\n this.defaultValueDescription = undefined;\n this.argChoices = undefined;\n\n switch (name[0]) {\n case '<': // e.g. <required>\n this.required = true;\n this._name = name.slice(1, -1);\n break;\n case '[': // e.g. [optional]\n this.required = false;\n this._name = name.slice(1, -1);\n break;\n default:\n this.required = true;\n this._name = name;\n break;\n }\n\n if (this._name.endsWith('...')) {\n this.variadic = true;\n this._name = this._name.slice(0, -3);\n }\n }\n\n /**\n * Return argument name.\n *\n * @return {string}\n */\n\n name() {\n return this._name;\n }\n\n /**\n * @package\n */\n\n _collectValue(value, previous) {\n if (previous === this.defaultValue || !Array.isArray(previous)) {\n return [value];\n }\n\n previous.push(value);\n return previous;\n }\n\n /**\n * Set the default value, and optionally supply the description to be displayed in the help.\n *\n * @param {*} value\n * @param {string} [description]\n * @return {Argument}\n */\n\n default(value, description) {\n this.defaultValue = value;\n this.defaultValueDescription = description;\n return this;\n }\n\n /**\n * Set the custom handler for processing CLI command arguments into argument values.\n *\n * @param {Function} [fn]\n * @return {Argument}\n */\n\n argParser(fn) {\n this.parseArg = fn;\n return this;\n }\n\n /**\n * Only allow argument value to be one of choices.\n *\n * @param {string[]} values\n * @return {Argument}\n */\n\n choices(values) {\n this.argChoices = values.slice();\n this.parseArg = (arg, previous) => {\n if (!this.argChoices.includes(arg)) {\n throw new InvalidArgumentError(\n `Allowed choices are ${this.argChoices.join(', ')}.`,\n );\n }\n if (this.variadic) {\n return this._collectValue(arg, previous);\n }\n return arg;\n };\n return this;\n }\n\n /**\n * Make argument required.\n *\n * @returns {Argument}\n */\n argRequired() {\n this.required = true;\n return this;\n }\n\n /**\n * Make argument optional.\n *\n * @returns {Argument}\n */\n argOptional() {\n this.required = false;\n return this;\n }\n}\n\n/**\n * Takes an argument and returns its human readable equivalent for help usage.\n *\n * @param {Argument} arg\n * @return {string}\n * @private\n */\n\nfunction humanReadableArgName(arg) {\n const nameOutput = arg.name() + (arg.variadic === true ? '...' : '');\n\n return arg.required ? '<' + nameOutput + '>' : '[' + nameOutput + ']';\n}\n\nexports.Argument = Argument;\nexports.humanReadableArgName = humanReadableArgName;\n",
|
|
7
|
+
"const { humanReadableArgName } = require('./argument.js');\n\n/**\n * TypeScript import types for JSDoc, used by Visual Studio Code IntelliSense and `npm run typescript-checkJS`\n * https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html#import-types\n * @typedef { import(\"./argument.js\").Argument } Argument\n * @typedef { import(\"./command.js\").Command } Command\n * @typedef { import(\"./option.js\").Option } Option\n */\n\n// Although this is a class, methods are static in style to allow override using subclass or just functions.\nclass Help {\n constructor() {\n this.helpWidth = undefined;\n this.minWidthToWrap = 40;\n this.sortSubcommands = false;\n this.sortOptions = false;\n this.showGlobalOptions = false;\n }\n\n /**\n * prepareContext is called by Commander after applying overrides from `Command.configureHelp()`\n * and just before calling `formatHelp()`.\n *\n * Commander just uses the helpWidth and the rest is provided for optional use by more complex subclasses.\n *\n * @param {{ error?: boolean, helpWidth?: number, outputHasColors?: boolean }} contextOptions\n */\n prepareContext(contextOptions) {\n this.helpWidth = this.helpWidth ?? contextOptions.helpWidth ?? 80;\n }\n\n /**\n * Get an array of the visible subcommands. Includes a placeholder for the implicit help command, if there is one.\n *\n * @param {Command} cmd\n * @returns {Command[]}\n */\n\n visibleCommands(cmd) {\n const visibleCommands = cmd.commands.filter((cmd) => !cmd._hidden);\n const helpCommand = cmd._getHelpCommand();\n if (helpCommand && !helpCommand._hidden) {\n visibleCommands.push(helpCommand);\n }\n if (this.sortSubcommands) {\n visibleCommands.sort((a, b) => {\n // @ts-ignore: because overloaded return type\n return a.name().localeCompare(b.name());\n });\n }\n return visibleCommands;\n }\n\n /**\n * Compare options for sort.\n *\n * @param {Option} a\n * @param {Option} b\n * @returns {number}\n */\n compareOptions(a, b) {\n const getSortKey = (option) => {\n // WYSIWYG for order displayed in help. Short used for comparison if present. No special handling for negated.\n return option.short\n ? option.short.replace(/^-/, '')\n : option.long.replace(/^--/, '');\n };\n return getSortKey(a).localeCompare(getSortKey(b));\n }\n\n /**\n * Get an array of the visible options. Includes a placeholder for the implicit help option, if there is one.\n *\n * @param {Command} cmd\n * @returns {Option[]}\n */\n\n visibleOptions(cmd) {\n const visibleOptions = cmd.options.filter((option) => !option.hidden);\n // Built-in help option.\n const helpOption = cmd._getHelpOption();\n if (helpOption && !helpOption.hidden) {\n // Automatically hide conflicting flags. Bit dubious but a historical behaviour that is convenient for single-command programs.\n const removeShort = helpOption.short && cmd._findOption(helpOption.short);\n const removeLong = helpOption.long && cmd._findOption(helpOption.long);\n if (!removeShort && !removeLong) {\n visibleOptions.push(helpOption); // no changes needed\n } else if (helpOption.long && !removeLong) {\n visibleOptions.push(\n cmd.createOption(helpOption.long, helpOption.description),\n );\n } else if (helpOption.short && !removeShort) {\n visibleOptions.push(\n cmd.createOption(helpOption.short, helpOption.description),\n );\n }\n }\n if (this.sortOptions) {\n visibleOptions.sort(this.compareOptions);\n }\n return visibleOptions;\n }\n\n /**\n * Get an array of the visible global options. (Not including help.)\n *\n * @param {Command} cmd\n * @returns {Option[]}\n */\n\n visibleGlobalOptions(cmd) {\n if (!this.showGlobalOptions) return [];\n\n const globalOptions = [];\n for (\n let ancestorCmd = cmd.parent;\n ancestorCmd;\n ancestorCmd = ancestorCmd.parent\n ) {\n const visibleOptions = ancestorCmd.options.filter(\n (option) => !option.hidden,\n );\n globalOptions.push(...visibleOptions);\n }\n if (this.sortOptions) {\n globalOptions.sort(this.compareOptions);\n }\n return globalOptions;\n }\n\n /**\n * Get an array of the arguments if any have a description.\n *\n * @param {Command} cmd\n * @returns {Argument[]}\n */\n\n visibleArguments(cmd) {\n // Side effect! Apply the legacy descriptions before the arguments are displayed.\n if (cmd._argsDescription) {\n cmd.registeredArguments.forEach((argument) => {\n argument.description =\n argument.description || cmd._argsDescription[argument.name()] || '';\n });\n }\n\n // If there are any arguments with a description then return all the arguments.\n if (cmd.registeredArguments.find((argument) => argument.description)) {\n return cmd.registeredArguments;\n }\n return [];\n }\n\n /**\n * Get the command term to show in the list of subcommands.\n *\n * @param {Command} cmd\n * @returns {string}\n */\n\n subcommandTerm(cmd) {\n // Legacy. Ignores custom usage string, and nested commands.\n const args = cmd.registeredArguments\n .map((arg) => humanReadableArgName(arg))\n .join(' ');\n return (\n cmd._name +\n (cmd._aliases[0] ? '|' + cmd._aliases[0] : '') +\n (cmd.options.length ? ' [options]' : '') + // simplistic check for non-help option\n (args ? ' ' + args : '')\n );\n }\n\n /**\n * Get the option term to show in the list of options.\n *\n * @param {Option} option\n * @returns {string}\n */\n\n optionTerm(option) {\n return option.flags;\n }\n\n /**\n * Get the argument term to show in the list of arguments.\n *\n * @param {Argument} argument\n * @returns {string}\n */\n\n argumentTerm(argument) {\n return argument.name();\n }\n\n /**\n * Get the longest command term length.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {number}\n */\n\n longestSubcommandTermLength(cmd, helper) {\n return helper.visibleCommands(cmd).reduce((max, command) => {\n return Math.max(\n max,\n this.displayWidth(\n helper.styleSubcommandTerm(helper.subcommandTerm(command)),\n ),\n );\n }, 0);\n }\n\n /**\n * Get the longest option term length.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {number}\n */\n\n longestOptionTermLength(cmd, helper) {\n return helper.visibleOptions(cmd).reduce((max, option) => {\n return Math.max(\n max,\n this.displayWidth(helper.styleOptionTerm(helper.optionTerm(option))),\n );\n }, 0);\n }\n\n /**\n * Get the longest global option term length.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {number}\n */\n\n longestGlobalOptionTermLength(cmd, helper) {\n return helper.visibleGlobalOptions(cmd).reduce((max, option) => {\n return Math.max(\n max,\n this.displayWidth(helper.styleOptionTerm(helper.optionTerm(option))),\n );\n }, 0);\n }\n\n /**\n * Get the longest argument term length.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {number}\n */\n\n longestArgumentTermLength(cmd, helper) {\n return helper.visibleArguments(cmd).reduce((max, argument) => {\n return Math.max(\n max,\n this.displayWidth(\n helper.styleArgumentTerm(helper.argumentTerm(argument)),\n ),\n );\n }, 0);\n }\n\n /**\n * Get the command usage to be displayed at the top of the built-in help.\n *\n * @param {Command} cmd\n * @returns {string}\n */\n\n commandUsage(cmd) {\n // Usage\n let cmdName = cmd._name;\n if (cmd._aliases[0]) {\n cmdName = cmdName + '|' + cmd._aliases[0];\n }\n let ancestorCmdNames = '';\n for (\n let ancestorCmd = cmd.parent;\n ancestorCmd;\n ancestorCmd = ancestorCmd.parent\n ) {\n ancestorCmdNames = ancestorCmd.name() + ' ' + ancestorCmdNames;\n }\n return ancestorCmdNames + cmdName + ' ' + cmd.usage();\n }\n\n /**\n * Get the description for the command.\n *\n * @param {Command} cmd\n * @returns {string}\n */\n\n commandDescription(cmd) {\n // @ts-ignore: because overloaded return type\n return cmd.description();\n }\n\n /**\n * Get the subcommand summary to show in the list of subcommands.\n * (Fallback to description for backwards compatibility.)\n *\n * @param {Command} cmd\n * @returns {string}\n */\n\n subcommandDescription(cmd) {\n // @ts-ignore: because overloaded return type\n return cmd.summary() || cmd.description();\n }\n\n /**\n * Get the option description to show in the list of options.\n *\n * @param {Option} option\n * @return {string}\n */\n\n optionDescription(option) {\n const extraInfo = [];\n\n if (option.argChoices) {\n extraInfo.push(\n // use stringify to match the display of the default value\n `choices: ${option.argChoices.map((choice) => JSON.stringify(choice)).join(', ')}`,\n );\n }\n if (option.defaultValue !== undefined) {\n // default for boolean and negated more for programmer than end user,\n // but show true/false for boolean option as may be for hand-rolled env or config processing.\n const showDefault =\n option.required ||\n option.optional ||\n (option.isBoolean() && typeof option.defaultValue === 'boolean');\n if (showDefault) {\n extraInfo.push(\n `default: ${option.defaultValueDescription || JSON.stringify(option.defaultValue)}`,\n );\n }\n }\n // preset for boolean and negated are more for programmer than end user\n if (option.presetArg !== undefined && option.optional) {\n extraInfo.push(`preset: ${JSON.stringify(option.presetArg)}`);\n }\n if (option.envVar !== undefined) {\n extraInfo.push(`env: ${option.envVar}`);\n }\n if (extraInfo.length > 0) {\n const extraDescription = `(${extraInfo.join(', ')})`;\n if (option.description) {\n return `${option.description} ${extraDescription}`;\n }\n return extraDescription;\n }\n\n return option.description;\n }\n\n /**\n * Get the argument description to show in the list of arguments.\n *\n * @param {Argument} argument\n * @return {string}\n */\n\n argumentDescription(argument) {\n const extraInfo = [];\n if (argument.argChoices) {\n extraInfo.push(\n // use stringify to match the display of the default value\n `choices: ${argument.argChoices.map((choice) => JSON.stringify(choice)).join(', ')}`,\n );\n }\n if (argument.defaultValue !== undefined) {\n extraInfo.push(\n `default: ${argument.defaultValueDescription || JSON.stringify(argument.defaultValue)}`,\n );\n }\n if (extraInfo.length > 0) {\n const extraDescription = `(${extraInfo.join(', ')})`;\n if (argument.description) {\n return `${argument.description} ${extraDescription}`;\n }\n return extraDescription;\n }\n return argument.description;\n }\n\n /**\n * Format a list of items, given a heading and an array of formatted items.\n *\n * @param {string} heading\n * @param {string[]} items\n * @param {Help} helper\n * @returns string[]\n */\n formatItemList(heading, items, helper) {\n if (items.length === 0) return [];\n\n return [helper.styleTitle(heading), ...items, ''];\n }\n\n /**\n * Group items by their help group heading.\n *\n * @param {Command[] | Option[]} unsortedItems\n * @param {Command[] | Option[]} visibleItems\n * @param {Function} getGroup\n * @returns {Map<string, Command[] | Option[]>}\n */\n groupItems(unsortedItems, visibleItems, getGroup) {\n const result = new Map();\n // Add groups in order of appearance in unsortedItems.\n unsortedItems.forEach((item) => {\n const group = getGroup(item);\n if (!result.has(group)) result.set(group, []);\n });\n // Add items in order of appearance in visibleItems.\n visibleItems.forEach((item) => {\n const group = getGroup(item);\n if (!result.has(group)) {\n result.set(group, []);\n }\n result.get(group).push(item);\n });\n return result;\n }\n\n /**\n * Generate the built-in help text.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {string}\n */\n\n formatHelp(cmd, helper) {\n const termWidth = helper.padWidth(cmd, helper);\n const helpWidth = helper.helpWidth ?? 80; // in case prepareContext() was not called\n\n function callFormatItem(term, description) {\n return helper.formatItem(term, termWidth, description, helper);\n }\n\n // Usage\n let output = [\n `${helper.styleTitle('Usage:')} ${helper.styleUsage(helper.commandUsage(cmd))}`,\n '',\n ];\n\n // Description\n const commandDescription = helper.commandDescription(cmd);\n if (commandDescription.length > 0) {\n output = output.concat([\n helper.boxWrap(\n helper.styleCommandDescription(commandDescription),\n helpWidth,\n ),\n '',\n ]);\n }\n\n // Arguments\n const argumentList = helper.visibleArguments(cmd).map((argument) => {\n return callFormatItem(\n helper.styleArgumentTerm(helper.argumentTerm(argument)),\n helper.styleArgumentDescription(helper.argumentDescription(argument)),\n );\n });\n output = output.concat(\n this.formatItemList('Arguments:', argumentList, helper),\n );\n\n // Options\n const optionGroups = this.groupItems(\n cmd.options,\n helper.visibleOptions(cmd),\n (option) => option.helpGroupHeading ?? 'Options:',\n );\n optionGroups.forEach((options, group) => {\n const optionList = options.map((option) => {\n return callFormatItem(\n helper.styleOptionTerm(helper.optionTerm(option)),\n helper.styleOptionDescription(helper.optionDescription(option)),\n );\n });\n output = output.concat(this.formatItemList(group, optionList, helper));\n });\n\n if (helper.showGlobalOptions) {\n const globalOptionList = helper\n .visibleGlobalOptions(cmd)\n .map((option) => {\n return callFormatItem(\n helper.styleOptionTerm(helper.optionTerm(option)),\n helper.styleOptionDescription(helper.optionDescription(option)),\n );\n });\n output = output.concat(\n this.formatItemList('Global Options:', globalOptionList, helper),\n );\n }\n\n // Commands\n const commandGroups = this.groupItems(\n cmd.commands,\n helper.visibleCommands(cmd),\n (sub) => sub.helpGroup() || 'Commands:',\n );\n commandGroups.forEach((commands, group) => {\n const commandList = commands.map((sub) => {\n return callFormatItem(\n helper.styleSubcommandTerm(helper.subcommandTerm(sub)),\n helper.styleSubcommandDescription(helper.subcommandDescription(sub)),\n );\n });\n output = output.concat(this.formatItemList(group, commandList, helper));\n });\n\n return output.join('\\n');\n }\n\n /**\n * Return display width of string, ignoring ANSI escape sequences. Used in padding and wrapping calculations.\n *\n * @param {string} str\n * @returns {number}\n */\n displayWidth(str) {\n return stripColor(str).length;\n }\n\n /**\n * Style the title for displaying in the help. Called with 'Usage:', 'Options:', etc.\n *\n * @param {string} str\n * @returns {string}\n */\n styleTitle(str) {\n return str;\n }\n\n styleUsage(str) {\n // Usage has lots of parts the user might like to color separately! Assume default usage string which is formed like:\n // command subcommand [options] [command] <foo> [bar]\n return str\n .split(' ')\n .map((word) => {\n if (word === '[options]') return this.styleOptionText(word);\n if (word === '[command]') return this.styleSubcommandText(word);\n if (word[0] === '[' || word[0] === '<')\n return this.styleArgumentText(word);\n return this.styleCommandText(word); // Restrict to initial words?\n })\n .join(' ');\n }\n styleCommandDescription(str) {\n return this.styleDescriptionText(str);\n }\n styleOptionDescription(str) {\n return this.styleDescriptionText(str);\n }\n styleSubcommandDescription(str) {\n return this.styleDescriptionText(str);\n }\n styleArgumentDescription(str) {\n return this.styleDescriptionText(str);\n }\n styleDescriptionText(str) {\n return str;\n }\n styleOptionTerm(str) {\n return this.styleOptionText(str);\n }\n styleSubcommandTerm(str) {\n // This is very like usage with lots of parts! Assume default string which is formed like:\n // subcommand [options] <foo> [bar]\n return str\n .split(' ')\n .map((word) => {\n if (word === '[options]') return this.styleOptionText(word);\n if (word[0] === '[' || word[0] === '<')\n return this.styleArgumentText(word);\n return this.styleSubcommandText(word); // Restrict to initial words?\n })\n .join(' ');\n }\n styleArgumentTerm(str) {\n return this.styleArgumentText(str);\n }\n styleOptionText(str) {\n return str;\n }\n styleArgumentText(str) {\n return str;\n }\n styleSubcommandText(str) {\n return str;\n }\n styleCommandText(str) {\n return str;\n }\n\n /**\n * Calculate the pad width from the maximum term length.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {number}\n */\n\n padWidth(cmd, helper) {\n return Math.max(\n helper.longestOptionTermLength(cmd, helper),\n helper.longestGlobalOptionTermLength(cmd, helper),\n helper.longestSubcommandTermLength(cmd, helper),\n helper.longestArgumentTermLength(cmd, helper),\n );\n }\n\n /**\n * Detect manually wrapped and indented strings by checking for line break followed by whitespace.\n *\n * @param {string} str\n * @returns {boolean}\n */\n preformatted(str) {\n return /\\n[^\\S\\r\\n]/.test(str);\n }\n\n /**\n * Format the \"item\", which consists of a term and description. Pad the term and wrap the description, indenting the following lines.\n *\n * So \"TTT\", 5, \"DDD DDDD DD DDD\" might be formatted for this.helpWidth=17 like so:\n * TTT DDD DDDD\n * DD DDD\n *\n * @param {string} term\n * @param {number} termWidth\n * @param {string} description\n * @param {Help} helper\n * @returns {string}\n */\n formatItem(term, termWidth, description, helper) {\n const itemIndent = 2;\n const itemIndentStr = ' '.repeat(itemIndent);\n if (!description) return itemIndentStr + term;\n\n // Pad the term out to a consistent width, so descriptions are aligned.\n const paddedTerm = term.padEnd(\n termWidth + term.length - helper.displayWidth(term),\n );\n\n // Format the description.\n const spacerWidth = 2; // between term and description\n const helpWidth = this.helpWidth ?? 80; // in case prepareContext() was not called\n const remainingWidth = helpWidth - termWidth - spacerWidth - itemIndent;\n let formattedDescription;\n if (\n remainingWidth < this.minWidthToWrap ||\n helper.preformatted(description)\n ) {\n formattedDescription = description;\n } else {\n const wrappedDescription = helper.boxWrap(description, remainingWidth);\n formattedDescription = wrappedDescription.replace(\n /\\n/g,\n '\\n' + ' '.repeat(termWidth + spacerWidth),\n );\n }\n\n // Construct and overall indent.\n return (\n itemIndentStr +\n paddedTerm +\n ' '.repeat(spacerWidth) +\n formattedDescription.replace(/\\n/g, `\\n${itemIndentStr}`)\n );\n }\n\n /**\n * Wrap a string at whitespace, preserving existing line breaks.\n * Wrapping is skipped if the width is less than `minWidthToWrap`.\n *\n * @param {string} str\n * @param {number} width\n * @returns {string}\n */\n boxWrap(str, width) {\n if (width < this.minWidthToWrap) return str;\n\n const rawLines = str.split(/\\r\\n|\\n/);\n // split up text by whitespace\n const chunkPattern = /[\\s]*[^\\s]+/g;\n const wrappedLines = [];\n rawLines.forEach((line) => {\n const chunks = line.match(chunkPattern);\n if (chunks === null) {\n wrappedLines.push('');\n return;\n }\n\n let sumChunks = [chunks.shift()];\n let sumWidth = this.displayWidth(sumChunks[0]);\n chunks.forEach((chunk) => {\n const visibleWidth = this.displayWidth(chunk);\n // Accumulate chunks while they fit into width.\n if (sumWidth + visibleWidth <= width) {\n sumChunks.push(chunk);\n sumWidth += visibleWidth;\n return;\n }\n wrappedLines.push(sumChunks.join(''));\n\n const nextChunk = chunk.trimStart(); // trim space at line break\n sumChunks = [nextChunk];\n sumWidth = this.displayWidth(nextChunk);\n });\n wrappedLines.push(sumChunks.join(''));\n });\n\n return wrappedLines.join('\\n');\n }\n}\n\n/**\n * Strip style ANSI escape sequences from the string. In particular, SGR (Select Graphic Rendition) codes.\n *\n * @param {string} str\n * @returns {string}\n * @package\n */\n\nfunction stripColor(str) {\n // eslint-disable-next-line no-control-regex\n const sgrPattern = /\\x1b\\[\\d*(;\\d*)*m/g;\n return str.replace(sgrPattern, '');\n}\n\nexports.Help = Help;\nexports.stripColor = stripColor;\n",
|
|
8
|
+
"const { InvalidArgumentError } = require('./error.js');\n\nclass Option {\n /**\n * Initialize a new `Option` with the given `flags` and `description`.\n *\n * @param {string} flags\n * @param {string} [description]\n */\n\n constructor(flags, description) {\n this.flags = flags;\n this.description = description || '';\n\n this.required = flags.includes('<'); // A value must be supplied when the option is specified.\n this.optional = flags.includes('['); // A value is optional when the option is specified.\n // variadic test ignores <value,...> et al which might be used to describe custom splitting of single argument\n this.variadic = /\\w\\.\\.\\.[>\\]]$/.test(flags); // The option can take multiple values.\n this.mandatory = false; // The option must have a value after parsing, which usually means it must be specified on command line.\n const optionFlags = splitOptionFlags(flags);\n this.short = optionFlags.shortFlag; // May be a short flag, undefined, or even a long flag (if option has two long flags).\n this.long = optionFlags.longFlag;\n this.negate = false;\n if (this.long) {\n this.negate = this.long.startsWith('--no-');\n }\n this.defaultValue = undefined;\n this.defaultValueDescription = undefined;\n this.presetArg = undefined;\n this.envVar = undefined;\n this.parseArg = undefined;\n this.hidden = false;\n this.argChoices = undefined;\n this.conflictsWith = [];\n this.implied = undefined;\n this.helpGroupHeading = undefined; // soft initialised when option added to command\n }\n\n /**\n * Set the default value, and optionally supply the description to be displayed in the help.\n *\n * @param {*} value\n * @param {string} [description]\n * @return {Option}\n */\n\n default(value, description) {\n this.defaultValue = value;\n this.defaultValueDescription = description;\n return this;\n }\n\n /**\n * Preset to use when option used without option-argument, especially optional but also boolean and negated.\n * The custom processing (parseArg) is called.\n *\n * @example\n * new Option('--color').default('GREYSCALE').preset('RGB');\n * new Option('--donate [amount]').preset('20').argParser(parseFloat);\n *\n * @param {*} arg\n * @return {Option}\n */\n\n preset(arg) {\n this.presetArg = arg;\n return this;\n }\n\n /**\n * Add option name(s) that conflict with this option.\n * An error will be displayed if conflicting options are found during parsing.\n *\n * @example\n * new Option('--rgb').conflicts('cmyk');\n * new Option('--js').conflicts(['ts', 'jsx']);\n *\n * @param {(string | string[])} names\n * @return {Option}\n */\n\n conflicts(names) {\n this.conflictsWith = this.conflictsWith.concat(names);\n return this;\n }\n\n /**\n * Specify implied option values for when this option is set and the implied options are not.\n *\n * The custom processing (parseArg) is not called on the implied values.\n *\n * @example\n * program\n * .addOption(new Option('--log', 'write logging information to file'))\n * .addOption(new Option('--trace', 'log extra details').implies({ log: 'trace.txt' }));\n *\n * @param {object} impliedOptionValues\n * @return {Option}\n */\n implies(impliedOptionValues) {\n let newImplied = impliedOptionValues;\n if (typeof impliedOptionValues === 'string') {\n // string is not documented, but easy mistake and we can do what user probably intended.\n newImplied = { [impliedOptionValues]: true };\n }\n this.implied = Object.assign(this.implied || {}, newImplied);\n return this;\n }\n\n /**\n * Set environment variable to check for option value.\n *\n * An environment variable is only used if when processed the current option value is\n * undefined, or the source of the current value is 'default' or 'config' or 'env'.\n *\n * @param {string} name\n * @return {Option}\n */\n\n env(name) {\n this.envVar = name;\n return this;\n }\n\n /**\n * Set the custom handler for processing CLI option arguments into option values.\n *\n * @param {Function} [fn]\n * @return {Option}\n */\n\n argParser(fn) {\n this.parseArg = fn;\n return this;\n }\n\n /**\n * Whether the option is mandatory and must have a value after parsing.\n *\n * @param {boolean} [mandatory=true]\n * @return {Option}\n */\n\n makeOptionMandatory(mandatory = true) {\n this.mandatory = !!mandatory;\n return this;\n }\n\n /**\n * Hide option in help.\n *\n * @param {boolean} [hide=true]\n * @return {Option}\n */\n\n hideHelp(hide = true) {\n this.hidden = !!hide;\n return this;\n }\n\n /**\n * @package\n */\n\n _collectValue(value, previous) {\n if (previous === this.defaultValue || !Array.isArray(previous)) {\n return [value];\n }\n\n previous.push(value);\n return previous;\n }\n\n /**\n * Only allow option value to be one of choices.\n *\n * @param {string[]} values\n * @return {Option}\n */\n\n choices(values) {\n this.argChoices = values.slice();\n this.parseArg = (arg, previous) => {\n if (!this.argChoices.includes(arg)) {\n throw new InvalidArgumentError(\n `Allowed choices are ${this.argChoices.join(', ')}.`,\n );\n }\n if (this.variadic) {\n return this._collectValue(arg, previous);\n }\n return arg;\n };\n return this;\n }\n\n /**\n * Return option name.\n *\n * @return {string}\n */\n\n name() {\n if (this.long) {\n return this.long.replace(/^--/, '');\n }\n return this.short.replace(/^-/, '');\n }\n\n /**\n * Return option name, in a camelcase format that can be used\n * as an object attribute key.\n *\n * @return {string}\n */\n\n attributeName() {\n if (this.negate) {\n return camelcase(this.name().replace(/^no-/, ''));\n }\n return camelcase(this.name());\n }\n\n /**\n * Set the help group heading.\n *\n * @param {string} heading\n * @return {Option}\n */\n helpGroup(heading) {\n this.helpGroupHeading = heading;\n return this;\n }\n\n /**\n * Check if `arg` matches the short or long flag.\n *\n * @param {string} arg\n * @return {boolean}\n * @package\n */\n\n is(arg) {\n return this.short === arg || this.long === arg;\n }\n\n /**\n * Return whether a boolean option.\n *\n * Options are one of boolean, negated, required argument, or optional argument.\n *\n * @return {boolean}\n * @package\n */\n\n isBoolean() {\n return !this.required && !this.optional && !this.negate;\n }\n}\n\n/**\n * This class is to make it easier to work with dual options, without changing the existing\n * implementation. We support separate dual options for separate positive and negative options,\n * like `--build` and `--no-build`, which share a single option value. This works nicely for some\n * use cases, but is tricky for others where we want separate behaviours despite\n * the single shared option value.\n */\nclass DualOptions {\n /**\n * @param {Option[]} options\n */\n constructor(options) {\n this.positiveOptions = new Map();\n this.negativeOptions = new Map();\n this.dualOptions = new Set();\n options.forEach((option) => {\n if (option.negate) {\n this.negativeOptions.set(option.attributeName(), option);\n } else {\n this.positiveOptions.set(option.attributeName(), option);\n }\n });\n this.negativeOptions.forEach((value, key) => {\n if (this.positiveOptions.has(key)) {\n this.dualOptions.add(key);\n }\n });\n }\n\n /**\n * Did the value come from the option, and not from possible matching dual option?\n *\n * @param {*} value\n * @param {Option} option\n * @returns {boolean}\n */\n valueFromOption(value, option) {\n const optionKey = option.attributeName();\n if (!this.dualOptions.has(optionKey)) return true;\n\n // Use the value to deduce if (probably) came from the option.\n const preset = this.negativeOptions.get(optionKey).presetArg;\n const negativeValue = preset !== undefined ? preset : false;\n return option.negate === (negativeValue === value);\n }\n}\n\n/**\n * Convert string from kebab-case to camelCase.\n *\n * @param {string} str\n * @return {string}\n * @private\n */\n\nfunction camelcase(str) {\n return str.split('-').reduce((str, word) => {\n return str + word[0].toUpperCase() + word.slice(1);\n });\n}\n\n/**\n * Split the short and long flag out of something like '-m,--mixed <value>'\n *\n * @private\n */\n\nfunction splitOptionFlags(flags) {\n let shortFlag;\n let longFlag;\n // short flag, single dash and single character\n const shortFlagExp = /^-[^-]$/;\n // long flag, double dash and at least one character\n const longFlagExp = /^--[^-]/;\n\n const flagParts = flags.split(/[ |,]+/).concat('guard');\n // Normal is short and/or long.\n if (shortFlagExp.test(flagParts[0])) shortFlag = flagParts.shift();\n if (longFlagExp.test(flagParts[0])) longFlag = flagParts.shift();\n // Long then short. Rarely used but fine.\n if (!shortFlag && shortFlagExp.test(flagParts[0]))\n shortFlag = flagParts.shift();\n // Allow two long flags, like '--ws, --workspace'\n // This is the supported way to have a shortish option flag.\n if (!shortFlag && longFlagExp.test(flagParts[0])) {\n shortFlag = longFlag;\n longFlag = flagParts.shift();\n }\n\n // Check for unprocessed flag. Fail noisily rather than silently ignore.\n if (flagParts[0].startsWith('-')) {\n const unsupportedFlag = flagParts[0];\n const baseError = `option creation failed due to '${unsupportedFlag}' in option flags '${flags}'`;\n if (/^-[^-][^-]/.test(unsupportedFlag))\n throw new Error(\n `${baseError}\n- a short flag is a single dash and a single character\n - either use a single dash and a single character (for a short flag)\n - or use a double dash for a long option (and can have two, like '--ws, --workspace')`,\n );\n if (shortFlagExp.test(unsupportedFlag))\n throw new Error(`${baseError}\n- too many short flags`);\n if (longFlagExp.test(unsupportedFlag))\n throw new Error(`${baseError}\n- too many long flags`);\n\n throw new Error(`${baseError}\n- unrecognised flag format`);\n }\n if (shortFlag === undefined && longFlag === undefined)\n throw new Error(\n `option creation failed due to no flags found in '${flags}'.`,\n );\n\n return { shortFlag, longFlag };\n}\n\nexports.Option = Option;\nexports.DualOptions = DualOptions;\n",
|
|
9
|
+
"const maxDistance = 3;\n\nfunction editDistance(a, b) {\n // https://en.wikipedia.org/wiki/Damerau–Levenshtein_distance\n // Calculating optimal string alignment distance, no substring is edited more than once.\n // (Simple implementation.)\n\n // Quick early exit, return worst case.\n if (Math.abs(a.length - b.length) > maxDistance)\n return Math.max(a.length, b.length);\n\n // distance between prefix substrings of a and b\n const d = [];\n\n // pure deletions turn a into empty string\n for (let i = 0; i <= a.length; i++) {\n d[i] = [i];\n }\n // pure insertions turn empty string into b\n for (let j = 0; j <= b.length; j++) {\n d[0][j] = j;\n }\n\n // fill matrix\n for (let j = 1; j <= b.length; j++) {\n for (let i = 1; i <= a.length; i++) {\n let cost = 1;\n if (a[i - 1] === b[j - 1]) {\n cost = 0;\n } else {\n cost = 1;\n }\n d[i][j] = Math.min(\n d[i - 1][j] + 1, // deletion\n d[i][j - 1] + 1, // insertion\n d[i - 1][j - 1] + cost, // substitution\n );\n // transposition\n if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + 1);\n }\n }\n }\n\n return d[a.length][b.length];\n}\n\n/**\n * Find close matches, restricted to same number of edits.\n *\n * @param {string} word\n * @param {string[]} candidates\n * @returns {string}\n */\n\nfunction suggestSimilar(word, candidates) {\n if (!candidates || candidates.length === 0) return '';\n // remove possible duplicates\n candidates = Array.from(new Set(candidates));\n\n const searchingOptions = word.startsWith('--');\n if (searchingOptions) {\n word = word.slice(2);\n candidates = candidates.map((candidate) => candidate.slice(2));\n }\n\n let similar = [];\n let bestDistance = maxDistance;\n const minSimilarity = 0.4;\n candidates.forEach((candidate) => {\n if (candidate.length <= 1) return; // no one character guesses\n\n const distance = editDistance(word, candidate);\n const length = Math.max(word.length, candidate.length);\n const similarity = (length - distance) / length;\n if (similarity > minSimilarity) {\n if (distance < bestDistance) {\n // better edit distance, throw away previous worse matches\n bestDistance = distance;\n similar = [candidate];\n } else if (distance === bestDistance) {\n similar.push(candidate);\n }\n }\n });\n\n similar.sort((a, b) => a.localeCompare(b));\n if (searchingOptions) {\n similar = similar.map((candidate) => `--${candidate}`);\n }\n\n if (similar.length > 1) {\n return `\\n(Did you mean one of ${similar.join(', ')}?)`;\n }\n if (similar.length === 1) {\n return `\\n(Did you mean ${similar[0]}?)`;\n }\n return '';\n}\n\nexports.suggestSimilar = suggestSimilar;\n",
|
|
10
|
+
"const EventEmitter = require('node:events').EventEmitter;\nconst childProcess = require('node:child_process');\nconst path = require('node:path');\nconst fs = require('node:fs');\nconst process = require('node:process');\n\nconst { Argument, humanReadableArgName } = require('./argument.js');\nconst { CommanderError } = require('./error.js');\nconst { Help, stripColor } = require('./help.js');\nconst { Option, DualOptions } = require('./option.js');\nconst { suggestSimilar } = require('./suggestSimilar');\n\nclass Command extends EventEmitter {\n /**\n * Initialize a new `Command`.\n *\n * @param {string} [name]\n */\n\n constructor(name) {\n super();\n /** @type {Command[]} */\n this.commands = [];\n /** @type {Option[]} */\n this.options = [];\n this.parent = null;\n this._allowUnknownOption = false;\n this._allowExcessArguments = false;\n /** @type {Argument[]} */\n this.registeredArguments = [];\n this._args = this.registeredArguments; // deprecated old name\n /** @type {string[]} */\n this.args = []; // cli args with options removed\n this.rawArgs = [];\n this.processedArgs = []; // like .args but after custom processing and collecting variadic\n this._scriptPath = null;\n this._name = name || '';\n this._optionValues = {};\n this._optionValueSources = {}; // default, env, cli etc\n this._storeOptionsAsProperties = false;\n this._actionHandler = null;\n this._executableHandler = false;\n this._executableFile = null; // custom name for executable\n this._executableDir = null; // custom search directory for subcommands\n this._defaultCommandName = null;\n this._exitCallback = null;\n this._aliases = [];\n this._combineFlagAndOptionalValue = true;\n this._description = '';\n this._summary = '';\n this._argsDescription = undefined; // legacy\n this._enablePositionalOptions = false;\n this._passThroughOptions = false;\n this._lifeCycleHooks = {}; // a hash of arrays\n /** @type {(boolean | string)} */\n this._showHelpAfterError = false;\n this._showSuggestionAfterError = true;\n this._savedState = null; // used in save/restoreStateBeforeParse\n\n // see configureOutput() for docs\n this._outputConfiguration = {\n writeOut: (str) => process.stdout.write(str),\n writeErr: (str) => process.stderr.write(str),\n outputError: (str, write) => write(str),\n getOutHelpWidth: () =>\n process.stdout.isTTY ? process.stdout.columns : undefined,\n getErrHelpWidth: () =>\n process.stderr.isTTY ? process.stderr.columns : undefined,\n getOutHasColors: () =>\n useColor() ?? (process.stdout.isTTY && process.stdout.hasColors?.()),\n getErrHasColors: () =>\n useColor() ?? (process.stderr.isTTY && process.stderr.hasColors?.()),\n stripColor: (str) => stripColor(str),\n };\n\n this._hidden = false;\n /** @type {(Option | null | undefined)} */\n this._helpOption = undefined; // Lazy created on demand. May be null if help option is disabled.\n this._addImplicitHelpCommand = undefined; // undecided whether true or false yet, not inherited\n /** @type {Command} */\n this._helpCommand = undefined; // lazy initialised, inherited\n this._helpConfiguration = {};\n /** @type {string | undefined} */\n this._helpGroupHeading = undefined; // soft initialised when added to parent\n /** @type {string | undefined} */\n this._defaultCommandGroup = undefined;\n /** @type {string | undefined} */\n this._defaultOptionGroup = undefined;\n }\n\n /**\n * Copy settings that are useful to have in common across root command and subcommands.\n *\n * (Used internally when adding a command using `.command()` so subcommands inherit parent settings.)\n *\n * @param {Command} sourceCommand\n * @return {Command} `this` command for chaining\n */\n copyInheritedSettings(sourceCommand) {\n this._outputConfiguration = sourceCommand._outputConfiguration;\n this._helpOption = sourceCommand._helpOption;\n this._helpCommand = sourceCommand._helpCommand;\n this._helpConfiguration = sourceCommand._helpConfiguration;\n this._exitCallback = sourceCommand._exitCallback;\n this._storeOptionsAsProperties = sourceCommand._storeOptionsAsProperties;\n this._combineFlagAndOptionalValue =\n sourceCommand._combineFlagAndOptionalValue;\n this._allowExcessArguments = sourceCommand._allowExcessArguments;\n this._enablePositionalOptions = sourceCommand._enablePositionalOptions;\n this._showHelpAfterError = sourceCommand._showHelpAfterError;\n this._showSuggestionAfterError = sourceCommand._showSuggestionAfterError;\n\n return this;\n }\n\n /**\n * @returns {Command[]}\n * @private\n */\n\n _getCommandAndAncestors() {\n const result = [];\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n for (let command = this; command; command = command.parent) {\n result.push(command);\n }\n return result;\n }\n\n /**\n * Define a command.\n *\n * There are two styles of command: pay attention to where to put the description.\n *\n * @example\n * // Command implemented using action handler (description is supplied separately to `.command`)\n * program\n * .command('clone <source> [destination]')\n * .description('clone a repository into a newly created directory')\n * .action((source, destination) => {\n * console.log('clone command called');\n * });\n *\n * // Command implemented using separate executable file (description is second parameter to `.command`)\n * program\n * .command('start <service>', 'start named service')\n * .command('stop [service]', 'stop named service, or all if no name supplied');\n *\n * @param {string} nameAndArgs - command name and arguments, args are `<required>` or `[optional]` and last may also be `variadic...`\n * @param {(object | string)} [actionOptsOrExecDesc] - configuration options (for action), or description (for executable)\n * @param {object} [execOpts] - configuration options (for executable)\n * @return {Command} returns new command for action handler, or `this` for executable command\n */\n\n command(nameAndArgs, actionOptsOrExecDesc, execOpts) {\n let desc = actionOptsOrExecDesc;\n let opts = execOpts;\n if (typeof desc === 'object' && desc !== null) {\n opts = desc;\n desc = null;\n }\n opts = opts || {};\n const [, name, args] = nameAndArgs.match(/([^ ]+) *(.*)/);\n\n const cmd = this.createCommand(name);\n if (desc) {\n cmd.description(desc);\n cmd._executableHandler = true;\n }\n if (opts.isDefault) this._defaultCommandName = cmd._name;\n cmd._hidden = !!(opts.noHelp || opts.hidden); // noHelp is deprecated old name for hidden\n cmd._executableFile = opts.executableFile || null; // Custom name for executable file, set missing to null to match constructor\n if (args) cmd.arguments(args);\n this._registerCommand(cmd);\n cmd.parent = this;\n cmd.copyInheritedSettings(this);\n\n if (desc) return this;\n return cmd;\n }\n\n /**\n * Factory routine to create a new unattached command.\n *\n * See .command() for creating an attached subcommand, which uses this routine to\n * create the command. You can override createCommand to customise subcommands.\n *\n * @param {string} [name]\n * @return {Command} new command\n */\n\n createCommand(name) {\n return new Command(name);\n }\n\n /**\n * You can customise the help with a subclass of Help by overriding createHelp,\n * or by overriding Help properties using configureHelp().\n *\n * @return {Help}\n */\n\n createHelp() {\n return Object.assign(new Help(), this.configureHelp());\n }\n\n /**\n * You can customise the help by overriding Help properties using configureHelp(),\n * or with a subclass of Help by overriding createHelp().\n *\n * @param {object} [configuration] - configuration options\n * @return {(Command | object)} `this` command for chaining, or stored configuration\n */\n\n configureHelp(configuration) {\n if (configuration === undefined) return this._helpConfiguration;\n\n this._helpConfiguration = configuration;\n return this;\n }\n\n /**\n * The default output goes to stdout and stderr. You can customise this for special\n * applications. You can also customise the display of errors by overriding outputError.\n *\n * The configuration properties are all functions:\n *\n * // change how output being written, defaults to stdout and stderr\n * writeOut(str)\n * writeErr(str)\n * // change how output being written for errors, defaults to writeErr\n * outputError(str, write) // used for displaying errors and not used for displaying help\n * // specify width for wrapping help\n * getOutHelpWidth()\n * getErrHelpWidth()\n * // color support, currently only used with Help\n * getOutHasColors()\n * getErrHasColors()\n * stripColor() // used to remove ANSI escape codes if output does not have colors\n *\n * @param {object} [configuration] - configuration options\n * @return {(Command | object)} `this` command for chaining, or stored configuration\n */\n\n configureOutput(configuration) {\n if (configuration === undefined) return this._outputConfiguration;\n\n this._outputConfiguration = {\n ...this._outputConfiguration,\n ...configuration,\n };\n return this;\n }\n\n /**\n * Display the help or a custom message after an error occurs.\n *\n * @param {(boolean|string)} [displayHelp]\n * @return {Command} `this` command for chaining\n */\n showHelpAfterError(displayHelp = true) {\n if (typeof displayHelp !== 'string') displayHelp = !!displayHelp;\n this._showHelpAfterError = displayHelp;\n return this;\n }\n\n /**\n * Display suggestion of similar commands for unknown commands, or options for unknown options.\n *\n * @param {boolean} [displaySuggestion]\n * @return {Command} `this` command for chaining\n */\n showSuggestionAfterError(displaySuggestion = true) {\n this._showSuggestionAfterError = !!displaySuggestion;\n return this;\n }\n\n /**\n * Add a prepared subcommand.\n *\n * See .command() for creating an attached subcommand which inherits settings from its parent.\n *\n * @param {Command} cmd - new subcommand\n * @param {object} [opts] - configuration options\n * @return {Command} `this` command for chaining\n */\n\n addCommand(cmd, opts) {\n if (!cmd._name) {\n throw new Error(`Command passed to .addCommand() must have a name\n- specify the name in Command constructor or using .name()`);\n }\n\n opts = opts || {};\n if (opts.isDefault) this._defaultCommandName = cmd._name;\n if (opts.noHelp || opts.hidden) cmd._hidden = true; // modifying passed command due to existing implementation\n\n this._registerCommand(cmd);\n cmd.parent = this;\n cmd._checkForBrokenPassThrough();\n\n return this;\n }\n\n /**\n * Factory routine to create a new unattached argument.\n *\n * See .argument() for creating an attached argument, which uses this routine to\n * create the argument. You can override createArgument to return a custom argument.\n *\n * @param {string} name\n * @param {string} [description]\n * @return {Argument} new argument\n */\n\n createArgument(name, description) {\n return new Argument(name, description);\n }\n\n /**\n * Define argument syntax for command.\n *\n * The default is that the argument is required, and you can explicitly\n * indicate this with <> around the name. Put [] around the name for an optional argument.\n *\n * @example\n * program.argument('<input-file>');\n * program.argument('[output-file]');\n *\n * @param {string} name\n * @param {string} [description]\n * @param {(Function|*)} [parseArg] - custom argument processing function or default value\n * @param {*} [defaultValue]\n * @return {Command} `this` command for chaining\n */\n argument(name, description, parseArg, defaultValue) {\n const argument = this.createArgument(name, description);\n if (typeof parseArg === 'function') {\n argument.default(defaultValue).argParser(parseArg);\n } else {\n argument.default(parseArg);\n }\n this.addArgument(argument);\n return this;\n }\n\n /**\n * Define argument syntax for command, adding multiple at once (without descriptions).\n *\n * See also .argument().\n *\n * @example\n * program.arguments('<cmd> [env]');\n *\n * @param {string} names\n * @return {Command} `this` command for chaining\n */\n\n arguments(names) {\n names\n .trim()\n .split(/ +/)\n .forEach((detail) => {\n this.argument(detail);\n });\n return this;\n }\n\n /**\n * Define argument syntax for command, adding a prepared argument.\n *\n * @param {Argument} argument\n * @return {Command} `this` command for chaining\n */\n addArgument(argument) {\n const previousArgument = this.registeredArguments.slice(-1)[0];\n if (previousArgument?.variadic) {\n throw new Error(\n `only the last argument can be variadic '${previousArgument.name()}'`,\n );\n }\n if (\n argument.required &&\n argument.defaultValue !== undefined &&\n argument.parseArg === undefined\n ) {\n throw new Error(\n `a default value for a required argument is never used: '${argument.name()}'`,\n );\n }\n this.registeredArguments.push(argument);\n return this;\n }\n\n /**\n * Customise or override default help command. By default a help command is automatically added if your command has subcommands.\n *\n * @example\n * program.helpCommand('help [cmd]');\n * program.helpCommand('help [cmd]', 'show help');\n * program.helpCommand(false); // suppress default help command\n * program.helpCommand(true); // add help command even if no subcommands\n *\n * @param {string|boolean} enableOrNameAndArgs - enable with custom name and/or arguments, or boolean to override whether added\n * @param {string} [description] - custom description\n * @return {Command} `this` command for chaining\n */\n\n helpCommand(enableOrNameAndArgs, description) {\n if (typeof enableOrNameAndArgs === 'boolean') {\n this._addImplicitHelpCommand = enableOrNameAndArgs;\n if (enableOrNameAndArgs && this._defaultCommandGroup) {\n // make the command to store the group\n this._initCommandGroup(this._getHelpCommand());\n }\n return this;\n }\n\n const nameAndArgs = enableOrNameAndArgs ?? 'help [command]';\n const [, helpName, helpArgs] = nameAndArgs.match(/([^ ]+) *(.*)/);\n const helpDescription = description ?? 'display help for command';\n\n const helpCommand = this.createCommand(helpName);\n helpCommand.helpOption(false);\n if (helpArgs) helpCommand.arguments(helpArgs);\n if (helpDescription) helpCommand.description(helpDescription);\n\n this._addImplicitHelpCommand = true;\n this._helpCommand = helpCommand;\n // init group unless lazy create\n if (enableOrNameAndArgs || description) this._initCommandGroup(helpCommand);\n\n return this;\n }\n\n /**\n * Add prepared custom help command.\n *\n * @param {(Command|string|boolean)} helpCommand - custom help command, or deprecated enableOrNameAndArgs as for `.helpCommand()`\n * @param {string} [deprecatedDescription] - deprecated custom description used with custom name only\n * @return {Command} `this` command for chaining\n */\n addHelpCommand(helpCommand, deprecatedDescription) {\n // If not passed an object, call through to helpCommand for backwards compatibility,\n // as addHelpCommand was originally used like helpCommand is now.\n if (typeof helpCommand !== 'object') {\n this.helpCommand(helpCommand, deprecatedDescription);\n return this;\n }\n\n this._addImplicitHelpCommand = true;\n this._helpCommand = helpCommand;\n this._initCommandGroup(helpCommand);\n return this;\n }\n\n /**\n * Lazy create help command.\n *\n * @return {(Command|null)}\n * @package\n */\n _getHelpCommand() {\n const hasImplicitHelpCommand =\n this._addImplicitHelpCommand ??\n (this.commands.length &&\n !this._actionHandler &&\n !this._findCommand('help'));\n\n if (hasImplicitHelpCommand) {\n if (this._helpCommand === undefined) {\n this.helpCommand(undefined, undefined); // use default name and description\n }\n return this._helpCommand;\n }\n return null;\n }\n\n /**\n * Add hook for life cycle event.\n *\n * @param {string} event\n * @param {Function} listener\n * @return {Command} `this` command for chaining\n */\n\n hook(event, listener) {\n const allowedValues = ['preSubcommand', 'preAction', 'postAction'];\n if (!allowedValues.includes(event)) {\n throw new Error(`Unexpected value for event passed to hook : '${event}'.\nExpecting one of '${allowedValues.join(\"', '\")}'`);\n }\n if (this._lifeCycleHooks[event]) {\n this._lifeCycleHooks[event].push(listener);\n } else {\n this._lifeCycleHooks[event] = [listener];\n }\n return this;\n }\n\n /**\n * Register callback to use as replacement for calling process.exit.\n *\n * @param {Function} [fn] optional callback which will be passed a CommanderError, defaults to throwing\n * @return {Command} `this` command for chaining\n */\n\n exitOverride(fn) {\n if (fn) {\n this._exitCallback = fn;\n } else {\n this._exitCallback = (err) => {\n if (err.code !== 'commander.executeSubCommandAsync') {\n throw err;\n } else {\n // Async callback from spawn events, not useful to throw.\n }\n };\n }\n return this;\n }\n\n /**\n * Call process.exit, and _exitCallback if defined.\n *\n * @param {number} exitCode exit code for using with process.exit\n * @param {string} code an id string representing the error\n * @param {string} message human-readable description of the error\n * @return never\n * @private\n */\n\n _exit(exitCode, code, message) {\n if (this._exitCallback) {\n this._exitCallback(new CommanderError(exitCode, code, message));\n // Expecting this line is not reached.\n }\n process.exit(exitCode);\n }\n\n /**\n * Register callback `fn` for the command.\n *\n * @example\n * program\n * .command('serve')\n * .description('start service')\n * .action(function() {\n * // do work here\n * });\n *\n * @param {Function} fn\n * @return {Command} `this` command for chaining\n */\n\n action(fn) {\n const listener = (args) => {\n // The .action callback takes an extra parameter which is the command or options.\n const expectedArgsCount = this.registeredArguments.length;\n const actionArgs = args.slice(0, expectedArgsCount);\n if (this._storeOptionsAsProperties) {\n actionArgs[expectedArgsCount] = this; // backwards compatible \"options\"\n } else {\n actionArgs[expectedArgsCount] = this.opts();\n }\n actionArgs.push(this);\n\n return fn.apply(this, actionArgs);\n };\n this._actionHandler = listener;\n return this;\n }\n\n /**\n * Factory routine to create a new unattached option.\n *\n * See .option() for creating an attached option, which uses this routine to\n * create the option. You can override createOption to return a custom option.\n *\n * @param {string} flags\n * @param {string} [description]\n * @return {Option} new option\n */\n\n createOption(flags, description) {\n return new Option(flags, description);\n }\n\n /**\n * Wrap parseArgs to catch 'commander.invalidArgument'.\n *\n * @param {(Option | Argument)} target\n * @param {string} value\n * @param {*} previous\n * @param {string} invalidArgumentMessage\n * @private\n */\n\n _callParseArg(target, value, previous, invalidArgumentMessage) {\n try {\n return target.parseArg(value, previous);\n } catch (err) {\n if (err.code === 'commander.invalidArgument') {\n const message = `${invalidArgumentMessage} ${err.message}`;\n this.error(message, { exitCode: err.exitCode, code: err.code });\n }\n throw err;\n }\n }\n\n /**\n * Check for option flag conflicts.\n * Register option if no conflicts found, or throw on conflict.\n *\n * @param {Option} option\n * @private\n */\n\n _registerOption(option) {\n const matchingOption =\n (option.short && this._findOption(option.short)) ||\n (option.long && this._findOption(option.long));\n if (matchingOption) {\n const matchingFlag =\n option.long && this._findOption(option.long)\n ? option.long\n : option.short;\n throw new Error(`Cannot add option '${option.flags}'${this._name && ` to command '${this._name}'`} due to conflicting flag '${matchingFlag}'\n- already used by option '${matchingOption.flags}'`);\n }\n\n this._initOptionGroup(option);\n this.options.push(option);\n }\n\n /**\n * Check for command name and alias conflicts with existing commands.\n * Register command if no conflicts found, or throw on conflict.\n *\n * @param {Command} command\n * @private\n */\n\n _registerCommand(command) {\n const knownBy = (cmd) => {\n return [cmd.name()].concat(cmd.aliases());\n };\n\n const alreadyUsed = knownBy(command).find((name) =>\n this._findCommand(name),\n );\n if (alreadyUsed) {\n const existingCmd = knownBy(this._findCommand(alreadyUsed)).join('|');\n const newCmd = knownBy(command).join('|');\n throw new Error(\n `cannot add command '${newCmd}' as already have command '${existingCmd}'`,\n );\n }\n\n this._initCommandGroup(command);\n this.commands.push(command);\n }\n\n /**\n * Add an option.\n *\n * @param {Option} option\n * @return {Command} `this` command for chaining\n */\n addOption(option) {\n this._registerOption(option);\n\n const oname = option.name();\n const name = option.attributeName();\n\n // store default value\n if (option.negate) {\n // --no-foo is special and defaults foo to true, unless a --foo option is already defined\n const positiveLongFlag = option.long.replace(/^--no-/, '--');\n if (!this._findOption(positiveLongFlag)) {\n this.setOptionValueWithSource(\n name,\n option.defaultValue === undefined ? true : option.defaultValue,\n 'default',\n );\n }\n } else if (option.defaultValue !== undefined) {\n this.setOptionValueWithSource(name, option.defaultValue, 'default');\n }\n\n // handler for cli and env supplied values\n const handleOptionValue = (val, invalidValueMessage, valueSource) => {\n // val is null for optional option used without an optional-argument.\n // val is undefined for boolean and negated option.\n if (val == null && option.presetArg !== undefined) {\n val = option.presetArg;\n }\n\n // custom processing\n const oldValue = this.getOptionValue(name);\n if (val !== null && option.parseArg) {\n val = this._callParseArg(option, val, oldValue, invalidValueMessage);\n } else if (val !== null && option.variadic) {\n val = option._collectValue(val, oldValue);\n }\n\n // Fill-in appropriate missing values. Long winded but easy to follow.\n if (val == null) {\n if (option.negate) {\n val = false;\n } else if (option.isBoolean() || option.optional) {\n val = true;\n } else {\n val = ''; // not normal, parseArg might have failed or be a mock function for testing\n }\n }\n this.setOptionValueWithSource(name, val, valueSource);\n };\n\n this.on('option:' + oname, (val) => {\n const invalidValueMessage = `error: option '${option.flags}' argument '${val}' is invalid.`;\n handleOptionValue(val, invalidValueMessage, 'cli');\n });\n\n if (option.envVar) {\n this.on('optionEnv:' + oname, (val) => {\n const invalidValueMessage = `error: option '${option.flags}' value '${val}' from env '${option.envVar}' is invalid.`;\n handleOptionValue(val, invalidValueMessage, 'env');\n });\n }\n\n return this;\n }\n\n /**\n * Internal implementation shared by .option() and .requiredOption()\n *\n * @return {Command} `this` command for chaining\n * @private\n */\n _optionEx(config, flags, description, fn, defaultValue) {\n if (typeof flags === 'object' && flags instanceof Option) {\n throw new Error(\n 'To add an Option object use addOption() instead of option() or requiredOption()',\n );\n }\n const option = this.createOption(flags, description);\n option.makeOptionMandatory(!!config.mandatory);\n if (typeof fn === 'function') {\n option.default(defaultValue).argParser(fn);\n } else if (fn instanceof RegExp) {\n // deprecated\n const regex = fn;\n fn = (val, def) => {\n const m = regex.exec(val);\n return m ? m[0] : def;\n };\n option.default(defaultValue).argParser(fn);\n } else {\n option.default(fn);\n }\n\n return this.addOption(option);\n }\n\n /**\n * Define option with `flags`, `description`, and optional argument parsing function or `defaultValue` or both.\n *\n * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space. A required\n * option-argument is indicated by `<>` and an optional option-argument by `[]`.\n *\n * See the README for more details, and see also addOption() and requiredOption().\n *\n * @example\n * program\n * .option('-p, --pepper', 'add pepper')\n * .option('--pt, --pizza-type <TYPE>', 'type of pizza') // required option-argument\n * .option('-c, --cheese [CHEESE]', 'add extra cheese', 'mozzarella') // optional option-argument with default\n * .option('-t, --tip <VALUE>', 'add tip to purchase cost', parseFloat) // custom parse function\n *\n * @param {string} flags\n * @param {string} [description]\n * @param {(Function|*)} [parseArg] - custom option processing function or default value\n * @param {*} [defaultValue]\n * @return {Command} `this` command for chaining\n */\n\n option(flags, description, parseArg, defaultValue) {\n return this._optionEx({}, flags, description, parseArg, defaultValue);\n }\n\n /**\n * Add a required option which must have a value after parsing. This usually means\n * the option must be specified on the command line. (Otherwise the same as .option().)\n *\n * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space.\n *\n * @param {string} flags\n * @param {string} [description]\n * @param {(Function|*)} [parseArg] - custom option processing function or default value\n * @param {*} [defaultValue]\n * @return {Command} `this` command for chaining\n */\n\n requiredOption(flags, description, parseArg, defaultValue) {\n return this._optionEx(\n { mandatory: true },\n flags,\n description,\n parseArg,\n defaultValue,\n );\n }\n\n /**\n * Alter parsing of short flags with optional values.\n *\n * @example\n * // for `.option('-f,--flag [value]'):\n * program.combineFlagAndOptionalValue(true); // `-f80` is treated like `--flag=80`, this is the default behaviour\n * program.combineFlagAndOptionalValue(false) // `-fb` is treated like `-f -b`\n *\n * @param {boolean} [combine] - if `true` or omitted, an optional value can be specified directly after the flag.\n * @return {Command} `this` command for chaining\n */\n combineFlagAndOptionalValue(combine = true) {\n this._combineFlagAndOptionalValue = !!combine;\n return this;\n }\n\n /**\n * Allow unknown options on the command line.\n *\n * @param {boolean} [allowUnknown] - if `true` or omitted, no error will be thrown for unknown options.\n * @return {Command} `this` command for chaining\n */\n allowUnknownOption(allowUnknown = true) {\n this._allowUnknownOption = !!allowUnknown;\n return this;\n }\n\n /**\n * Allow excess command-arguments on the command line. Pass false to make excess arguments an error.\n *\n * @param {boolean} [allowExcess] - if `true` or omitted, no error will be thrown for excess arguments.\n * @return {Command} `this` command for chaining\n */\n allowExcessArguments(allowExcess = true) {\n this._allowExcessArguments = !!allowExcess;\n return this;\n }\n\n /**\n * Enable positional options. Positional means global options are specified before subcommands which lets\n * subcommands reuse the same option names, and also enables subcommands to turn on passThroughOptions.\n * The default behaviour is non-positional and global options may appear anywhere on the command line.\n *\n * @param {boolean} [positional]\n * @return {Command} `this` command for chaining\n */\n enablePositionalOptions(positional = true) {\n this._enablePositionalOptions = !!positional;\n return this;\n }\n\n /**\n * Pass through options that come after command-arguments rather than treat them as command-options,\n * so actual command-options come before command-arguments. Turning this on for a subcommand requires\n * positional options to have been enabled on the program (parent commands).\n * The default behaviour is non-positional and options may appear before or after command-arguments.\n *\n * @param {boolean} [passThrough] for unknown options.\n * @return {Command} `this` command for chaining\n */\n passThroughOptions(passThrough = true) {\n this._passThroughOptions = !!passThrough;\n this._checkForBrokenPassThrough();\n return this;\n }\n\n /**\n * @private\n */\n\n _checkForBrokenPassThrough() {\n if (\n this.parent &&\n this._passThroughOptions &&\n !this.parent._enablePositionalOptions\n ) {\n throw new Error(\n `passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`,\n );\n }\n }\n\n /**\n * Whether to store option values as properties on command object,\n * or store separately (specify false). In both cases the option values can be accessed using .opts().\n *\n * @param {boolean} [storeAsProperties=true]\n * @return {Command} `this` command for chaining\n */\n\n storeOptionsAsProperties(storeAsProperties = true) {\n if (this.options.length) {\n throw new Error('call .storeOptionsAsProperties() before adding options');\n }\n if (Object.keys(this._optionValues).length) {\n throw new Error(\n 'call .storeOptionsAsProperties() before setting option values',\n );\n }\n this._storeOptionsAsProperties = !!storeAsProperties;\n return this;\n }\n\n /**\n * Retrieve option value.\n *\n * @param {string} key\n * @return {object} value\n */\n\n getOptionValue(key) {\n if (this._storeOptionsAsProperties) {\n return this[key];\n }\n return this._optionValues[key];\n }\n\n /**\n * Store option value.\n *\n * @param {string} key\n * @param {object} value\n * @return {Command} `this` command for chaining\n */\n\n setOptionValue(key, value) {\n return this.setOptionValueWithSource(key, value, undefined);\n }\n\n /**\n * Store option value and where the value came from.\n *\n * @param {string} key\n * @param {object} value\n * @param {string} source - expected values are default/config/env/cli/implied\n * @return {Command} `this` command for chaining\n */\n\n setOptionValueWithSource(key, value, source) {\n if (this._storeOptionsAsProperties) {\n this[key] = value;\n } else {\n this._optionValues[key] = value;\n }\n this._optionValueSources[key] = source;\n return this;\n }\n\n /**\n * Get source of option value.\n * Expected values are default | config | env | cli | implied\n *\n * @param {string} key\n * @return {string}\n */\n\n getOptionValueSource(key) {\n return this._optionValueSources[key];\n }\n\n /**\n * Get source of option value. See also .optsWithGlobals().\n * Expected values are default | config | env | cli | implied\n *\n * @param {string} key\n * @return {string}\n */\n\n getOptionValueSourceWithGlobals(key) {\n // global overwrites local, like optsWithGlobals\n let source;\n this._getCommandAndAncestors().forEach((cmd) => {\n if (cmd.getOptionValueSource(key) !== undefined) {\n source = cmd.getOptionValueSource(key);\n }\n });\n return source;\n }\n\n /**\n * Get user arguments from implied or explicit arguments.\n * Side-effects: set _scriptPath if args included script. Used for default program name, and subcommand searches.\n *\n * @private\n */\n\n _prepareUserArgs(argv, parseOptions) {\n if (argv !== undefined && !Array.isArray(argv)) {\n throw new Error('first parameter to parse must be array or undefined');\n }\n parseOptions = parseOptions || {};\n\n // auto-detect argument conventions if nothing supplied\n if (argv === undefined && parseOptions.from === undefined) {\n if (process.versions?.electron) {\n parseOptions.from = 'electron';\n }\n // check node specific options for scenarios where user CLI args follow executable without scriptname\n const execArgv = process.execArgv ?? [];\n if (\n execArgv.includes('-e') ||\n execArgv.includes('--eval') ||\n execArgv.includes('-p') ||\n execArgv.includes('--print')\n ) {\n parseOptions.from = 'eval'; // internal usage, not documented\n }\n }\n\n // default to using process.argv\n if (argv === undefined) {\n argv = process.argv;\n }\n this.rawArgs = argv.slice();\n\n // extract the user args and scriptPath\n let userArgs;\n switch (parseOptions.from) {\n case undefined:\n case 'node':\n this._scriptPath = argv[1];\n userArgs = argv.slice(2);\n break;\n case 'electron':\n // @ts-ignore: because defaultApp is an unknown property\n if (process.defaultApp) {\n this._scriptPath = argv[1];\n userArgs = argv.slice(2);\n } else {\n userArgs = argv.slice(1);\n }\n break;\n case 'user':\n userArgs = argv.slice(0);\n break;\n case 'eval':\n userArgs = argv.slice(1);\n break;\n default:\n throw new Error(\n `unexpected parse option { from: '${parseOptions.from}' }`,\n );\n }\n\n // Find default name for program from arguments.\n if (!this._name && this._scriptPath)\n this.nameFromFilename(this._scriptPath);\n this._name = this._name || 'program';\n\n return userArgs;\n }\n\n /**\n * Parse `argv`, setting options and invoking commands when defined.\n *\n * Use parseAsync instead of parse if any of your action handlers are async.\n *\n * Call with no parameters to parse `process.argv`. Detects Electron and special node options like `node --eval`. Easy mode!\n *\n * Or call with an array of strings to parse, and optionally where the user arguments start by specifying where the arguments are `from`:\n * - `'node'`: default, `argv[0]` is the application and `argv[1]` is the script being run, with user arguments after that\n * - `'electron'`: `argv[0]` is the application and `argv[1]` varies depending on whether the electron application is packaged\n * - `'user'`: just user arguments\n *\n * @example\n * program.parse(); // parse process.argv and auto-detect electron and special node flags\n * program.parse(process.argv); // assume argv[0] is app and argv[1] is script\n * program.parse(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0]\n *\n * @param {string[]} [argv] - optional, defaults to process.argv\n * @param {object} [parseOptions] - optionally specify style of options with from: node/user/electron\n * @param {string} [parseOptions.from] - where the args are from: 'node', 'user', 'electron'\n * @return {Command} `this` command for chaining\n */\n\n parse(argv, parseOptions) {\n this._prepareForParse();\n const userArgs = this._prepareUserArgs(argv, parseOptions);\n this._parseCommand([], userArgs);\n\n return this;\n }\n\n /**\n * Parse `argv`, setting options and invoking commands when defined.\n *\n * Call with no parameters to parse `process.argv`. Detects Electron and special node options like `node --eval`. Easy mode!\n *\n * Or call with an array of strings to parse, and optionally where the user arguments start by specifying where the arguments are `from`:\n * - `'node'`: default, `argv[0]` is the application and `argv[1]` is the script being run, with user arguments after that\n * - `'electron'`: `argv[0]` is the application and `argv[1]` varies depending on whether the electron application is packaged\n * - `'user'`: just user arguments\n *\n * @example\n * await program.parseAsync(); // parse process.argv and auto-detect electron and special node flags\n * await program.parseAsync(process.argv); // assume argv[0] is app and argv[1] is script\n * await program.parseAsync(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0]\n *\n * @param {string[]} [argv]\n * @param {object} [parseOptions]\n * @param {string} parseOptions.from - where the args are from: 'node', 'user', 'electron'\n * @return {Promise}\n */\n\n async parseAsync(argv, parseOptions) {\n this._prepareForParse();\n const userArgs = this._prepareUserArgs(argv, parseOptions);\n await this._parseCommand([], userArgs);\n\n return this;\n }\n\n _prepareForParse() {\n if (this._savedState === null) {\n this.saveStateBeforeParse();\n } else {\n this.restoreStateBeforeParse();\n }\n }\n\n /**\n * Called the first time parse is called to save state and allow a restore before subsequent calls to parse.\n * Not usually called directly, but available for subclasses to save their custom state.\n *\n * This is called in a lazy way. Only commands used in parsing chain will have state saved.\n */\n saveStateBeforeParse() {\n this._savedState = {\n // name is stable if supplied by author, but may be unspecified for root command and deduced during parsing\n _name: this._name,\n // option values before parse have default values (including false for negated options)\n // shallow clones\n _optionValues: { ...this._optionValues },\n _optionValueSources: { ...this._optionValueSources },\n };\n }\n\n /**\n * Restore state before parse for calls after the first.\n * Not usually called directly, but available for subclasses to save their custom state.\n *\n * This is called in a lazy way. Only commands used in parsing chain will have state restored.\n */\n restoreStateBeforeParse() {\n if (this._storeOptionsAsProperties)\n throw new Error(`Can not call parse again when storeOptionsAsProperties is true.\n- either make a new Command for each call to parse, or stop storing options as properties`);\n\n // clear state from _prepareUserArgs\n this._name = this._savedState._name;\n this._scriptPath = null;\n this.rawArgs = [];\n // clear state from setOptionValueWithSource\n this._optionValues = { ...this._savedState._optionValues };\n this._optionValueSources = { ...this._savedState._optionValueSources };\n // clear state from _parseCommand\n this.args = [];\n // clear state from _processArguments\n this.processedArgs = [];\n }\n\n /**\n * Throw if expected executable is missing. Add lots of help for author.\n *\n * @param {string} executableFile\n * @param {string} executableDir\n * @param {string} subcommandName\n */\n _checkForMissingExecutable(executableFile, executableDir, subcommandName) {\n if (fs.existsSync(executableFile)) return;\n\n const executableDirMessage = executableDir\n ? `searched for local subcommand relative to directory '${executableDir}'`\n : 'no directory for search for local subcommand, use .executableDir() to supply a custom directory';\n const executableMissing = `'${executableFile}' does not exist\n - if '${subcommandName}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead\n - if the default executable name is not suitable, use the executableFile option to supply a custom name or path\n - ${executableDirMessage}`;\n throw new Error(executableMissing);\n }\n\n /**\n * Execute a sub-command executable.\n *\n * @private\n */\n\n _executeSubCommand(subcommand, args) {\n args = args.slice();\n let launchWithNode = false; // Use node for source targets so do not need to get permissions correct, and on Windows.\n const sourceExt = ['.js', '.ts', '.tsx', '.mjs', '.cjs'];\n\n function findFile(baseDir, baseName) {\n // Look for specified file\n const localBin = path.resolve(baseDir, baseName);\n if (fs.existsSync(localBin)) return localBin;\n\n // Stop looking if candidate already has an expected extension.\n if (sourceExt.includes(path.extname(baseName))) return undefined;\n\n // Try all the extensions.\n const foundExt = sourceExt.find((ext) =>\n fs.existsSync(`${localBin}${ext}`),\n );\n if (foundExt) return `${localBin}${foundExt}`;\n\n return undefined;\n }\n\n // Not checking for help first. Unlikely to have mandatory and executable, and can't robustly test for help flags in external command.\n this._checkForMissingMandatoryOptions();\n this._checkForConflictingOptions();\n\n // executableFile and executableDir might be full path, or just a name\n let executableFile =\n subcommand._executableFile || `${this._name}-${subcommand._name}`;\n let executableDir = this._executableDir || '';\n if (this._scriptPath) {\n let resolvedScriptPath; // resolve possible symlink for installed npm binary\n try {\n resolvedScriptPath = fs.realpathSync(this._scriptPath);\n } catch {\n resolvedScriptPath = this._scriptPath;\n }\n executableDir = path.resolve(\n path.dirname(resolvedScriptPath),\n executableDir,\n );\n }\n\n // Look for a local file in preference to a command in PATH.\n if (executableDir) {\n let localFile = findFile(executableDir, executableFile);\n\n // Legacy search using prefix of script name instead of command name\n if (!localFile && !subcommand._executableFile && this._scriptPath) {\n const legacyName = path.basename(\n this._scriptPath,\n path.extname(this._scriptPath),\n );\n if (legacyName !== this._name) {\n localFile = findFile(\n executableDir,\n `${legacyName}-${subcommand._name}`,\n );\n }\n }\n executableFile = localFile || executableFile;\n }\n\n launchWithNode = sourceExt.includes(path.extname(executableFile));\n\n let proc;\n if (process.platform !== 'win32') {\n if (launchWithNode) {\n args.unshift(executableFile);\n // add executable arguments to spawn\n args = incrementNodeInspectorPort(process.execArgv).concat(args);\n\n proc = childProcess.spawn(process.argv[0], args, { stdio: 'inherit' });\n } else {\n proc = childProcess.spawn(executableFile, args, { stdio: 'inherit' });\n }\n } else {\n this._checkForMissingExecutable(\n executableFile,\n executableDir,\n subcommand._name,\n );\n args.unshift(executableFile);\n // add executable arguments to spawn\n args = incrementNodeInspectorPort(process.execArgv).concat(args);\n proc = childProcess.spawn(process.execPath, args, { stdio: 'inherit' });\n }\n\n if (!proc.killed) {\n // testing mainly to avoid leak warnings during unit tests with mocked spawn\n const signals = ['SIGUSR1', 'SIGUSR2', 'SIGTERM', 'SIGINT', 'SIGHUP'];\n signals.forEach((signal) => {\n process.on(signal, () => {\n if (proc.killed === false && proc.exitCode === null) {\n // @ts-ignore because signals not typed to known strings\n proc.kill(signal);\n }\n });\n });\n }\n\n // By default terminate process when spawned process terminates.\n const exitCallback = this._exitCallback;\n proc.on('close', (code) => {\n code = code ?? 1; // code is null if spawned process terminated due to a signal\n if (!exitCallback) {\n process.exit(code);\n } else {\n exitCallback(\n new CommanderError(\n code,\n 'commander.executeSubCommandAsync',\n '(close)',\n ),\n );\n }\n });\n proc.on('error', (err) => {\n // @ts-ignore: because err.code is an unknown property\n if (err.code === 'ENOENT') {\n this._checkForMissingExecutable(\n executableFile,\n executableDir,\n subcommand._name,\n );\n // @ts-ignore: because err.code is an unknown property\n } else if (err.code === 'EACCES') {\n throw new Error(`'${executableFile}' not executable`);\n }\n if (!exitCallback) {\n process.exit(1);\n } else {\n const wrappedError = new CommanderError(\n 1,\n 'commander.executeSubCommandAsync',\n '(error)',\n );\n wrappedError.nestedError = err;\n exitCallback(wrappedError);\n }\n });\n\n // Store the reference to the child process\n this.runningCommand = proc;\n }\n\n /**\n * @private\n */\n\n _dispatchSubcommand(commandName, operands, unknown) {\n const subCommand = this._findCommand(commandName);\n if (!subCommand) this.help({ error: true });\n\n subCommand._prepareForParse();\n let promiseChain;\n promiseChain = this._chainOrCallSubCommandHook(\n promiseChain,\n subCommand,\n 'preSubcommand',\n );\n promiseChain = this._chainOrCall(promiseChain, () => {\n if (subCommand._executableHandler) {\n this._executeSubCommand(subCommand, operands.concat(unknown));\n } else {\n return subCommand._parseCommand(operands, unknown);\n }\n });\n return promiseChain;\n }\n\n /**\n * Invoke help directly if possible, or dispatch if necessary.\n * e.g. help foo\n *\n * @private\n */\n\n _dispatchHelpCommand(subcommandName) {\n if (!subcommandName) {\n this.help();\n }\n const subCommand = this._findCommand(subcommandName);\n if (subCommand && !subCommand._executableHandler) {\n subCommand.help();\n }\n\n // Fallback to parsing the help flag to invoke the help.\n return this._dispatchSubcommand(\n subcommandName,\n [],\n [this._getHelpOption()?.long ?? this._getHelpOption()?.short ?? '--help'],\n );\n }\n\n /**\n * Check this.args against expected this.registeredArguments.\n *\n * @private\n */\n\n _checkNumberOfArguments() {\n // too few\n this.registeredArguments.forEach((arg, i) => {\n if (arg.required && this.args[i] == null) {\n this.missingArgument(arg.name());\n }\n });\n // too many\n if (\n this.registeredArguments.length > 0 &&\n this.registeredArguments[this.registeredArguments.length - 1].variadic\n ) {\n return;\n }\n if (this.args.length > this.registeredArguments.length) {\n this._excessArguments(this.args);\n }\n }\n\n /**\n * Process this.args using this.registeredArguments and save as this.processedArgs!\n *\n * @private\n */\n\n _processArguments() {\n const myParseArg = (argument, value, previous) => {\n // Extra processing for nice error message on parsing failure.\n let parsedValue = value;\n if (value !== null && argument.parseArg) {\n const invalidValueMessage = `error: command-argument value '${value}' is invalid for argument '${argument.name()}'.`;\n parsedValue = this._callParseArg(\n argument,\n value,\n previous,\n invalidValueMessage,\n );\n }\n return parsedValue;\n };\n\n this._checkNumberOfArguments();\n\n const processedArgs = [];\n this.registeredArguments.forEach((declaredArg, index) => {\n let value = declaredArg.defaultValue;\n if (declaredArg.variadic) {\n // Collect together remaining arguments for passing together as an array.\n if (index < this.args.length) {\n value = this.args.slice(index);\n if (declaredArg.parseArg) {\n value = value.reduce((processed, v) => {\n return myParseArg(declaredArg, v, processed);\n }, declaredArg.defaultValue);\n }\n } else if (value === undefined) {\n value = [];\n }\n } else if (index < this.args.length) {\n value = this.args[index];\n if (declaredArg.parseArg) {\n value = myParseArg(declaredArg, value, declaredArg.defaultValue);\n }\n }\n processedArgs[index] = value;\n });\n this.processedArgs = processedArgs;\n }\n\n /**\n * Once we have a promise we chain, but call synchronously until then.\n *\n * @param {(Promise|undefined)} promise\n * @param {Function} fn\n * @return {(Promise|undefined)}\n * @private\n */\n\n _chainOrCall(promise, fn) {\n // thenable\n if (promise?.then && typeof promise.then === 'function') {\n // already have a promise, chain callback\n return promise.then(() => fn());\n }\n // callback might return a promise\n return fn();\n }\n\n /**\n *\n * @param {(Promise|undefined)} promise\n * @param {string} event\n * @return {(Promise|undefined)}\n * @private\n */\n\n _chainOrCallHooks(promise, event) {\n let result = promise;\n const hooks = [];\n this._getCommandAndAncestors()\n .reverse()\n .filter((cmd) => cmd._lifeCycleHooks[event] !== undefined)\n .forEach((hookedCommand) => {\n hookedCommand._lifeCycleHooks[event].forEach((callback) => {\n hooks.push({ hookedCommand, callback });\n });\n });\n if (event === 'postAction') {\n hooks.reverse();\n }\n\n hooks.forEach((hookDetail) => {\n result = this._chainOrCall(result, () => {\n return hookDetail.callback(hookDetail.hookedCommand, this);\n });\n });\n return result;\n }\n\n /**\n *\n * @param {(Promise|undefined)} promise\n * @param {Command} subCommand\n * @param {string} event\n * @return {(Promise|undefined)}\n * @private\n */\n\n _chainOrCallSubCommandHook(promise, subCommand, event) {\n let result = promise;\n if (this._lifeCycleHooks[event] !== undefined) {\n this._lifeCycleHooks[event].forEach((hook) => {\n result = this._chainOrCall(result, () => {\n return hook(this, subCommand);\n });\n });\n }\n return result;\n }\n\n /**\n * Process arguments in context of this command.\n * Returns action result, in case it is a promise.\n *\n * @private\n */\n\n _parseCommand(operands, unknown) {\n const parsed = this.parseOptions(unknown);\n this._parseOptionsEnv(); // after cli, so parseArg not called on both cli and env\n this._parseOptionsImplied();\n operands = operands.concat(parsed.operands);\n unknown = parsed.unknown;\n this.args = operands.concat(unknown);\n\n if (operands && this._findCommand(operands[0])) {\n return this._dispatchSubcommand(operands[0], operands.slice(1), unknown);\n }\n if (\n this._getHelpCommand() &&\n operands[0] === this._getHelpCommand().name()\n ) {\n return this._dispatchHelpCommand(operands[1]);\n }\n if (this._defaultCommandName) {\n this._outputHelpIfRequested(unknown); // Run the help for default command from parent rather than passing to default command\n return this._dispatchSubcommand(\n this._defaultCommandName,\n operands,\n unknown,\n );\n }\n if (\n this.commands.length &&\n this.args.length === 0 &&\n !this._actionHandler &&\n !this._defaultCommandName\n ) {\n // probably missing subcommand and no handler, user needs help (and exit)\n this.help({ error: true });\n }\n\n this._outputHelpIfRequested(parsed.unknown);\n this._checkForMissingMandatoryOptions();\n this._checkForConflictingOptions();\n\n // We do not always call this check to avoid masking a \"better\" error, like unknown command.\n const checkForUnknownOptions = () => {\n if (parsed.unknown.length > 0) {\n this.unknownOption(parsed.unknown[0]);\n }\n };\n\n const commandEvent = `command:${this.name()}`;\n if (this._actionHandler) {\n checkForUnknownOptions();\n this._processArguments();\n\n let promiseChain;\n promiseChain = this._chainOrCallHooks(promiseChain, 'preAction');\n promiseChain = this._chainOrCall(promiseChain, () =>\n this._actionHandler(this.processedArgs),\n );\n if (this.parent) {\n promiseChain = this._chainOrCall(promiseChain, () => {\n this.parent.emit(commandEvent, operands, unknown); // legacy\n });\n }\n promiseChain = this._chainOrCallHooks(promiseChain, 'postAction');\n return promiseChain;\n }\n if (this.parent?.listenerCount(commandEvent)) {\n checkForUnknownOptions();\n this._processArguments();\n this.parent.emit(commandEvent, operands, unknown); // legacy\n } else if (operands.length) {\n if (this._findCommand('*')) {\n // legacy default command\n return this._dispatchSubcommand('*', operands, unknown);\n }\n if (this.listenerCount('command:*')) {\n // skip option check, emit event for possible misspelling suggestion\n this.emit('command:*', operands, unknown);\n } else if (this.commands.length) {\n this.unknownCommand();\n } else {\n checkForUnknownOptions();\n this._processArguments();\n }\n } else if (this.commands.length) {\n checkForUnknownOptions();\n // This command has subcommands and nothing hooked up at this level, so display help (and exit).\n this.help({ error: true });\n } else {\n checkForUnknownOptions();\n this._processArguments();\n // fall through for caller to handle after calling .parse()\n }\n }\n\n /**\n * Find matching command.\n *\n * @private\n * @return {Command | undefined}\n */\n _findCommand(name) {\n if (!name) return undefined;\n return this.commands.find(\n (cmd) => cmd._name === name || cmd._aliases.includes(name),\n );\n }\n\n /**\n * Return an option matching `arg` if any.\n *\n * @param {string} arg\n * @return {Option}\n * @package\n */\n\n _findOption(arg) {\n return this.options.find((option) => option.is(arg));\n }\n\n /**\n * Display an error message if a mandatory option does not have a value.\n * Called after checking for help flags in leaf subcommand.\n *\n * @private\n */\n\n _checkForMissingMandatoryOptions() {\n // Walk up hierarchy so can call in subcommand after checking for displaying help.\n this._getCommandAndAncestors().forEach((cmd) => {\n cmd.options.forEach((anOption) => {\n if (\n anOption.mandatory &&\n cmd.getOptionValue(anOption.attributeName()) === undefined\n ) {\n cmd.missingMandatoryOptionValue(anOption);\n }\n });\n });\n }\n\n /**\n * Display an error message if conflicting options are used together in this.\n *\n * @private\n */\n _checkForConflictingLocalOptions() {\n const definedNonDefaultOptions = this.options.filter((option) => {\n const optionKey = option.attributeName();\n if (this.getOptionValue(optionKey) === undefined) {\n return false;\n }\n return this.getOptionValueSource(optionKey) !== 'default';\n });\n\n const optionsWithConflicting = definedNonDefaultOptions.filter(\n (option) => option.conflictsWith.length > 0,\n );\n\n optionsWithConflicting.forEach((option) => {\n const conflictingAndDefined = definedNonDefaultOptions.find((defined) =>\n option.conflictsWith.includes(defined.attributeName()),\n );\n if (conflictingAndDefined) {\n this._conflictingOption(option, conflictingAndDefined);\n }\n });\n }\n\n /**\n * Display an error message if conflicting options are used together.\n * Called after checking for help flags in leaf subcommand.\n *\n * @private\n */\n _checkForConflictingOptions() {\n // Walk up hierarchy so can call in subcommand after checking for displaying help.\n this._getCommandAndAncestors().forEach((cmd) => {\n cmd._checkForConflictingLocalOptions();\n });\n }\n\n /**\n * Parse options from `argv` removing known options,\n * and return argv split into operands and unknown arguments.\n *\n * Side effects: modifies command by storing options. Does not reset state if called again.\n *\n * Examples:\n *\n * argv => operands, unknown\n * --known kkk op => [op], []\n * op --known kkk => [op], []\n * sub --unknown uuu op => [sub], [--unknown uuu op]\n * sub -- --unknown uuu op => [sub --unknown uuu op], []\n *\n * @param {string[]} args\n * @return {{operands: string[], unknown: string[]}}\n */\n\n parseOptions(args) {\n const operands = []; // operands, not options or values\n const unknown = []; // first unknown option and remaining unknown args\n let dest = operands;\n\n function maybeOption(arg) {\n return arg.length > 1 && arg[0] === '-';\n }\n\n const negativeNumberArg = (arg) => {\n // return false if not a negative number\n if (!/^-(\\d+|\\d*\\.\\d+)(e[+-]?\\d+)?$/.test(arg)) return false;\n // negative number is ok unless digit used as an option in command hierarchy\n return !this._getCommandAndAncestors().some((cmd) =>\n cmd.options\n .map((opt) => opt.short)\n .some((short) => /^-\\d$/.test(short)),\n );\n };\n\n // parse options\n let activeVariadicOption = null;\n let activeGroup = null; // working through group of short options, like -abc\n let i = 0;\n while (i < args.length || activeGroup) {\n const arg = activeGroup ?? args[i++];\n activeGroup = null;\n\n // literal\n if (arg === '--') {\n if (dest === unknown) dest.push(arg);\n dest.push(...args.slice(i));\n break;\n }\n\n if (\n activeVariadicOption &&\n (!maybeOption(arg) || negativeNumberArg(arg))\n ) {\n this.emit(`option:${activeVariadicOption.name()}`, arg);\n continue;\n }\n activeVariadicOption = null;\n\n if (maybeOption(arg)) {\n const option = this._findOption(arg);\n // recognised option, call listener to assign value with possible custom processing\n if (option) {\n if (option.required) {\n const value = args[i++];\n if (value === undefined) this.optionMissingArgument(option);\n this.emit(`option:${option.name()}`, value);\n } else if (option.optional) {\n let value = null;\n // historical behaviour is optional value is following arg unless an option\n if (\n i < args.length &&\n (!maybeOption(args[i]) || negativeNumberArg(args[i]))\n ) {\n value = args[i++];\n }\n this.emit(`option:${option.name()}`, value);\n } else {\n // boolean flag\n this.emit(`option:${option.name()}`);\n }\n activeVariadicOption = option.variadic ? option : null;\n continue;\n }\n }\n\n // Look for combo options following single dash, eat first one if known.\n if (arg.length > 2 && arg[0] === '-' && arg[1] !== '-') {\n const option = this._findOption(`-${arg[1]}`);\n if (option) {\n if (\n option.required ||\n (option.optional && this._combineFlagAndOptionalValue)\n ) {\n // option with value following in same argument\n this.emit(`option:${option.name()}`, arg.slice(2));\n } else {\n // boolean option\n this.emit(`option:${option.name()}`);\n // remove the processed option and keep processing group\n activeGroup = `-${arg.slice(2)}`;\n }\n continue;\n }\n }\n\n // Look for known long flag with value, like --foo=bar\n if (/^--[^=]+=/.test(arg)) {\n const index = arg.indexOf('=');\n const option = this._findOption(arg.slice(0, index));\n if (option && (option.required || option.optional)) {\n this.emit(`option:${option.name()}`, arg.slice(index + 1));\n continue;\n }\n }\n\n // Not a recognised option by this command.\n // Might be a command-argument, or subcommand option, or unknown option, or help command or option.\n\n // An unknown option means further arguments also classified as unknown so can be reprocessed by subcommands.\n // A negative number in a leaf command is not an unknown option.\n if (\n dest === operands &&\n maybeOption(arg) &&\n !(this.commands.length === 0 && negativeNumberArg(arg))\n ) {\n dest = unknown;\n }\n\n // If using positionalOptions, stop processing our options at subcommand.\n if (\n (this._enablePositionalOptions || this._passThroughOptions) &&\n operands.length === 0 &&\n unknown.length === 0\n ) {\n if (this._findCommand(arg)) {\n operands.push(arg);\n unknown.push(...args.slice(i));\n break;\n } else if (\n this._getHelpCommand() &&\n arg === this._getHelpCommand().name()\n ) {\n operands.push(arg, ...args.slice(i));\n break;\n } else if (this._defaultCommandName) {\n unknown.push(arg, ...args.slice(i));\n break;\n }\n }\n\n // If using passThroughOptions, stop processing options at first command-argument.\n if (this._passThroughOptions) {\n dest.push(arg, ...args.slice(i));\n break;\n }\n\n // add arg\n dest.push(arg);\n }\n\n return { operands, unknown };\n }\n\n /**\n * Return an object containing local option values as key-value pairs.\n *\n * @return {object}\n */\n opts() {\n if (this._storeOptionsAsProperties) {\n // Preserve original behaviour so backwards compatible when still using properties\n const result = {};\n const len = this.options.length;\n\n for (let i = 0; i < len; i++) {\n const key = this.options[i].attributeName();\n result[key] =\n key === this._versionOptionName ? this._version : this[key];\n }\n return result;\n }\n\n return this._optionValues;\n }\n\n /**\n * Return an object containing merged local and global option values as key-value pairs.\n *\n * @return {object}\n */\n optsWithGlobals() {\n // globals overwrite locals\n return this._getCommandAndAncestors().reduce(\n (combinedOptions, cmd) => Object.assign(combinedOptions, cmd.opts()),\n {},\n );\n }\n\n /**\n * Display error message and exit (or call exitOverride).\n *\n * @param {string} message\n * @param {object} [errorOptions]\n * @param {string} [errorOptions.code] - an id string representing the error\n * @param {number} [errorOptions.exitCode] - used with process.exit\n */\n error(message, errorOptions) {\n // output handling\n this._outputConfiguration.outputError(\n `${message}\\n`,\n this._outputConfiguration.writeErr,\n );\n if (typeof this._showHelpAfterError === 'string') {\n this._outputConfiguration.writeErr(`${this._showHelpAfterError}\\n`);\n } else if (this._showHelpAfterError) {\n this._outputConfiguration.writeErr('\\n');\n this.outputHelp({ error: true });\n }\n\n // exit handling\n const config = errorOptions || {};\n const exitCode = config.exitCode || 1;\n const code = config.code || 'commander.error';\n this._exit(exitCode, code, message);\n }\n\n /**\n * Apply any option related environment variables, if option does\n * not have a value from cli or client code.\n *\n * @private\n */\n _parseOptionsEnv() {\n this.options.forEach((option) => {\n if (option.envVar && option.envVar in process.env) {\n const optionKey = option.attributeName();\n // Priority check. Do not overwrite cli or options from unknown source (client-code).\n if (\n this.getOptionValue(optionKey) === undefined ||\n ['default', 'config', 'env'].includes(\n this.getOptionValueSource(optionKey),\n )\n ) {\n if (option.required || option.optional) {\n // option can take a value\n // keep very simple, optional always takes value\n this.emit(`optionEnv:${option.name()}`, process.env[option.envVar]);\n } else {\n // boolean\n // keep very simple, only care that envVar defined and not the value\n this.emit(`optionEnv:${option.name()}`);\n }\n }\n }\n });\n }\n\n /**\n * Apply any implied option values, if option is undefined or default value.\n *\n * @private\n */\n _parseOptionsImplied() {\n const dualHelper = new DualOptions(this.options);\n const hasCustomOptionValue = (optionKey) => {\n return (\n this.getOptionValue(optionKey) !== undefined &&\n !['default', 'implied'].includes(this.getOptionValueSource(optionKey))\n );\n };\n this.options\n .filter(\n (option) =>\n option.implied !== undefined &&\n hasCustomOptionValue(option.attributeName()) &&\n dualHelper.valueFromOption(\n this.getOptionValue(option.attributeName()),\n option,\n ),\n )\n .forEach((option) => {\n Object.keys(option.implied)\n .filter((impliedKey) => !hasCustomOptionValue(impliedKey))\n .forEach((impliedKey) => {\n this.setOptionValueWithSource(\n impliedKey,\n option.implied[impliedKey],\n 'implied',\n );\n });\n });\n }\n\n /**\n * Argument `name` is missing.\n *\n * @param {string} name\n * @private\n */\n\n missingArgument(name) {\n const message = `error: missing required argument '${name}'`;\n this.error(message, { code: 'commander.missingArgument' });\n }\n\n /**\n * `Option` is missing an argument.\n *\n * @param {Option} option\n * @private\n */\n\n optionMissingArgument(option) {\n const message = `error: option '${option.flags}' argument missing`;\n this.error(message, { code: 'commander.optionMissingArgument' });\n }\n\n /**\n * `Option` does not have a value, and is a mandatory option.\n *\n * @param {Option} option\n * @private\n */\n\n missingMandatoryOptionValue(option) {\n const message = `error: required option '${option.flags}' not specified`;\n this.error(message, { code: 'commander.missingMandatoryOptionValue' });\n }\n\n /**\n * `Option` conflicts with another option.\n *\n * @param {Option} option\n * @param {Option} conflictingOption\n * @private\n */\n _conflictingOption(option, conflictingOption) {\n // The calling code does not know whether a negated option is the source of the\n // value, so do some work to take an educated guess.\n const findBestOptionFromValue = (option) => {\n const optionKey = option.attributeName();\n const optionValue = this.getOptionValue(optionKey);\n const negativeOption = this.options.find(\n (target) => target.negate && optionKey === target.attributeName(),\n );\n const positiveOption = this.options.find(\n (target) => !target.negate && optionKey === target.attributeName(),\n );\n if (\n negativeOption &&\n ((negativeOption.presetArg === undefined && optionValue === false) ||\n (negativeOption.presetArg !== undefined &&\n optionValue === negativeOption.presetArg))\n ) {\n return negativeOption;\n }\n return positiveOption || option;\n };\n\n const getErrorMessage = (option) => {\n const bestOption = findBestOptionFromValue(option);\n const optionKey = bestOption.attributeName();\n const source = this.getOptionValueSource(optionKey);\n if (source === 'env') {\n return `environment variable '${bestOption.envVar}'`;\n }\n return `option '${bestOption.flags}'`;\n };\n\n const message = `error: ${getErrorMessage(option)} cannot be used with ${getErrorMessage(conflictingOption)}`;\n this.error(message, { code: 'commander.conflictingOption' });\n }\n\n /**\n * Unknown option `flag`.\n *\n * @param {string} flag\n * @private\n */\n\n unknownOption(flag) {\n if (this._allowUnknownOption) return;\n let suggestion = '';\n\n if (flag.startsWith('--') && this._showSuggestionAfterError) {\n // Looping to pick up the global options too\n let candidateFlags = [];\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let command = this;\n do {\n const moreFlags = command\n .createHelp()\n .visibleOptions(command)\n .filter((option) => option.long)\n .map((option) => option.long);\n candidateFlags = candidateFlags.concat(moreFlags);\n command = command.parent;\n } while (command && !command._enablePositionalOptions);\n suggestion = suggestSimilar(flag, candidateFlags);\n }\n\n const message = `error: unknown option '${flag}'${suggestion}`;\n this.error(message, { code: 'commander.unknownOption' });\n }\n\n /**\n * Excess arguments, more than expected.\n *\n * @param {string[]} receivedArgs\n * @private\n */\n\n _excessArguments(receivedArgs) {\n if (this._allowExcessArguments) return;\n\n const expected = this.registeredArguments.length;\n const s = expected === 1 ? '' : 's';\n const forSubcommand = this.parent ? ` for '${this.name()}'` : '';\n const message = `error: too many arguments${forSubcommand}. Expected ${expected} argument${s} but got ${receivedArgs.length}.`;\n this.error(message, { code: 'commander.excessArguments' });\n }\n\n /**\n * Unknown command.\n *\n * @private\n */\n\n unknownCommand() {\n const unknownName = this.args[0];\n let suggestion = '';\n\n if (this._showSuggestionAfterError) {\n const candidateNames = [];\n this.createHelp()\n .visibleCommands(this)\n .forEach((command) => {\n candidateNames.push(command.name());\n // just visible alias\n if (command.alias()) candidateNames.push(command.alias());\n });\n suggestion = suggestSimilar(unknownName, candidateNames);\n }\n\n const message = `error: unknown command '${unknownName}'${suggestion}`;\n this.error(message, { code: 'commander.unknownCommand' });\n }\n\n /**\n * Get or set the program version.\n *\n * This method auto-registers the \"-V, --version\" option which will print the version number.\n *\n * You can optionally supply the flags and description to override the defaults.\n *\n * @param {string} [str]\n * @param {string} [flags]\n * @param {string} [description]\n * @return {(this | string | undefined)} `this` command for chaining, or version string if no arguments\n */\n\n version(str, flags, description) {\n if (str === undefined) return this._version;\n this._version = str;\n flags = flags || '-V, --version';\n description = description || 'output the version number';\n const versionOption = this.createOption(flags, description);\n this._versionOptionName = versionOption.attributeName();\n this._registerOption(versionOption);\n\n this.on('option:' + versionOption.name(), () => {\n this._outputConfiguration.writeOut(`${str}\\n`);\n this._exit(0, 'commander.version', str);\n });\n return this;\n }\n\n /**\n * Set the description.\n *\n * @param {string} [str]\n * @param {object} [argsDescription]\n * @return {(string|Command)}\n */\n description(str, argsDescription) {\n if (str === undefined && argsDescription === undefined)\n return this._description;\n this._description = str;\n if (argsDescription) {\n this._argsDescription = argsDescription;\n }\n return this;\n }\n\n /**\n * Set the summary. Used when listed as subcommand of parent.\n *\n * @param {string} [str]\n * @return {(string|Command)}\n */\n summary(str) {\n if (str === undefined) return this._summary;\n this._summary = str;\n return this;\n }\n\n /**\n * Set an alias for the command.\n *\n * You may call more than once to add multiple aliases. Only the first alias is shown in the auto-generated help.\n *\n * @param {string} [alias]\n * @return {(string|Command)}\n */\n\n alias(alias) {\n if (alias === undefined) return this._aliases[0]; // just return first, for backwards compatibility\n\n /** @type {Command} */\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let command = this;\n if (\n this.commands.length !== 0 &&\n this.commands[this.commands.length - 1]._executableHandler\n ) {\n // assume adding alias for last added executable subcommand, rather than this\n command = this.commands[this.commands.length - 1];\n }\n\n if (alias === command._name)\n throw new Error(\"Command alias can't be the same as its name\");\n const matchingCommand = this.parent?._findCommand(alias);\n if (matchingCommand) {\n // c.f. _registerCommand\n const existingCmd = [matchingCommand.name()]\n .concat(matchingCommand.aliases())\n .join('|');\n throw new Error(\n `cannot add alias '${alias}' to command '${this.name()}' as already have command '${existingCmd}'`,\n );\n }\n\n command._aliases.push(alias);\n return this;\n }\n\n /**\n * Set aliases for the command.\n *\n * Only the first alias is shown in the auto-generated help.\n *\n * @param {string[]} [aliases]\n * @return {(string[]|Command)}\n */\n\n aliases(aliases) {\n // Getter for the array of aliases is the main reason for having aliases() in addition to alias().\n if (aliases === undefined) return this._aliases;\n\n aliases.forEach((alias) => this.alias(alias));\n return this;\n }\n\n /**\n * Set / get the command usage `str`.\n *\n * @param {string} [str]\n * @return {(string|Command)}\n */\n\n usage(str) {\n if (str === undefined) {\n if (this._usage) return this._usage;\n\n const args = this.registeredArguments.map((arg) => {\n return humanReadableArgName(arg);\n });\n return []\n .concat(\n this.options.length || this._helpOption !== null ? '[options]' : [],\n this.commands.length ? '[command]' : [],\n this.registeredArguments.length ? args : [],\n )\n .join(' ');\n }\n\n this._usage = str;\n return this;\n }\n\n /**\n * Get or set the name of the command.\n *\n * @param {string} [str]\n * @return {(string|Command)}\n */\n\n name(str) {\n if (str === undefined) return this._name;\n this._name = str;\n return this;\n }\n\n /**\n * Set/get the help group heading for this subcommand in parent command's help.\n *\n * @param {string} [heading]\n * @return {Command | string}\n */\n\n helpGroup(heading) {\n if (heading === undefined) return this._helpGroupHeading ?? '';\n this._helpGroupHeading = heading;\n return this;\n }\n\n /**\n * Set/get the default help group heading for subcommands added to this command.\n * (This does not override a group set directly on the subcommand using .helpGroup().)\n *\n * @example\n * program.commandsGroup('Development Commands:);\n * program.command('watch')...\n * program.command('lint')...\n * ...\n *\n * @param {string} [heading]\n * @returns {Command | string}\n */\n commandsGroup(heading) {\n if (heading === undefined) return this._defaultCommandGroup ?? '';\n this._defaultCommandGroup = heading;\n return this;\n }\n\n /**\n * Set/get the default help group heading for options added to this command.\n * (This does not override a group set directly on the option using .helpGroup().)\n *\n * @example\n * program\n * .optionsGroup('Development Options:')\n * .option('-d, --debug', 'output extra debugging')\n * .option('-p, --profile', 'output profiling information')\n *\n * @param {string} [heading]\n * @returns {Command | string}\n */\n optionsGroup(heading) {\n if (heading === undefined) return this._defaultOptionGroup ?? '';\n this._defaultOptionGroup = heading;\n return this;\n }\n\n /**\n * @param {Option} option\n * @private\n */\n _initOptionGroup(option) {\n if (this._defaultOptionGroup && !option.helpGroupHeading)\n option.helpGroup(this._defaultOptionGroup);\n }\n\n /**\n * @param {Command} cmd\n * @private\n */\n _initCommandGroup(cmd) {\n if (this._defaultCommandGroup && !cmd.helpGroup())\n cmd.helpGroup(this._defaultCommandGroup);\n }\n\n /**\n * Set the name of the command from script filename, such as process.argv[1],\n * or require.main.filename, or __filename.\n *\n * (Used internally and public although not documented in README.)\n *\n * @example\n * program.nameFromFilename(require.main.filename);\n *\n * @param {string} filename\n * @return {Command}\n */\n\n nameFromFilename(filename) {\n this._name = path.basename(filename, path.extname(filename));\n\n return this;\n }\n\n /**\n * Get or set the directory for searching for executable subcommands of this command.\n *\n * @example\n * program.executableDir(__dirname);\n * // or\n * program.executableDir('subcommands');\n *\n * @param {string} [path]\n * @return {(string|null|Command)}\n */\n\n executableDir(path) {\n if (path === undefined) return this._executableDir;\n this._executableDir = path;\n return this;\n }\n\n /**\n * Return program help documentation.\n *\n * @param {{ error: boolean }} [contextOptions] - pass {error:true} to wrap for stderr instead of stdout\n * @return {string}\n */\n\n helpInformation(contextOptions) {\n const helper = this.createHelp();\n const context = this._getOutputContext(contextOptions);\n helper.prepareContext({\n error: context.error,\n helpWidth: context.helpWidth,\n outputHasColors: context.hasColors,\n });\n const text = helper.formatHelp(this, helper);\n if (context.hasColors) return text;\n return this._outputConfiguration.stripColor(text);\n }\n\n /**\n * @typedef HelpContext\n * @type {object}\n * @property {boolean} error\n * @property {number} helpWidth\n * @property {boolean} hasColors\n * @property {function} write - includes stripColor if needed\n *\n * @returns {HelpContext}\n * @private\n */\n\n _getOutputContext(contextOptions) {\n contextOptions = contextOptions || {};\n const error = !!contextOptions.error;\n let baseWrite;\n let hasColors;\n let helpWidth;\n if (error) {\n baseWrite = (str) => this._outputConfiguration.writeErr(str);\n hasColors = this._outputConfiguration.getErrHasColors();\n helpWidth = this._outputConfiguration.getErrHelpWidth();\n } else {\n baseWrite = (str) => this._outputConfiguration.writeOut(str);\n hasColors = this._outputConfiguration.getOutHasColors();\n helpWidth = this._outputConfiguration.getOutHelpWidth();\n }\n const write = (str) => {\n if (!hasColors) str = this._outputConfiguration.stripColor(str);\n return baseWrite(str);\n };\n return { error, write, hasColors, helpWidth };\n }\n\n /**\n * Output help information for this command.\n *\n * Outputs built-in help, and custom text added using `.addHelpText()`.\n *\n * @param {{ error: boolean } | Function} [contextOptions] - pass {error:true} to write to stderr instead of stdout\n */\n\n outputHelp(contextOptions) {\n let deprecatedCallback;\n if (typeof contextOptions === 'function') {\n deprecatedCallback = contextOptions;\n contextOptions = undefined;\n }\n\n const outputContext = this._getOutputContext(contextOptions);\n /** @type {HelpTextEventContext} */\n const eventContext = {\n error: outputContext.error,\n write: outputContext.write,\n command: this,\n };\n\n this._getCommandAndAncestors()\n .reverse()\n .forEach((command) => command.emit('beforeAllHelp', eventContext));\n this.emit('beforeHelp', eventContext);\n\n let helpInformation = this.helpInformation({ error: outputContext.error });\n if (deprecatedCallback) {\n helpInformation = deprecatedCallback(helpInformation);\n if (\n typeof helpInformation !== 'string' &&\n !Buffer.isBuffer(helpInformation)\n ) {\n throw new Error('outputHelp callback must return a string or a Buffer');\n }\n }\n outputContext.write(helpInformation);\n\n if (this._getHelpOption()?.long) {\n this.emit(this._getHelpOption().long); // deprecated\n }\n this.emit('afterHelp', eventContext);\n this._getCommandAndAncestors().forEach((command) =>\n command.emit('afterAllHelp', eventContext),\n );\n }\n\n /**\n * You can pass in flags and a description to customise the built-in help option.\n * Pass in false to disable the built-in help option.\n *\n * @example\n * program.helpOption('-?, --help' 'show help'); // customise\n * program.helpOption(false); // disable\n *\n * @param {(string | boolean)} flags\n * @param {string} [description]\n * @return {Command} `this` command for chaining\n */\n\n helpOption(flags, description) {\n // Support enabling/disabling built-in help option.\n if (typeof flags === 'boolean') {\n if (flags) {\n if (this._helpOption === null) this._helpOption = undefined; // reenable\n if (this._defaultOptionGroup) {\n // make the option to store the group\n this._initOptionGroup(this._getHelpOption());\n }\n } else {\n this._helpOption = null; // disable\n }\n return this;\n }\n\n // Customise flags and description.\n this._helpOption = this.createOption(\n flags ?? '-h, --help',\n description ?? 'display help for command',\n );\n // init group unless lazy create\n if (flags || description) this._initOptionGroup(this._helpOption);\n\n return this;\n }\n\n /**\n * Lazy create help option.\n * Returns null if has been disabled with .helpOption(false).\n *\n * @returns {(Option | null)} the help option\n * @package\n */\n _getHelpOption() {\n // Lazy create help option on demand.\n if (this._helpOption === undefined) {\n this.helpOption(undefined, undefined);\n }\n return this._helpOption;\n }\n\n /**\n * Supply your own option to use for the built-in help option.\n * This is an alternative to using helpOption() to customise the flags and description etc.\n *\n * @param {Option} option\n * @return {Command} `this` command for chaining\n */\n addHelpOption(option) {\n this._helpOption = option;\n this._initOptionGroup(option);\n return this;\n }\n\n /**\n * Output help information and exit.\n *\n * Outputs built-in help, and custom text added using `.addHelpText()`.\n *\n * @param {{ error: boolean }} [contextOptions] - pass {error:true} to write to stderr instead of stdout\n */\n\n help(contextOptions) {\n this.outputHelp(contextOptions);\n let exitCode = Number(process.exitCode ?? 0); // process.exitCode does allow a string or an integer, but we prefer just a number\n if (\n exitCode === 0 &&\n contextOptions &&\n typeof contextOptions !== 'function' &&\n contextOptions.error\n ) {\n exitCode = 1;\n }\n // message: do not have all displayed text available so only passing placeholder.\n this._exit(exitCode, 'commander.help', '(outputHelp)');\n }\n\n /**\n * // Do a little typing to coordinate emit and listener for the help text events.\n * @typedef HelpTextEventContext\n * @type {object}\n * @property {boolean} error\n * @property {Command} command\n * @property {function} write\n */\n\n /**\n * Add additional text to be displayed with the built-in help.\n *\n * Position is 'before' or 'after' to affect just this command,\n * and 'beforeAll' or 'afterAll' to affect this command and all its subcommands.\n *\n * @param {string} position - before or after built-in help\n * @param {(string | Function)} text - string to add, or a function returning a string\n * @return {Command} `this` command for chaining\n */\n\n addHelpText(position, text) {\n const allowedValues = ['beforeAll', 'before', 'after', 'afterAll'];\n if (!allowedValues.includes(position)) {\n throw new Error(`Unexpected value for position to addHelpText.\nExpecting one of '${allowedValues.join(\"', '\")}'`);\n }\n\n const helpEvent = `${position}Help`;\n this.on(helpEvent, (/** @type {HelpTextEventContext} */ context) => {\n let helpStr;\n if (typeof text === 'function') {\n helpStr = text({ error: context.error, command: context.command });\n } else {\n helpStr = text;\n }\n // Ignore falsy value when nothing to output.\n if (helpStr) {\n context.write(`${helpStr}\\n`);\n }\n });\n return this;\n }\n\n /**\n * Output help information if help flags specified\n *\n * @param {Array} args - array of options to search for help flags\n * @private\n */\n\n _outputHelpIfRequested(args) {\n const helpOption = this._getHelpOption();\n const helpRequested = helpOption && args.find((arg) => helpOption.is(arg));\n if (helpRequested) {\n this.outputHelp();\n // (Do not have all displayed text available so only passing placeholder.)\n this._exit(0, 'commander.helpDisplayed', '(outputHelp)');\n }\n }\n}\n\n/**\n * Scan arguments and increment port number for inspect calls (to avoid conflicts when spawning new command).\n *\n * @param {string[]} args - array of arguments from node.execArgv\n * @returns {string[]}\n * @private\n */\n\nfunction incrementNodeInspectorPort(args) {\n // Testing for these options:\n // --inspect[=[host:]port]\n // --inspect-brk[=[host:]port]\n // --inspect-port=[host:]port\n return args.map((arg) => {\n if (!arg.startsWith('--inspect')) {\n return arg;\n }\n let debugOption;\n let debugHost = '127.0.0.1';\n let debugPort = '9229';\n let match;\n if ((match = arg.match(/^(--inspect(-brk)?)$/)) !== null) {\n // e.g. --inspect\n debugOption = match[1];\n } else if (\n (match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+)$/)) !== null\n ) {\n debugOption = match[1];\n if (/^\\d+$/.test(match[3])) {\n // e.g. --inspect=1234\n debugPort = match[3];\n } else {\n // e.g. --inspect=localhost\n debugHost = match[3];\n }\n } else if (\n (match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+):(\\d+)$/)) !== null\n ) {\n // e.g. --inspect=localhost:1234\n debugOption = match[1];\n debugHost = match[3];\n debugPort = match[4];\n }\n\n if (debugOption && debugPort !== '0') {\n return `${debugOption}=${debugHost}:${parseInt(debugPort) + 1}`;\n }\n return arg;\n });\n}\n\n/**\n * @returns {boolean | undefined}\n * @package\n */\nfunction useColor() {\n // Test for common conventions.\n // NB: the observed behaviour is in combination with how author adds color! For example:\n // - we do not test NODE_DISABLE_COLORS, but util:styletext does\n // - we do test NO_COLOR, but Chalk does not\n //\n // References:\n // https://no-color.org\n // https://bixense.com/clicolors/\n // https://github.com/nodejs/node/blob/0a00217a5f67ef4a22384cfc80eb6dd9a917fdc1/lib/internal/tty.js#L109\n // https://github.com/chalk/supports-color/blob/c214314a14bcb174b12b3014b2b0a8de375029ae/index.js#L33\n // (https://force-color.org recent web page from 2023, does not match major javascript implementations)\n\n if (\n process.env.NO_COLOR ||\n process.env.FORCE_COLOR === '0' ||\n process.env.FORCE_COLOR === 'false'\n )\n return false;\n if (process.env.FORCE_COLOR || process.env.CLICOLOR_FORCE !== undefined)\n return true;\n return undefined;\n}\n\nexports.Command = Command;\nexports.useColor = useColor; // exporting for tests\n",
|
|
11
|
+
"const { Argument } = require('./lib/argument.js');\nconst { Command } = require('./lib/command.js');\nconst { CommanderError, InvalidArgumentError } = require('./lib/error.js');\nconst { Help } = require('./lib/help.js');\nconst { Option } = require('./lib/option.js');\n\nexports.program = new Command();\n\nexports.createCommand = (name) => new Command(name);\nexports.createOption = (flags, description) => new Option(flags, description);\nexports.createArgument = (name, description) => new Argument(name, description);\n\n/**\n * Expose classes\n */\n\nexports.Command = Command;\nexports.Option = Option;\nexports.Argument = Argument;\nexports.Help = Help;\n\nexports.CommanderError = CommanderError;\nexports.InvalidArgumentError = InvalidArgumentError;\nexports.InvalidOptionArgumentError = InvalidArgumentError; // Deprecated\n",
|
|
12
|
+
"/**\n * Cross-bundle singleton primitive.\n *\n * Each tool bundles its own copy of @uipath/common, so module-level\n * variables are isolated per bundle. This utility uses Symbol.for()\n * keyed slots on globalThis to share state across all bundles.\n *\n * Usage:\n *\n * // Class — name derived from constructor:\n * const logger = singleton(SimpleLogger);\n * logger.getOrInit(() => new SimpleLogger());\n *\n * // Type alias or union — explicit name:\n * const format = singleton<OutputFormat>(\"OutputFormat\");\n * format.set(\"json\");\n * format.get(\"table\"); // \"json\" (value takes precedence)\n */\n\nconst PREFIX = \"@uipath/common/\";\nconst _g = globalThis as Record<symbol, unknown>;\n\nexport interface Singleton<T> {\n /** Read the current value, or `fallback` when unset. */\n get(fallback?: T): T | undefined;\n /** Write a new value. */\n set(value: T): void;\n /** Reset to undefined. */\n clear(): void;\n /**\n * Get the existing value, or initialise it with `factory()`.\n * An optional `guard` validates existing values via duck-typing\n * (needed because `instanceof` fails across bundles).\n */\n getOrInit(factory: () => T, guard?: (value: object) => boolean): T;\n}\n\n/**\n * Create a typed singleton backed by `globalThis[Symbol.for(key)]`.\n *\n * @overload Pass a class constructor to derive the key from its name.\n * @overload Pass a string key for non-class types (type aliases, unions).\n *\n * The key is auto-prefixed with `@uipath/common/`.\n */\n// biome-ignore lint/suspicious/noExplicitAny: must accept any constructor shape\nexport function singleton<T>(\n ctor: abstract new (...args: any[]) => T,\n): Singleton<T>;\nexport function singleton<T>(name: string): Singleton<T>;\n// biome-ignore lint/suspicious/noExplicitAny: overload implementation\nexport function singleton<T>(\n ctorOrName: (abstract new (...args: any[]) => T) | string,\n): Singleton<T> {\n const name = typeof ctorOrName === \"string\" ? ctorOrName : ctorOrName.name;\n const key = Symbol.for(PREFIX + name);\n return {\n get(fallback?: T): T | undefined {\n return (_g[key] as T | undefined) ?? fallback;\n },\n set(value: T) {\n _g[key] = value;\n },\n clear() {\n delete _g[key];\n },\n getOrInit(factory: () => T, guard?: (value: object) => boolean): T {\n const existing = _g[key];\n if (existing != null && typeof existing === \"object\") {\n if (!guard || guard(existing)) {\n return existing as T;\n }\n }\n const instance = factory();\n _g[key] = instance;\n return instance;\n },\n };\n}\n",
|
|
13
|
+
"import { singleton } from \"../singleton.js\";\nimport type { TelemetryProperties } from \"./telemetry-service.js\";\n\n// Base telemetry properties (custom dimensions) attached to every event.\n// Stored on a Symbol.for()-keyed globalThis slot so all bundled copies of\n// @uipath/common — the CLI host and every tool bundle — share one source of\n// truth. The CLI host populates it at startup (app version, detected agent,\n// and the authenticated user/tenant/organization); tool bundles read the same\n// slot through the shared TelemetryService.\n//\n// This lives in its own module (rather than alongside the AppInsights provider)\n// so that TelemetryService can merge these props for ANY provider without\n// importing the AppInsights-specific file — which would otherwise create a\n// circular dependency.\nconst telemetryPropsSlot = singleton<TelemetryProperties | undefined>(\n \"TelemetryDefaultProps\",\n);\n\n/**\n * Merge `properties` into the shared global base properties.\n * Existing keys are preserved unless overwritten by `properties`, so callers\n * can contribute base props incrementally (e.g. agent first, then auth context).\n */\nexport function setGlobalTelemetryProperties(\n properties: TelemetryProperties,\n): void {\n const existing = getGlobalTelemetryProperties();\n telemetryPropsSlot.set({ ...existing, ...properties });\n}\n\nexport function getGlobalTelemetryProperties():\n | TelemetryProperties\n | undefined {\n return telemetryPropsSlot.get();\n}\n",
|
|
14
|
+
"import { singleton } from \"./singleton.js\";\nimport { getGlobalTelemetryProperties } from \"./telemetry/global-telemetry-properties.js\";\nimport { isTelemetryDisabled } from \"./telemetry/telemetry-config.js\";\n\nexport interface SdkUserAgentPackageInfo {\n name: string;\n version: string;\n}\n\nexport type SdkHttpHeaders = Record<string, string>;\n\ninterface GeneratedRequestInit {\n headers?: unknown;\n}\n\ntype GeneratedInitOverride = GeneratedRequestInit | undefined;\ntype GeneratedInitOverrideFunction = (requestContext: {\n init: GeneratedRequestInit;\n context: unknown;\n}) => Promise<GeneratedInitOverride>;\n\ntype GeneratedRequestFunction = (\n this: unknown,\n context: unknown,\n initOverrides?: GeneratedInitOverride | GeneratedInitOverrideFunction,\n) => Promise<unknown>;\n\ninterface PatchableGeneratedPrototype {\n request?: GeneratedRequestFunction;\n [key: symbol]: unknown;\n}\n\n/**\n * Adds the SDK headers to a request's existing header map and returns the\n * updated map. The generated runtimes always hand us a plain-object header map,\n * so that is the only shape we need to handle.\n */\ntype SdkHeaderForwarder = (\n headers: SdkHttpHeaders | undefined,\n) => SdkHttpHeaders;\n\nconst USER_AGENT_HEADER = \"User-Agent\";\nconst CODING_AGENT_HEADER = \"x-coding-agent-info\";\nconst AGENT_PROPERTY = \"agent\";\n// JSON field name inside the `x-coding-agent-info` header.\nconst CODING_AGENT_PROPERTY = \"CodingAgent\";\nconst sdkUserAgentHostToken = singleton<string | undefined>(\n \"SdkUserAgentHostToken\",\n);\n\nfunction userAgentPatchKey(userAgent: string): symbol {\n return Symbol.for(`@uipath/common/sdk-user-agent/${userAgent}`);\n}\n\nfunction codingAgentPatchKey(): symbol {\n return Symbol.for(\"@uipath/common/sdk-coding-agent\");\n}\n\nfunction splitUserAgentTokens(value: string | null | undefined): string[] {\n return value?.trim().split(/\\s+/).filter(Boolean) ?? [];\n}\n\nfunction appendUserAgentToken(\n value: string | null | undefined,\n userAgent: string,\n): string {\n const tokens = splitUserAgentTokens(value);\n const seen = new Set(tokens);\n\n for (const token of splitUserAgentTokens(userAgent)) {\n if (!seen.has(token)) {\n tokens.push(token);\n seen.add(token);\n }\n }\n\n return tokens.join(\" \");\n}\n\nfunction getEffectiveUserAgent(userAgent: string): string {\n return appendUserAgentToken(sdkUserAgentHostToken.get(), userAgent);\n}\n\nfunction getHeaderName(\n headers: SdkHttpHeaders,\n headerName: string,\n): string | undefined {\n return Object.keys(headers).find(\n (key) => key.toLowerCase() === headerName.toLowerCase(),\n );\n}\n\n/**\n * The telemetry `agent` (e.g. `codex`) captured by the host, read from the\n * shared global telemetry properties. Its value is a JSON string; it could be enriched with version\n * and other details in future.\n *\n * honouring `UIPATH_TELEMETRY_DISABLED` here\n */\nfunction getSdkAgentInfo(): string | undefined {\n if (isTelemetryDisabled()) {\n return undefined;\n }\n\n const agent = getGlobalTelemetryProperties()?.[AGENT_PROPERTY];\n return agent === undefined ? undefined : String(agent);\n}\n\nexport function getSdkUserAgentToken(pkg: SdkUserAgentPackageInfo): string {\n const packageName = pkg.name.replace(/^@uipath\\//, \"\");\n return getEffectiveUserAgent(`${packageName}/${pkg.version}`);\n}\n\nexport function setSdkUserAgentHostToken(token: string | undefined): void {\n if (token === undefined) {\n sdkUserAgentHostToken.clear();\n return;\n }\n\n sdkUserAgentHostToken.set(token);\n}\n\n/**\n * Forwards the SDK `User-Agent` token, prefixed with the host token (e.g.\n * `uip/1.1.0`) when one is configured. Appends to any existing value without\n * duplicating tokens and preserves the caller's header casing.\n */\nexport function addSdkUserAgentHeader(\n headers: SdkHttpHeaders | undefined,\n userAgent: string,\n): SdkHttpHeaders {\n const result = { ...(headers ?? {}) };\n const headerName = getHeaderName(result, USER_AGENT_HEADER);\n\n result[headerName ?? USER_AGENT_HEADER] = appendUserAgentToken(\n headerName ? result[headerName] : undefined,\n getEffectiveUserAgent(userAgent),\n );\n\n return result;\n}\n\n/**\n * Forwards the telemetry `agent` via `x-coding-agent-info` as a JSON envelope —\n * `{\"CodingAgent\":\"<agent>\"}`; preserves the caller's header casing.\n * Leaves the header absent when no agent is available.\n */\nexport function addSdkCodingAgentHeader(\n headers: SdkHttpHeaders | undefined,\n agent: string | undefined = getSdkAgentInfo(),\n): SdkHttpHeaders {\n const result = { ...(headers ?? {}) };\n\n if (agent === undefined) {\n return result;\n }\n\n const headerName = getHeaderName(result, CODING_AGENT_HEADER);\n result[headerName ?? CODING_AGENT_HEADER] = JSON.stringify({\n [CODING_AGENT_PROPERTY]: agent,\n });\n\n return result;\n}\n\nfunction asHeaderRecord(headers: unknown): SdkHttpHeaders {\n return typeof headers === \"object\" && headers !== null\n ? { ...(headers as SdkHttpHeaders) }\n : {};\n}\n\nfunction withForwardedHeadersInitOverride(\n initOverrides: GeneratedInitOverride | GeneratedInitOverrideFunction,\n forward: SdkHeaderForwarder,\n): GeneratedInitOverrideFunction {\n return async (requestContext) => {\n const initWithHeaders = {\n ...requestContext.init,\n headers: forward(asHeaderRecord(requestContext.init.headers)),\n };\n const override =\n typeof initOverrides === \"function\"\n ? await initOverrides({\n ...requestContext,\n init: initWithHeaders,\n })\n : initOverrides;\n\n return {\n ...(override ?? {}),\n headers: forward(\n asHeaderRecord(override?.headers ?? initWithHeaders.headers),\n ),\n };\n };\n}\n\n/**\n * Patch a generated `BaseAPI` so every request runs `forward` over its headers.\n * Idempotent per `patchKey`. Shared by the public installers below so the\n * request-wrapping plumbing lives in one place.\n */\nfunction installRequestHeaderForwarding(\n BaseApiClass: { prototype: unknown },\n patchKey: symbol,\n forward: SdkHeaderForwarder,\n): void {\n const prototype =\n BaseApiClass.prototype as unknown as PatchableGeneratedPrototype;\n\n if (prototype[patchKey]) {\n return;\n }\n\n if (typeof prototype.request !== \"function\") {\n throw new Error(\"Generated BaseAPI request function not found.\");\n }\n\n const originalRequest = prototype.request;\n prototype.request = function requestWithForwardedHeaders(\n context,\n initOverrides,\n ) {\n return originalRequest.call(\n this,\n context,\n withForwardedHeadersInitOverride(initOverrides, forward),\n );\n };\n\n Object.defineProperty(prototype, patchKey, {\n value: true,\n });\n}\n\nexport function installSdkUserAgentHeader(\n BaseApiClass: { prototype: unknown },\n userAgent: string,\n): void {\n installRequestHeaderForwarding(\n BaseApiClass,\n userAgentPatchKey(userAgent),\n (headers) => addSdkUserAgentHeader(headers, userAgent),\n );\n}\n\n// NOTE: This installer and `installSdkUserAgentHeader` both forward a header\n// onto generated SDK requests and share `installRequestHeaderForwarding`. They\n// are intentionally kept separate so `installSdkUserAgentHeader` stays\n// single-purpose (User-Agent only) and each SDK opts into the agent header\n// explicitly. They should be combined into a single header-forwarding installer\n// once we settle on the unified opt-in API.\nexport function installSdkCodingAgentHeader(BaseApiClass: {\n prototype: unknown;\n}): void {\n installRequestHeaderForwarding(\n BaseApiClass,\n codingAgentPatchKey(),\n (headers) => addSdkCodingAgentHeader(headers),\n );\n}\n",
|
|
15
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport const BASE_PATH = \"https://alpha.uipath.com/uipattycyrhx/abizon_1/automationsolutions_\".replace(/\\/+$/, \"\");\n\nexport interface ConfigurationParameters {\n basePath?: string; // override base path\n fetchApi?: FetchAPI; // override for fetch implementation\n middleware?: Middleware[]; // middleware to apply before/after fetch requests\n queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings\n username?: string; // parameter for basic security\n password?: string; // parameter for basic security\n apiKey?: string | Promise<string> | ((name: string) => string | Promise<string>); // parameter for apiKey security\n accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string | Promise<string>); // parameter for oauth2 security\n headers?: HTTPHeaders; //header params we want to use on every request\n credentials?: RequestCredentials; //value for the credentials param we want to use on each request\n}\n\nexport class Configuration {\n constructor(private configuration: ConfigurationParameters = {}) {}\n\n set config(configuration: Configuration) {\n this.configuration = configuration;\n }\n\n get basePath(): string {\n return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH;\n }\n\n get fetchApi(): FetchAPI | undefined {\n return this.configuration.fetchApi;\n }\n\n get middleware(): Middleware[] {\n return this.configuration.middleware || [];\n }\n\n get queryParamsStringify(): (params: HTTPQuery) => string {\n return this.configuration.queryParamsStringify || querystring;\n }\n\n get username(): string | undefined {\n return this.configuration.username;\n }\n\n get password(): string | undefined {\n return this.configuration.password;\n }\n\n get apiKey(): ((name: string) => string | Promise<string>) | undefined {\n const apiKey = this.configuration.apiKey;\n if (apiKey) {\n return typeof apiKey === 'function' ? apiKey : () => apiKey;\n }\n return undefined;\n }\n\n get accessToken(): ((name?: string, scopes?: string[]) => string | Promise<string>) | undefined {\n const accessToken = this.configuration.accessToken;\n if (accessToken) {\n return typeof accessToken === 'function' ? accessToken : async () => accessToken;\n }\n return undefined;\n }\n\n get headers(): HTTPHeaders | undefined {\n return this.configuration.headers;\n }\n\n get credentials(): RequestCredentials | undefined {\n return this.configuration.credentials;\n }\n}\n\nexport const DefaultConfig = new Configuration();\n\n/**\n * This is the base class for all generated API classes.\n */\nexport class BaseAPI {\n\n private static readonly jsonRegex = new RegExp('^(:?application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(:?;.*)?$', 'i');\n private middleware: Middleware[];\n\n constructor(protected configuration = DefaultConfig) {\n this.middleware = configuration.middleware;\n }\n\n withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]) {\n const next = this.clone<T>();\n next.middleware = next.middleware.concat(...middlewares);\n return next;\n }\n\n withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>) {\n const middlewares = preMiddlewares.map((pre) => ({ pre }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>) {\n const middlewares = postMiddlewares.map((post) => ({ post }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n /**\n * Check if the given MIME is a JSON MIME.\n * JSON MIME examples:\n * application/json\n * application/json; charset=UTF8\n * APPLICATION/JSON\n * application/vnd.company+json\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\n * @return True if the given MIME is JSON, false otherwise.\n */\n protected isJsonMime(mime: string | null | undefined): boolean {\n if (!mime) {\n return false;\n }\n return BaseAPI.jsonRegex.test(mime);\n }\n\n protected async request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise<Response> {\n const { url, init } = await this.createFetchParams(context, initOverrides);\n const response = await this.fetchApi(url, init);\n if (response && (response.status >= 200 && response.status < 300)) {\n return response;\n }\n throw new ResponseError(response, 'Response returned an error code');\n }\n\n private async createFetchParams(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction) {\n let url = this.configuration.basePath + context.path;\n if (context.query !== undefined && Object.keys(context.query).length !== 0) {\n // only add the querystring to the URL if there are query parameters.\n // this is done to avoid urls ending with a \"?\" character which buggy webservers\n // do not handle correctly sometimes.\n url += '?' + this.configuration.queryParamsStringify(context.query);\n }\n\n const headers = Object.assign({}, this.configuration.headers, context.headers);\n Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {});\n\n const initOverrideFn =\n typeof initOverrides === \"function\"\n ? initOverrides\n : async () => initOverrides;\n\n const initParams = {\n method: context.method,\n headers,\n body: context.body,\n credentials: this.configuration.credentials,\n };\n\n const overriddenInit: RequestInit = {\n ...initParams,\n ...(await initOverrideFn({\n init: initParams,\n context,\n }))\n };\n\n let body: any;\n if (isFormData(overriddenInit.body)\n || (overriddenInit.body instanceof URLSearchParams)\n || isBlob(overriddenInit.body)) {\n body = overriddenInit.body;\n } else if (this.isJsonMime(headers['Content-Type'])) {\n body = JSON.stringify(overriddenInit.body);\n } else {\n body = overriddenInit.body;\n }\n\n const init: RequestInit = {\n ...overriddenInit,\n body\n };\n\n return { url, init };\n }\n\n private fetchApi = async (url: string, init: RequestInit) => {\n let fetchParams = { url, init };\n for (const middleware of this.middleware) {\n if (middleware.pre) {\n fetchParams = await middleware.pre({\n fetch: this.fetchApi,\n ...fetchParams,\n }) || fetchParams;\n }\n }\n let response: Response | undefined = undefined;\n try {\n response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init);\n } catch (e) {\n for (const middleware of this.middleware) {\n if (middleware.onError) {\n response = await middleware.onError({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n error: e,\n response: response ? response.clone() : undefined,\n }) || response;\n }\n }\n if (response === undefined) {\n if (e instanceof Error) {\n throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response');\n } else {\n throw e;\n }\n }\n }\n for (const middleware of this.middleware) {\n if (middleware.post) {\n response = await middleware.post({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n response: response.clone(),\n }) || response;\n }\n }\n return response;\n }\n\n /**\n * Create a shallow clone of `this` by constructing a new instance\n * and then shallow cloning data members.\n */\n private clone<T extends BaseAPI>(this: T): T {\n const constructor = this.constructor as any;\n const next = new constructor(this.configuration);\n next.middleware = this.middleware.slice();\n return next;\n }\n};\n\nfunction isBlob(value: any): value is Blob {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n\nfunction isFormData(value: any): value is FormData {\n return typeof FormData !== \"undefined\" && value instanceof FormData;\n}\n\nexport class ResponseError extends Error {\n override name: \"ResponseError\" = \"ResponseError\";\n constructor(public response: Response, msg?: string) {\n super(msg);\n }\n}\n\nexport class FetchError extends Error {\n override name: \"FetchError\" = \"FetchError\";\n constructor(public cause: Error, msg?: string) {\n super(msg);\n }\n}\n\nexport class RequiredError extends Error {\n override name: \"RequiredError\" = \"RequiredError\";\n constructor(public field: string, msg?: string) {\n super(msg);\n }\n}\n\nexport const COLLECTION_FORMATS = {\n csv: \",\",\n ssv: \" \",\n tsv: \"\\t\",\n pipes: \"|\",\n};\n\nexport type FetchAPI = WindowOrWorkerGlobalScope['fetch'];\n\nexport type Json = any;\nexport type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD';\nexport type HTTPHeaders = { [key: string]: string };\nexport type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery };\nexport type HTTPBody = Json | FormData | URLSearchParams;\nexport type HTTPRequestInit = { headers?: HTTPHeaders; method: HTTPMethod; credentials?: RequestCredentials; body?: HTTPBody };\nexport type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';\n\nexport type InitOverrideFunction = (requestContext: { init: HTTPRequestInit, context: RequestOpts }) => Promise<RequestInit>\n\nexport interface FetchParams {\n url: string;\n init: RequestInit;\n}\n\nexport interface RequestOpts {\n path: string;\n method: HTTPMethod;\n headers: HTTPHeaders;\n query?: HTTPQuery;\n body?: HTTPBody;\n}\n\nexport function querystring(params: HTTPQuery, prefix: string = ''): string {\n return Object.keys(params)\n .map(key => querystringSingleKey(key, params[key], prefix))\n .filter(part => part.length > 0)\n .join('&');\n}\n\nfunction querystringSingleKey(key: string, value: string | number | null | undefined | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery, keyPrefix: string = ''): string {\n const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key);\n if (value instanceof Array) {\n const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue)))\n .join(`&${encodeURIComponent(fullKey)}=`);\n return `${encodeURIComponent(fullKey)}=${multiValue}`;\n }\n if (value instanceof Set) {\n const valueAsArray = Array.from(value);\n return querystringSingleKey(key, valueAsArray, keyPrefix);\n }\n if (value instanceof Date) {\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`;\n }\n if (value instanceof Object) {\n return querystring(value as HTTPQuery, fullKey);\n }\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;\n}\n\nexport function exists(json: any, key: string) {\n const value = json[key];\n return value !== null && value !== undefined;\n}\n\nexport function mapValues(data: any, fn: (item: any) => any) {\n const result: { [key: string]: any } = {};\n for (const key of Object.keys(data)) {\n result[key] = fn(data[key]);\n }\n return result;\n}\n\nexport function canConsumeForm(consumes: Consume[]): boolean {\n for (const consume of consumes) {\n if ('multipart/form-data' === consume.contentType) {\n return true;\n }\n }\n return false;\n}\n\nexport interface Consume {\n contentType: string;\n}\n\nexport interface RequestContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n}\n\nexport interface ResponseContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n response: Response;\n}\n\nexport interface ErrorContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n error: unknown;\n response?: Response;\n}\n\nexport interface Middleware {\n pre?(context: RequestContext): Promise<FetchParams | void>;\n post?(context: ResponseContext): Promise<Response | void>;\n onError?(context: ErrorContext): Promise<Response | void>;\n}\n\nexport interface ApiResponse<T> {\n raw: Response;\n value(): Promise<T>;\n}\n\nexport interface ResponseTransformer<T> {\n (json: any): T;\n}\n\nexport class JSONApiResponse<T> {\n constructor(public raw: Response, private transformer: ResponseTransformer<T> = (jsonValue: any) => jsonValue) {}\n\n async value(): Promise<T> {\n return this.transformer(await this.raw.json());\n }\n}\n\nexport class VoidApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<void> {\n return undefined;\n }\n}\n\nexport class BlobApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<Blob> {\n return await this.raw.blob();\n };\n}\n\nexport class TextApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<string> {\n return await this.raw.text();\n };\n}\n",
|
|
16
|
+
"import {\n getSdkUserAgentToken,\n installSdkUserAgentHeader,\n} from \"@uipath/common/sdk-user-agent\";\nimport { BaseAPI } from \"../generated/src/runtime.js\";\nimport pkg from \"../package.json\" with { type: \"json\" };\n\nexport const SDK_USER_AGENT = getSdkUserAgentToken(pkg);\n\ninstallSdkUserAgentHeader(BaseAPI, SDK_USER_AGENT);\n",
|
|
17
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ResponseDictionaryDto\n */\nexport interface ResponseDictionaryDto {\n /**\n * \n * @type {Array<string>}\n * @memberof ResponseDictionaryDto\n */\n keys?: Array<string> | null;\n /**\n * \n * @type {Array<string>}\n * @memberof ResponseDictionaryDto\n */\n values?: Array<string> | null;\n}\n\n/**\n * Check if a given object implements the ResponseDictionaryDto interface.\n */\nexport function instanceOfResponseDictionaryDto(value: object): value is ResponseDictionaryDto {\n return true;\n}\n\nexport function ResponseDictionaryDtoFromJSON(json: any): ResponseDictionaryDto {\n return ResponseDictionaryDtoFromJSONTyped(json, false);\n}\n\nexport function ResponseDictionaryDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): ResponseDictionaryDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'keys': json['keys'] == null ? undefined : json['keys'],\n 'values': json['values'] == null ? undefined : json['values'],\n };\n}\n\nexport function ResponseDictionaryDtoToJSON(json: any): ResponseDictionaryDto {\n return ResponseDictionaryDtoToJSONTyped(json, false);\n}\n\nexport function ResponseDictionaryDtoToJSONTyped(value?: ResponseDictionaryDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'keys': value['keys'],\n 'values': value['values'],\n };\n}\n\n",
|
|
18
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ResponseDictionaryDto } from './ResponseDictionaryDto';\nimport {\n ResponseDictionaryDtoFromJSON,\n ResponseDictionaryDtoFromJSONTyped,\n ResponseDictionaryDtoToJSON,\n ResponseDictionaryDtoToJSONTyped,\n} from './ResponseDictionaryDto';\n\n/**\n * \n * @export\n * @interface BlobFileAccessDto\n */\nexport interface BlobFileAccessDto {\n /**\n * \n * @type {string}\n * @memberof BlobFileAccessDto\n */\n uri: string;\n /**\n * \n * @type {string}\n * @memberof BlobFileAccessDto\n */\n verb: string;\n /**\n * \n * @type {ResponseDictionaryDto}\n * @memberof BlobFileAccessDto\n */\n headers?: ResponseDictionaryDto;\n}\n\n/**\n * Check if a given object implements the BlobFileAccessDto interface.\n */\nexport function instanceOfBlobFileAccessDto(value: object): value is BlobFileAccessDto {\n if (!('uri' in value) || value['uri'] === undefined) return false;\n if (!('verb' in value) || value['verb'] === undefined) return false;\n return true;\n}\n\nexport function BlobFileAccessDtoFromJSON(json: any): BlobFileAccessDto {\n return BlobFileAccessDtoFromJSONTyped(json, false);\n}\n\nexport function BlobFileAccessDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): BlobFileAccessDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'uri': json['uri'],\n 'verb': json['verb'],\n 'headers': json['headers'] == null ? undefined : ResponseDictionaryDtoFromJSON(json['headers']),\n };\n}\n\nexport function BlobFileAccessDtoToJSON(json: any): BlobFileAccessDto {\n return BlobFileAccessDtoToJSONTyped(json, false);\n}\n\nexport function BlobFileAccessDtoToJSONTyped(value?: BlobFileAccessDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'uri': value['uri'],\n 'verb': value['verb'],\n 'headers': ResponseDictionaryDtoToJSON(value['headers']),\n };\n}\n\n",
|
|
19
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface CreateConfigurationCommand\n */\nexport interface CreateConfigurationCommand {\n /**\n * \n * @type {string}\n * @memberof CreateConfigurationCommand\n */\n packageVersionKey: string;\n /**\n * \n * @type {string}\n * @memberof CreateConfigurationCommand\n */\n name?: string | null;\n}\n\n/**\n * Check if a given object implements the CreateConfigurationCommand interface.\n */\nexport function instanceOfCreateConfigurationCommand(value: object): value is CreateConfigurationCommand {\n if (!('packageVersionKey' in value) || value['packageVersionKey'] === undefined) return false;\n return true;\n}\n\nexport function CreateConfigurationCommandFromJSON(json: any): CreateConfigurationCommand {\n return CreateConfigurationCommandFromJSONTyped(json, false);\n}\n\nexport function CreateConfigurationCommandFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateConfigurationCommand {\n if (json == null) {\n return json;\n }\n return {\n \n 'packageVersionKey': json['packageVersionKey'],\n 'name': json['name'] == null ? undefined : json['name'],\n };\n}\n\nexport function CreateConfigurationCommandToJSON(json: any): CreateConfigurationCommand {\n return CreateConfigurationCommandToJSONTyped(json, false);\n}\n\nexport function CreateConfigurationCommandToJSONTyped(value?: CreateConfigurationCommand | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'packageVersionKey': value['packageVersionKey'],\n 'name': value['name'],\n };\n}\n\n",
|
|
20
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const DeploymentActivationStatus = {\n None: 'None',\n Active: 'Active',\n Inactive: 'Inactive',\n ActivationFailed: 'ActivationFailed',\n DeactivationFailed: 'DeactivationFailed',\n ReadyToActivate: 'ReadyToActivate',\n NeedsSetupToActivate: 'NeedsSetupToActivate'\n} as const;\nexport type DeploymentActivationStatus = typeof DeploymentActivationStatus[keyof typeof DeploymentActivationStatus];\n\n\nexport function instanceOfDeploymentActivationStatus(value: any): boolean {\n for (const key in DeploymentActivationStatus) {\n if (Object.prototype.hasOwnProperty.call(DeploymentActivationStatus, key)) {\n if (DeploymentActivationStatus[key as keyof typeof DeploymentActivationStatus] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function DeploymentActivationStatusFromJSON(json: any): DeploymentActivationStatus {\n return DeploymentActivationStatusFromJSONTyped(json, false);\n}\n\nexport function DeploymentActivationStatusFromJSONTyped(json: any, ignoreDiscriminator: boolean): DeploymentActivationStatus {\n return json as DeploymentActivationStatus;\n}\n\nexport function DeploymentActivationStatusToJSON(value?: DeploymentActivationStatus | null): any {\n return value as any;\n}\n\nexport function DeploymentActivationStatusToJSONTyped(value: any, ignoreDiscriminator: boolean): DeploymentActivationStatus {\n return value as DeploymentActivationStatus;\n}\n\n",
|
|
21
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const OverwriteType = {\n Install: 'Install',\n Reference: 'Reference'\n} as const;\nexport type OverwriteType = typeof OverwriteType[keyof typeof OverwriteType];\n\n\nexport function instanceOfOverwriteType(value: any): boolean {\n for (const key in OverwriteType) {\n if (Object.prototype.hasOwnProperty.call(OverwriteType, key)) {\n if (OverwriteType[key as keyof typeof OverwriteType] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function OverwriteTypeFromJSON(json: any): OverwriteType {\n return OverwriteTypeFromJSONTyped(json, false);\n}\n\nexport function OverwriteTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): OverwriteType {\n return json as OverwriteType;\n}\n\nexport function OverwriteTypeToJSON(value?: OverwriteType | null): any {\n return value as any;\n}\n\nexport function OverwriteTypeToJSONTyped(value: any, ignoreDiscriminator: boolean): OverwriteType {\n return value as OverwriteType;\n}\n\n",
|
|
22
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { OverwriteType } from './OverwriteType';\nimport {\n OverwriteTypeFromJSON,\n OverwriteTypeFromJSONTyped,\n OverwriteTypeToJSON,\n OverwriteTypeToJSONTyped,\n} from './OverwriteType';\n\n/**\n * \n * @export\n * @interface Overwrite\n */\nexport interface Overwrite {\n /**\n * \n * @type {string}\n * @memberof Overwrite\n */\n resourceKey: string;\n /**\n * \n * @type {string}\n * @memberof Overwrite\n */\n resourceName: string;\n /**\n * \n * @type {string}\n * @memberof Overwrite\n */\n folderKey?: string | null;\n /**\n * \n * @type {string}\n * @memberof Overwrite\n */\n folderFullyQualifiedName?: string | null;\n /**\n * \n * @type {string}\n * @memberof Overwrite\n */\n folderPath?: string | null;\n /**\n * \n * @type {OverwriteType}\n * @memberof Overwrite\n */\n type: OverwriteType;\n}\n\n\n\n/**\n * Check if a given object implements the Overwrite interface.\n */\nexport function instanceOfOverwrite(value: object): value is Overwrite {\n if (!('resourceKey' in value) || value['resourceKey'] === undefined) return false;\n if (!('resourceName' in value) || value['resourceName'] === undefined) return false;\n if (!('type' in value) || value['type'] === undefined) return false;\n return true;\n}\n\nexport function OverwriteFromJSON(json: any): Overwrite {\n return OverwriteFromJSONTyped(json, false);\n}\n\nexport function OverwriteFromJSONTyped(json: any, ignoreDiscriminator: boolean): Overwrite {\n if (json == null) {\n return json;\n }\n return {\n \n 'resourceKey': json['resourceKey'],\n 'resourceName': json['resourceName'],\n 'folderKey': json['folderKey'] == null ? undefined : json['folderKey'],\n 'folderFullyQualifiedName': json['folderFullyQualifiedName'] == null ? undefined : json['folderFullyQualifiedName'],\n 'folderPath': json['folderPath'] == null ? undefined : json['folderPath'],\n 'type': OverwriteTypeFromJSON(json['type']),\n };\n}\n\nexport function OverwriteToJSON(json: any): Overwrite {\n return OverwriteToJSONTyped(json, false);\n}\n\nexport function OverwriteToJSONTyped(value?: Overwrite | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'resourceKey': value['resourceKey'],\n 'resourceName': value['resourceName'],\n 'folderKey': value['folderKey'],\n 'folderFullyQualifiedName': value['folderFullyQualifiedName'],\n 'folderPath': value['folderPath'],\n 'type': OverwriteTypeToJSON(value['type']),\n };\n}\n\n",
|
|
23
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { Overwrite } from './Overwrite';\nimport {\n OverwriteFromJSON,\n OverwriteFromJSONTyped,\n OverwriteToJSON,\n OverwriteToJSONTyped,\n} from './Overwrite';\n\n/**\n * \n * @export\n * @interface ResourceOverwrite\n */\nexport interface ResourceOverwrite {\n /**\n * \n * @type {string}\n * @memberof ResourceOverwrite\n */\n solutionResourceKey: string;\n /**\n * \n * @type {number}\n * @memberof ResourceOverwrite\n */\n reprovisioningIndex: number;\n /**\n * \n * @type {Overwrite}\n * @memberof ResourceOverwrite\n */\n overwrite?: Overwrite;\n}\n\n/**\n * Check if a given object implements the ResourceOverwrite interface.\n */\nexport function instanceOfResourceOverwrite(value: object): value is ResourceOverwrite {\n if (!('solutionResourceKey' in value) || value['solutionResourceKey'] === undefined) return false;\n if (!('reprovisioningIndex' in value) || value['reprovisioningIndex'] === undefined) return false;\n return true;\n}\n\nexport function ResourceOverwriteFromJSON(json: any): ResourceOverwrite {\n return ResourceOverwriteFromJSONTyped(json, false);\n}\n\nexport function ResourceOverwriteFromJSONTyped(json: any, ignoreDiscriminator: boolean): ResourceOverwrite {\n if (json == null) {\n return json;\n }\n return {\n \n 'solutionResourceKey': json['solutionResourceKey'],\n 'reprovisioningIndex': json['reprovisioningIndex'],\n 'overwrite': json['overwrite'] == null ? undefined : OverwriteFromJSON(json['overwrite']),\n };\n}\n\nexport function ResourceOverwriteToJSON(json: any): ResourceOverwrite {\n return ResourceOverwriteToJSONTyped(json, false);\n}\n\nexport function ResourceOverwriteToJSONTyped(value?: ResourceOverwrite | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'solutionResourceKey': value['solutionResourceKey'],\n 'reprovisioningIndex': value['reprovisioningIndex'],\n 'overwrite': OverwriteToJSON(value['overwrite']),\n };\n}\n\n",
|
|
24
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface RuntimeSetup\n */\nexport interface RuntimeSetup {\n /**\n * \n * @type {boolean}\n * @memberof RuntimeSetup\n */\n requireServerlessTemplate: boolean;\n}\n\n/**\n * Check if a given object implements the RuntimeSetup interface.\n */\nexport function instanceOfRuntimeSetup(value: object): value is RuntimeSetup {\n if (!('requireServerlessTemplate' in value) || value['requireServerlessTemplate'] === undefined) return false;\n return true;\n}\n\nexport function RuntimeSetupFromJSON(json: any): RuntimeSetup {\n return RuntimeSetupFromJSONTyped(json, false);\n}\n\nexport function RuntimeSetupFromJSONTyped(json: any, ignoreDiscriminator: boolean): RuntimeSetup {\n if (json == null) {\n return json;\n }\n return {\n \n 'requireServerlessTemplate': json['requireServerlessTemplate'],\n };\n}\n\nexport function RuntimeSetupToJSON(json: any): RuntimeSetup {\n return RuntimeSetupToJSONTyped(json, false);\n}\n\nexport function RuntimeSetupToJSONTyped(value?: RuntimeSetup | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'requireServerlessTemplate': value['requireServerlessTemplate'],\n };\n}\n\n",
|
|
25
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ResourceOverwrite } from './ResourceOverwrite';\nimport {\n ResourceOverwriteFromJSON,\n ResourceOverwriteFromJSONTyped,\n ResourceOverwriteToJSON,\n ResourceOverwriteToJSONTyped,\n} from './ResourceOverwrite';\nimport type { RuntimeSetup } from './RuntimeSetup';\nimport {\n RuntimeSetupFromJSON,\n RuntimeSetupFromJSONTyped,\n RuntimeSetupToJSON,\n RuntimeSetupToJSONTyped,\n} from './RuntimeSetup';\n\n/**\n * \n * @export\n * @interface DeploymentAutoRequest\n */\nexport interface DeploymentAutoRequest {\n /**\n * \n * @type {string}\n * @memberof DeploymentAutoRequest\n */\n packageVersionKey: string;\n /**\n * \n * @type {string}\n * @memberof DeploymentAutoRequest\n */\n folderFQN?: string | null;\n /**\n * \n * @type {Array<ResourceOverwrite>}\n * @memberof DeploymentAutoRequest\n */\n overwrites: Array<ResourceOverwrite>;\n /**\n * \n * @type {RuntimeSetup}\n * @memberof DeploymentAutoRequest\n */\n runtimeSetup?: RuntimeSetup;\n}\n\n/**\n * Check if a given object implements the DeploymentAutoRequest interface.\n */\nexport function instanceOfDeploymentAutoRequest(value: object): value is DeploymentAutoRequest {\n if (!('packageVersionKey' in value) || value['packageVersionKey'] === undefined) return false;\n if (!('overwrites' in value) || value['overwrites'] === undefined) return false;\n return true;\n}\n\nexport function DeploymentAutoRequestFromJSON(json: any): DeploymentAutoRequest {\n return DeploymentAutoRequestFromJSONTyped(json, false);\n}\n\nexport function DeploymentAutoRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): DeploymentAutoRequest {\n if (json == null) {\n return json;\n }\n return {\n \n 'packageVersionKey': json['packageVersionKey'],\n 'folderFQN': json['folderFQN'] == null ? undefined : json['folderFQN'],\n 'overwrites': ((json['overwrites'] as Array<any>).map(ResourceOverwriteFromJSON)),\n 'runtimeSetup': json['runtimeSetup'] == null ? undefined : RuntimeSetupFromJSON(json['runtimeSetup']),\n };\n}\n\nexport function DeploymentAutoRequestToJSON(json: any): DeploymentAutoRequest {\n return DeploymentAutoRequestToJSONTyped(json, false);\n}\n\nexport function DeploymentAutoRequestToJSONTyped(value?: DeploymentAutoRequest | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'packageVersionKey': value['packageVersionKey'],\n 'folderFQN': value['folderFQN'],\n 'overwrites': ((value['overwrites'] as Array<any>).map(ResourceOverwriteToJSON)),\n 'runtimeSetup': RuntimeSetupToJSON(value['runtimeSetup']),\n };\n}\n\n",
|
|
26
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface DeploymentDto\n */\nexport interface DeploymentDto {\n /**\n * \n * @type {string}\n * @memberof DeploymentDto\n */\n packageName: string;\n /**\n * \n * @type {string}\n * @memberof DeploymentDto\n */\n deploymentName: string;\n}\n\n/**\n * Check if a given object implements the DeploymentDto interface.\n */\nexport function instanceOfDeploymentDto(value: object): value is DeploymentDto {\n if (!('packageName' in value) || value['packageName'] === undefined) return false;\n if (!('deploymentName' in value) || value['deploymentName'] === undefined) return false;\n return true;\n}\n\nexport function DeploymentDtoFromJSON(json: any): DeploymentDto {\n return DeploymentDtoFromJSONTyped(json, false);\n}\n\nexport function DeploymentDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): DeploymentDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'packageName': json['packageName'],\n 'deploymentName': json['deploymentName'],\n };\n}\n\nexport function DeploymentDtoToJSON(json: any): DeploymentDto {\n return DeploymentDtoToJSONTyped(json, false);\n}\n\nexport function DeploymentDtoToJSONTyped(value?: DeploymentDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'packageName': value['packageName'],\n 'deploymentName': value['deploymentName'],\n };\n}\n\n",
|
|
27
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const WorkflowAction = {\n Install: 'Install',\n Activate: 'Activate',\n Uninstall: 'Uninstall',\n Upgrade: 'Upgrade',\n Delete: 'Delete',\n SetupActivation: 'SetupActivation'\n} as const;\nexport type WorkflowAction = typeof WorkflowAction[keyof typeof WorkflowAction];\n\n\nexport function instanceOfWorkflowAction(value: any): boolean {\n for (const key in WorkflowAction) {\n if (Object.prototype.hasOwnProperty.call(WorkflowAction, key)) {\n if (WorkflowAction[key as keyof typeof WorkflowAction] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function WorkflowActionFromJSON(json: any): WorkflowAction {\n return WorkflowActionFromJSONTyped(json, false);\n}\n\nexport function WorkflowActionFromJSONTyped(json: any, ignoreDiscriminator: boolean): WorkflowAction {\n return json as WorkflowAction;\n}\n\nexport function WorkflowActionToJSON(value?: WorkflowAction | null): any {\n return value as any;\n}\n\nexport function WorkflowActionToJSONTyped(value: any, ignoreDiscriminator: boolean): WorkflowAction {\n return value as WorkflowAction;\n}\n\n",
|
|
28
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const DeploymentOperation = {\n Install: 'Install',\n Uninstall: 'Uninstall',\n VersionChange: 'VersionChange',\n ConfigurationChange: 'ConfigurationChange',\n Rollback: 'Rollback',\n ActivationSetup: 'ActivationSetup'\n} as const;\nexport type DeploymentOperation = typeof DeploymentOperation[keyof typeof DeploymentOperation];\n\n\nexport function instanceOfDeploymentOperation(value: any): boolean {\n for (const key in DeploymentOperation) {\n if (Object.prototype.hasOwnProperty.call(DeploymentOperation, key)) {\n if (DeploymentOperation[key as keyof typeof DeploymentOperation] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function DeploymentOperationFromJSON(json: any): DeploymentOperation {\n return DeploymentOperationFromJSONTyped(json, false);\n}\n\nexport function DeploymentOperationFromJSONTyped(json: any, ignoreDiscriminator: boolean): DeploymentOperation {\n return json as DeploymentOperation;\n}\n\nexport function DeploymentOperationToJSON(value?: DeploymentOperation | null): any {\n return value as any;\n}\n\nexport function DeploymentOperationToJSONTyped(value: any, ignoreDiscriminator: boolean): DeploymentOperation {\n return value as DeploymentOperation;\n}\n\n",
|
|
29
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const PackageVersionOrigin = {\n SolutionBuilder: 'SolutionBuilder',\n Accelerators: 'Accelerators',\n CiCd: 'CiCd',\n Studio: 'Studio'\n} as const;\nexport type PackageVersionOrigin = typeof PackageVersionOrigin[keyof typeof PackageVersionOrigin];\n\n\nexport function instanceOfPackageVersionOrigin(value: any): boolean {\n for (const key in PackageVersionOrigin) {\n if (Object.prototype.hasOwnProperty.call(PackageVersionOrigin, key)) {\n if (PackageVersionOrigin[key as keyof typeof PackageVersionOrigin] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function PackageVersionOriginFromJSON(json: any): PackageVersionOrigin {\n return PackageVersionOriginFromJSONTyped(json, false);\n}\n\nexport function PackageVersionOriginFromJSONTyped(json: any, ignoreDiscriminator: boolean): PackageVersionOrigin {\n return json as PackageVersionOrigin;\n}\n\nexport function PackageVersionOriginToJSON(value?: PackageVersionOrigin | null): any {\n return value as any;\n}\n\nexport function PackageVersionOriginToJSONTyped(value: any, ignoreDiscriminator: boolean): PackageVersionOrigin {\n return value as PackageVersionOrigin;\n}\n\n",
|
|
30
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const DeploymentOperationStatus = {\n Draft: 'Draft',\n Successful: 'Successful',\n Failed: 'Failed',\n InProgress: 'InProgress',\n FailedRollback: 'FailedRollback'\n} as const;\nexport type DeploymentOperationStatus = typeof DeploymentOperationStatus[keyof typeof DeploymentOperationStatus];\n\n\nexport function instanceOfDeploymentOperationStatus(value: any): boolean {\n for (const key in DeploymentOperationStatus) {\n if (Object.prototype.hasOwnProperty.call(DeploymentOperationStatus, key)) {\n if (DeploymentOperationStatus[key as keyof typeof DeploymentOperationStatus] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function DeploymentOperationStatusFromJSON(json: any): DeploymentOperationStatus {\n return DeploymentOperationStatusFromJSONTyped(json, false);\n}\n\nexport function DeploymentOperationStatusFromJSONTyped(json: any, ignoreDiscriminator: boolean): DeploymentOperationStatus {\n return json as DeploymentOperationStatus;\n}\n\nexport function DeploymentOperationStatusToJSON(value?: DeploymentOperationStatus | null): any {\n return value as any;\n}\n\nexport function DeploymentOperationStatusToJSONTyped(value: any, ignoreDiscriminator: boolean): DeploymentOperationStatus {\n return value as DeploymentOperationStatus;\n}\n\n",
|
|
31
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const DeploymentUpgradeType = {\n ConfigChange: 'ConfigChange',\n VersionChange: 'VersionChange',\n UpgradeRollback: 'UpgradeRollback',\n ActivationSetup: 'ActivationSetup'\n} as const;\nexport type DeploymentUpgradeType = typeof DeploymentUpgradeType[keyof typeof DeploymentUpgradeType];\n\n\nexport function instanceOfDeploymentUpgradeType(value: any): boolean {\n for (const key in DeploymentUpgradeType) {\n if (Object.prototype.hasOwnProperty.call(DeploymentUpgradeType, key)) {\n if (DeploymentUpgradeType[key as keyof typeof DeploymentUpgradeType] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function DeploymentUpgradeTypeFromJSON(json: any): DeploymentUpgradeType {\n return DeploymentUpgradeTypeFromJSONTyped(json, false);\n}\n\nexport function DeploymentUpgradeTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): DeploymentUpgradeType {\n return json as DeploymentUpgradeType;\n}\n\nexport function DeploymentUpgradeTypeToJSON(value?: DeploymentUpgradeType | null): any {\n return value as any;\n}\n\nexport function DeploymentUpgradeTypeToJSONTyped(value: any, ignoreDiscriminator: boolean): DeploymentUpgradeType {\n return value as DeploymentUpgradeType;\n}\n\n",
|
|
32
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const DeploymentStatus = {\n SuccessfulInstall: 'SuccessfulInstall',\n SuccessfulUninstall: 'SuccessfulUninstall',\n InstallProgress: 'InstallProgress',\n UninstallProgress: 'UninstallProgress',\n FailedInstall: 'FailedInstall',\n FailedUninstall: 'FailedUninstall',\n Draft: 'Draft',\n SuccessfulActivate: 'SuccessfulActivate',\n FailedActivate: 'FailedActivate',\n ActivateProgress: 'ActivateProgress'\n} as const;\nexport type DeploymentStatus = typeof DeploymentStatus[keyof typeof DeploymentStatus];\n\n\nexport function instanceOfDeploymentStatus(value: any): boolean {\n for (const key in DeploymentStatus) {\n if (Object.prototype.hasOwnProperty.call(DeploymentStatus, key)) {\n if (DeploymentStatus[key as keyof typeof DeploymentStatus] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function DeploymentStatusFromJSON(json: any): DeploymentStatus {\n return DeploymentStatusFromJSONTyped(json, false);\n}\n\nexport function DeploymentStatusFromJSONTyped(json: any, ignoreDiscriminator: boolean): DeploymentStatus {\n return json as DeploymentStatus;\n}\n\nexport function DeploymentStatusToJSON(value?: DeploymentStatus | null): any {\n return value as any;\n}\n\nexport function DeploymentStatusToJSONTyped(value: any, ignoreDiscriminator: boolean): DeploymentStatus {\n return value as DeploymentStatus;\n}\n\n",
|
|
33
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { WorkflowAction } from './WorkflowAction';\nimport {\n WorkflowActionFromJSON,\n WorkflowActionFromJSONTyped,\n WorkflowActionToJSON,\n WorkflowActionToJSONTyped,\n} from './WorkflowAction';\nimport type { DeploymentActivationStatus } from './DeploymentActivationStatus';\nimport {\n DeploymentActivationStatusFromJSON,\n DeploymentActivationStatusFromJSONTyped,\n DeploymentActivationStatusToJSON,\n DeploymentActivationStatusToJSONTyped,\n} from './DeploymentActivationStatus';\nimport type { DeploymentOperation } from './DeploymentOperation';\nimport {\n DeploymentOperationFromJSON,\n DeploymentOperationFromJSONTyped,\n DeploymentOperationToJSON,\n DeploymentOperationToJSONTyped,\n} from './DeploymentOperation';\nimport type { PackageVersionOrigin } from './PackageVersionOrigin';\nimport {\n PackageVersionOriginFromJSON,\n PackageVersionOriginFromJSONTyped,\n PackageVersionOriginToJSON,\n PackageVersionOriginToJSONTyped,\n} from './PackageVersionOrigin';\nimport type { DeploymentOperationStatus } from './DeploymentOperationStatus';\nimport {\n DeploymentOperationStatusFromJSON,\n DeploymentOperationStatusFromJSONTyped,\n DeploymentOperationStatusToJSON,\n DeploymentOperationStatusToJSONTyped,\n} from './DeploymentOperationStatus';\nimport type { DeploymentUpgradeType } from './DeploymentUpgradeType';\nimport {\n DeploymentUpgradeTypeFromJSON,\n DeploymentUpgradeTypeFromJSONTyped,\n DeploymentUpgradeTypeToJSON,\n DeploymentUpgradeTypeToJSONTyped,\n} from './DeploymentUpgradeType';\nimport type { DeploymentStatus } from './DeploymentStatus';\nimport {\n DeploymentStatusFromJSON,\n DeploymentStatusFromJSONTyped,\n DeploymentStatusToJSON,\n DeploymentStatusToJSONTyped,\n} from './DeploymentStatus';\nimport type { RuntimeSetup } from './RuntimeSetup';\nimport {\n RuntimeSetupFromJSON,\n RuntimeSetupFromJSONTyped,\n RuntimeSetupToJSON,\n RuntimeSetupToJSONTyped,\n} from './RuntimeSetup';\n\n/**\n * \n * @export\n * @interface DeploymentItemDto\n */\nexport interface DeploymentItemDto {\n /**\n * \n * @type {string}\n * @memberof DeploymentItemDto\n */\n key: string;\n /**\n * \n * @type {string}\n * @memberof DeploymentItemDto\n */\n installDeploymentKey: string;\n /**\n * \n * @type {string}\n * @memberof DeploymentItemDto\n */\n name: string;\n /**\n * \n * @type {string}\n * @memberof DeploymentItemDto\n */\n configurationKey: string;\n /**\n * \n * @type {string}\n * @memberof DeploymentItemDto\n */\n packageVersionKey: string;\n /**\n * \n * @type {string}\n * @memberof DeploymentItemDto\n */\n packageKey: string;\n /**\n * \n * @type {string}\n * @memberof DeploymentItemDto\n */\n packageName: string;\n /**\n * \n * @type {string}\n * @memberof DeploymentItemDto\n * @deprecated\n */\n packageVersion: string;\n /**\n * \n * @type {string}\n * @memberof DeploymentItemDto\n */\n currentPackageVersion?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentItemDto\n */\n targetPackageVersion?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentItemDto\n */\n folderPath?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentItemDto\n */\n installedRootFolderKey?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentItemDto\n */\n installedRootFolderName?: string | null;\n /**\n * \n * @type {PackageVersionOrigin}\n * @memberof DeploymentItemDto\n */\n packageVersionOrigin: PackageVersionOrigin;\n /**\n * \n * @type {Date}\n * @memberof DeploymentItemDto\n */\n deploymentCreationTime: Date;\n /**\n * \n * @type {DeploymentStatus}\n * @memberof DeploymentItemDto\n */\n status: DeploymentStatus;\n /**\n * \n * @type {Date}\n * @memberof DeploymentItemDto\n */\n startTime?: Date | null;\n /**\n * \n * @type {Date}\n * @memberof DeploymentItemDto\n */\n endTime?: Date | null;\n /**\n * \n * @type {DeploymentUpgradeType}\n * @memberof DeploymentItemDto\n */\n upgradeType?: DeploymentUpgradeType;\n /**\n * \n * @type {DeploymentOperation}\n * @memberof DeploymentItemDto\n */\n operation: DeploymentOperation;\n /**\n * \n * @type {DeploymentOperationStatus}\n * @memberof DeploymentItemDto\n */\n operationStatus: DeploymentOperationStatus;\n /**\n * \n * @type {DeploymentActivationStatus}\n * @memberof DeploymentItemDto\n */\n activationStatus: DeploymentActivationStatus;\n /**\n * \n * @type {string}\n * @memberof DeploymentItemDto\n */\n instanceId?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentItemDto\n */\n newPackageVersionAvailable?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentItemDto\n */\n packageVersionDescription?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentItemDto\n */\n packageVersionReleaseNotes?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentItemDto\n */\n authorName: string;\n /**\n * \n * @type {string}\n * @memberof DeploymentItemDto\n */\n previousDeploymentKey?: string | null;\n /**\n * \n * @type {RuntimeSetup}\n * @memberof DeploymentItemDto\n */\n runtimeSetup?: RuntimeSetup;\n /**\n * \n * @type {Array<WorkflowAction>}\n * @memberof DeploymentItemDto\n */\n actions: Array<WorkflowAction>;\n}\n\n\n\n/**\n * Check if a given object implements the DeploymentItemDto interface.\n */\nexport function instanceOfDeploymentItemDto(value: object): value is DeploymentItemDto {\n if (!('key' in value) || value['key'] === undefined) return false;\n if (!('installDeploymentKey' in value) || value['installDeploymentKey'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('configurationKey' in value) || value['configurationKey'] === undefined) return false;\n if (!('packageVersionKey' in value) || value['packageVersionKey'] === undefined) return false;\n if (!('packageKey' in value) || value['packageKey'] === undefined) return false;\n if (!('packageName' in value) || value['packageName'] === undefined) return false;\n if (!('packageVersion' in value) || value['packageVersion'] === undefined) return false;\n if (!('packageVersionOrigin' in value) || value['packageVersionOrigin'] === undefined) return false;\n if (!('deploymentCreationTime' in value) || value['deploymentCreationTime'] === undefined) return false;\n if (!('status' in value) || value['status'] === undefined) return false;\n if (!('operation' in value) || value['operation'] === undefined) return false;\n if (!('operationStatus' in value) || value['operationStatus'] === undefined) return false;\n if (!('activationStatus' in value) || value['activationStatus'] === undefined) return false;\n if (!('authorName' in value) || value['authorName'] === undefined) return false;\n if (!('actions' in value) || value['actions'] === undefined) return false;\n return true;\n}\n\nexport function DeploymentItemDtoFromJSON(json: any): DeploymentItemDto {\n return DeploymentItemDtoFromJSONTyped(json, false);\n}\n\nexport function DeploymentItemDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): DeploymentItemDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'key': json['key'],\n 'installDeploymentKey': json['installDeploymentKey'],\n 'name': json['name'],\n 'configurationKey': json['configurationKey'],\n 'packageVersionKey': json['packageVersionKey'],\n 'packageKey': json['packageKey'],\n 'packageName': json['packageName'],\n 'packageVersion': json['packageVersion'],\n 'currentPackageVersion': json['currentPackageVersion'] == null ? undefined : json['currentPackageVersion'],\n 'targetPackageVersion': json['targetPackageVersion'] == null ? undefined : json['targetPackageVersion'],\n 'folderPath': json['folderPath'] == null ? undefined : json['folderPath'],\n 'installedRootFolderKey': json['installedRootFolderKey'] == null ? undefined : json['installedRootFolderKey'],\n 'installedRootFolderName': json['installedRootFolderName'] == null ? undefined : json['installedRootFolderName'],\n 'packageVersionOrigin': PackageVersionOriginFromJSON(json['packageVersionOrigin']),\n 'deploymentCreationTime': (new Date(json['deploymentCreationTime'])),\n 'status': DeploymentStatusFromJSON(json['status']),\n 'startTime': json['startTime'] == null ? undefined : (new Date(json['startTime'])),\n 'endTime': json['endTime'] == null ? undefined : (new Date(json['endTime'])),\n 'upgradeType': json['upgradeType'] == null ? undefined : DeploymentUpgradeTypeFromJSON(json['upgradeType']),\n 'operation': DeploymentOperationFromJSON(json['operation']),\n 'operationStatus': DeploymentOperationStatusFromJSON(json['operationStatus']),\n 'activationStatus': DeploymentActivationStatusFromJSON(json['activationStatus']),\n 'instanceId': json['instanceId'] == null ? undefined : json['instanceId'],\n 'newPackageVersionAvailable': json['newPackageVersionAvailable'] == null ? undefined : json['newPackageVersionAvailable'],\n 'packageVersionDescription': json['packageVersionDescription'] == null ? undefined : json['packageVersionDescription'],\n 'packageVersionReleaseNotes': json['packageVersionReleaseNotes'] == null ? undefined : json['packageVersionReleaseNotes'],\n 'authorName': json['authorName'],\n 'previousDeploymentKey': json['previousDeploymentKey'] == null ? undefined : json['previousDeploymentKey'],\n 'runtimeSetup': json['runtimeSetup'] == null ? undefined : RuntimeSetupFromJSON(json['runtimeSetup']),\n 'actions': ((json['actions'] as Array<any>).map(WorkflowActionFromJSON)),\n };\n}\n\nexport function DeploymentItemDtoToJSON(json: any): DeploymentItemDto {\n return DeploymentItemDtoToJSONTyped(json, false);\n}\n\nexport function DeploymentItemDtoToJSONTyped(value?: DeploymentItemDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'key': value['key'],\n 'installDeploymentKey': value['installDeploymentKey'],\n 'name': value['name'],\n 'configurationKey': value['configurationKey'],\n 'packageVersionKey': value['packageVersionKey'],\n 'packageKey': value['packageKey'],\n 'packageName': value['packageName'],\n 'packageVersion': value['packageVersion'],\n 'currentPackageVersion': value['currentPackageVersion'],\n 'targetPackageVersion': value['targetPackageVersion'],\n 'folderPath': value['folderPath'],\n 'installedRootFolderKey': value['installedRootFolderKey'],\n 'installedRootFolderName': value['installedRootFolderName'],\n 'packageVersionOrigin': PackageVersionOriginToJSON(value['packageVersionOrigin']),\n 'deploymentCreationTime': value['deploymentCreationTime'].toISOString(),\n 'status': DeploymentStatusToJSON(value['status']),\n 'startTime': value['startTime'] == null ? value['startTime'] : value['startTime'].toISOString(),\n 'endTime': value['endTime'] == null ? value['endTime'] : value['endTime'].toISOString(),\n 'upgradeType': DeploymentUpgradeTypeToJSON(value['upgradeType']),\n 'operation': DeploymentOperationToJSON(value['operation']),\n 'operationStatus': DeploymentOperationStatusToJSON(value['operationStatus']),\n 'activationStatus': DeploymentActivationStatusToJSON(value['activationStatus']),\n 'instanceId': value['instanceId'],\n 'newPackageVersionAvailable': value['newPackageVersionAvailable'],\n 'packageVersionDescription': value['packageVersionDescription'],\n 'packageVersionReleaseNotes': value['packageVersionReleaseNotes'],\n 'authorName': value['authorName'],\n 'previousDeploymentKey': value['previousDeploymentKey'],\n 'runtimeSetup': RuntimeSetupToJSON(value['runtimeSetup']),\n 'actions': ((value['actions'] as Array<any>).map(WorkflowActionToJSON)),\n };\n}\n\n",
|
|
34
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { RuntimeSetup } from './RuntimeSetup';\nimport {\n RuntimeSetupFromJSON,\n RuntimeSetupFromJSONTyped,\n RuntimeSetupToJSON,\n RuntimeSetupToJSONTyped,\n} from './RuntimeSetup';\n\n/**\n * \n * @export\n * @interface DeploymentRequest\n */\nexport interface DeploymentRequest {\n /**\n * \n * @type {string}\n * @memberof DeploymentRequest\n */\n configurationKey: string;\n /**\n * \n * @type {string}\n * @memberof DeploymentRequest\n */\n deploymentName: string;\n /**\n * \n * @type {string}\n * @memberof DeploymentRequest\n */\n installationFolderKey?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentRequest\n */\n pathFullyQualifiedName?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentRequest\n */\n solutionRootFolderName?: string | null;\n /**\n * \n * @type {boolean}\n * @memberof DeploymentRequest\n */\n forceActivate?: boolean | null;\n /**\n * \n * @type {RuntimeSetup}\n * @memberof DeploymentRequest\n */\n runtimeSetup?: RuntimeSetup;\n}\n\n/**\n * Check if a given object implements the DeploymentRequest interface.\n */\nexport function instanceOfDeploymentRequest(value: object): value is DeploymentRequest {\n if (!('configurationKey' in value) || value['configurationKey'] === undefined) return false;\n if (!('deploymentName' in value) || value['deploymentName'] === undefined) return false;\n return true;\n}\n\nexport function DeploymentRequestFromJSON(json: any): DeploymentRequest {\n return DeploymentRequestFromJSONTyped(json, false);\n}\n\nexport function DeploymentRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): DeploymentRequest {\n if (json == null) {\n return json;\n }\n return {\n \n 'configurationKey': json['configurationKey'],\n 'deploymentName': json['deploymentName'],\n 'installationFolderKey': json['installationFolderKey'] == null ? undefined : json['installationFolderKey'],\n 'pathFullyQualifiedName': json['pathFullyQualifiedName'] == null ? undefined : json['pathFullyQualifiedName'],\n 'solutionRootFolderName': json['solutionRootFolderName'] == null ? undefined : json['solutionRootFolderName'],\n 'forceActivate': json['forceActivate'] == null ? undefined : json['forceActivate'],\n 'runtimeSetup': json['runtimeSetup'] == null ? undefined : RuntimeSetupFromJSON(json['runtimeSetup']),\n };\n}\n\nexport function DeploymentRequestToJSON(json: any): DeploymentRequest {\n return DeploymentRequestToJSONTyped(json, false);\n}\n\nexport function DeploymentRequestToJSONTyped(value?: DeploymentRequest | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'configurationKey': value['configurationKey'],\n 'deploymentName': value['deploymentName'],\n 'installationFolderKey': value['installationFolderKey'],\n 'pathFullyQualifiedName': value['pathFullyQualifiedName'],\n 'solutionRootFolderName': value['solutionRootFolderName'],\n 'forceActivate': value['forceActivate'],\n 'runtimeSetup': RuntimeSetupToJSON(value['runtimeSetup']),\n };\n}\n\n",
|
|
35
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const DeploymentType = {\n Managed: 'Managed',\n Unmanaged: 'Unmanaged'\n} as const;\nexport type DeploymentType = typeof DeploymentType[keyof typeof DeploymentType];\n\n\nexport function instanceOfDeploymentType(value: any): boolean {\n for (const key in DeploymentType) {\n if (Object.prototype.hasOwnProperty.call(DeploymentType, key)) {\n if (DeploymentType[key as keyof typeof DeploymentType] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function DeploymentTypeFromJSON(json: any): DeploymentType {\n return DeploymentTypeFromJSONTyped(json, false);\n}\n\nexport function DeploymentTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): DeploymentType {\n return json as DeploymentType;\n}\n\nexport function DeploymentTypeToJSON(value?: DeploymentType | null): any {\n return value as any;\n}\n\nexport function DeploymentTypeToJSONTyped(value: any, ignoreDiscriminator: boolean): DeploymentType {\n return value as DeploymentType;\n}\n\n",
|
|
36
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { WorkflowAction } from './WorkflowAction';\nimport {\n WorkflowActionFromJSON,\n WorkflowActionFromJSONTyped,\n WorkflowActionToJSON,\n WorkflowActionToJSONTyped,\n} from './WorkflowAction';\nimport type { DeploymentActivationStatus } from './DeploymentActivationStatus';\nimport {\n DeploymentActivationStatusFromJSON,\n DeploymentActivationStatusFromJSONTyped,\n DeploymentActivationStatusToJSON,\n DeploymentActivationStatusToJSONTyped,\n} from './DeploymentActivationStatus';\nimport type { DeploymentOperation } from './DeploymentOperation';\nimport {\n DeploymentOperationFromJSON,\n DeploymentOperationFromJSONTyped,\n DeploymentOperationToJSON,\n DeploymentOperationToJSONTyped,\n} from './DeploymentOperation';\nimport type { PackageVersionOrigin } from './PackageVersionOrigin';\nimport {\n PackageVersionOriginFromJSON,\n PackageVersionOriginFromJSONTyped,\n PackageVersionOriginToJSON,\n PackageVersionOriginToJSONTyped,\n} from './PackageVersionOrigin';\nimport type { DeploymentOperationStatus } from './DeploymentOperationStatus';\nimport {\n DeploymentOperationStatusFromJSON,\n DeploymentOperationStatusFromJSONTyped,\n DeploymentOperationStatusToJSON,\n DeploymentOperationStatusToJSONTyped,\n} from './DeploymentOperationStatus';\nimport type { DeploymentType } from './DeploymentType';\nimport {\n DeploymentTypeFromJSON,\n DeploymentTypeFromJSONTyped,\n DeploymentTypeToJSON,\n DeploymentTypeToJSONTyped,\n} from './DeploymentType';\n\n/**\n * \n * @export\n * @interface DeploymentSearchItemDto2\n */\nexport interface DeploymentSearchItemDto2 {\n /**\n * \n * @type {string}\n * @memberof DeploymentSearchItemDto2\n */\n key: string;\n /**\n * \n * @type {string}\n * @memberof DeploymentSearchItemDto2\n */\n installDeploymentKey: string;\n /**\n * \n * @type {string}\n * @memberof DeploymentSearchItemDto2\n */\n instanceId?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentSearchItemDto2\n */\n configurationKey: string;\n /**\n * \n * @type {string}\n * @memberof DeploymentSearchItemDto2\n */\n packageVersionKey: string;\n /**\n * \n * @type {string}\n * @memberof DeploymentSearchItemDto2\n */\n packageKey: string;\n /**\n * \n * @type {string}\n * @memberof DeploymentSearchItemDto2\n */\n packageName: string;\n /**\n * \n * @type {string}\n * @memberof DeploymentSearchItemDto2\n */\n packageVersion: string;\n /**\n * \n * @type {string}\n * @memberof DeploymentSearchItemDto2\n */\n currentPackageVersion?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentSearchItemDto2\n */\n targetPackageVersion?: string | null;\n /**\n * \n * @type {PackageVersionOrigin}\n * @memberof DeploymentSearchItemDto2\n */\n packageVersionOrigin: PackageVersionOrigin;\n /**\n * \n * @type {string}\n * @memberof DeploymentSearchItemDto2\n */\n folderPath?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentSearchItemDto2\n */\n installedRootFolderKey?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentSearchItemDto2\n */\n installedRootFolderName?: string | null;\n /**\n * \n * @type {Date}\n * @memberof DeploymentSearchItemDto2\n */\n deploymentCreationTime: Date;\n /**\n * \n * @type {Date}\n * @memberof DeploymentSearchItemDto2\n */\n startTime?: Date | null;\n /**\n * \n * @type {Date}\n * @memberof DeploymentSearchItemDto2\n */\n endTime?: Date | null;\n /**\n * \n * @type {Array<WorkflowAction>}\n * @memberof DeploymentSearchItemDto2\n */\n actions: Array<WorkflowAction>;\n /**\n * \n * @type {string}\n * @memberof DeploymentSearchItemDto2\n */\n name: string;\n /**\n * \n * @type {DeploymentType}\n * @memberof DeploymentSearchItemDto2\n */\n type: DeploymentType;\n /**\n * \n * @type {DeploymentOperation}\n * @memberof DeploymentSearchItemDto2\n */\n operation: DeploymentOperation;\n /**\n * \n * @type {DeploymentOperationStatus}\n * @memberof DeploymentSearchItemDto2\n */\n operationStatus: DeploymentOperationStatus;\n /**\n * \n * @type {DeploymentActivationStatus}\n * @memberof DeploymentSearchItemDto2\n */\n activationStatus: DeploymentActivationStatus;\n /**\n * \n * @type {string}\n * @memberof DeploymentSearchItemDto2\n */\n newPackageVersionAvailable?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentSearchItemDto2\n */\n packageVersionDescription?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentSearchItemDto2\n */\n packageVersionReleaseNotes?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentSearchItemDto2\n */\n authorName: string;\n /**\n * \n * @type {string}\n * @memberof DeploymentSearchItemDto2\n */\n previousDeploymentKey?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentSearchItemDto2\n */\n previousInstanceId?: string | null;\n}\n\n\n\n/**\n * Check if a given object implements the DeploymentSearchItemDto2 interface.\n */\nexport function instanceOfDeploymentSearchItemDto2(value: object): value is DeploymentSearchItemDto2 {\n if (!('key' in value) || value['key'] === undefined) return false;\n if (!('installDeploymentKey' in value) || value['installDeploymentKey'] === undefined) return false;\n if (!('configurationKey' in value) || value['configurationKey'] === undefined) return false;\n if (!('packageVersionKey' in value) || value['packageVersionKey'] === undefined) return false;\n if (!('packageKey' in value) || value['packageKey'] === undefined) return false;\n if (!('packageName' in value) || value['packageName'] === undefined) return false;\n if (!('packageVersion' in value) || value['packageVersion'] === undefined) return false;\n if (!('packageVersionOrigin' in value) || value['packageVersionOrigin'] === undefined) return false;\n if (!('deploymentCreationTime' in value) || value['deploymentCreationTime'] === undefined) return false;\n if (!('actions' in value) || value['actions'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('type' in value) || value['type'] === undefined) return false;\n if (!('operation' in value) || value['operation'] === undefined) return false;\n if (!('operationStatus' in value) || value['operationStatus'] === undefined) return false;\n if (!('activationStatus' in value) || value['activationStatus'] === undefined) return false;\n if (!('authorName' in value) || value['authorName'] === undefined) return false;\n return true;\n}\n\nexport function DeploymentSearchItemDto2FromJSON(json: any): DeploymentSearchItemDto2 {\n return DeploymentSearchItemDto2FromJSONTyped(json, false);\n}\n\nexport function DeploymentSearchItemDto2FromJSONTyped(json: any, ignoreDiscriminator: boolean): DeploymentSearchItemDto2 {\n if (json == null) {\n return json;\n }\n return {\n \n 'key': json['key'],\n 'installDeploymentKey': json['installDeploymentKey'],\n 'instanceId': json['instanceId'] == null ? undefined : json['instanceId'],\n 'configurationKey': json['configurationKey'],\n 'packageVersionKey': json['packageVersionKey'],\n 'packageKey': json['packageKey'],\n 'packageName': json['packageName'],\n 'packageVersion': json['packageVersion'],\n 'currentPackageVersion': json['currentPackageVersion'] == null ? undefined : json['currentPackageVersion'],\n 'targetPackageVersion': json['targetPackageVersion'] == null ? undefined : json['targetPackageVersion'],\n 'packageVersionOrigin': PackageVersionOriginFromJSON(json['packageVersionOrigin']),\n 'folderPath': json['folderPath'] == null ? undefined : json['folderPath'],\n 'installedRootFolderKey': json['installedRootFolderKey'] == null ? undefined : json['installedRootFolderKey'],\n 'installedRootFolderName': json['installedRootFolderName'] == null ? undefined : json['installedRootFolderName'],\n 'deploymentCreationTime': (new Date(json['deploymentCreationTime'])),\n 'startTime': json['startTime'] == null ? undefined : (new Date(json['startTime'])),\n 'endTime': json['endTime'] == null ? undefined : (new Date(json['endTime'])),\n 'actions': ((json['actions'] as Array<any>).map(WorkflowActionFromJSON)),\n 'name': json['name'],\n 'type': DeploymentTypeFromJSON(json['type']),\n 'operation': DeploymentOperationFromJSON(json['operation']),\n 'operationStatus': DeploymentOperationStatusFromJSON(json['operationStatus']),\n 'activationStatus': DeploymentActivationStatusFromJSON(json['activationStatus']),\n 'newPackageVersionAvailable': json['newPackageVersionAvailable'] == null ? undefined : json['newPackageVersionAvailable'],\n 'packageVersionDescription': json['packageVersionDescription'] == null ? undefined : json['packageVersionDescription'],\n 'packageVersionReleaseNotes': json['packageVersionReleaseNotes'] == null ? undefined : json['packageVersionReleaseNotes'],\n 'authorName': json['authorName'],\n 'previousDeploymentKey': json['previousDeploymentKey'] == null ? undefined : json['previousDeploymentKey'],\n 'previousInstanceId': json['previousInstanceId'] == null ? undefined : json['previousInstanceId'],\n };\n}\n\nexport function DeploymentSearchItemDto2ToJSON(json: any): DeploymentSearchItemDto2 {\n return DeploymentSearchItemDto2ToJSONTyped(json, false);\n}\n\nexport function DeploymentSearchItemDto2ToJSONTyped(value?: DeploymentSearchItemDto2 | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'key': value['key'],\n 'installDeploymentKey': value['installDeploymentKey'],\n 'instanceId': value['instanceId'],\n 'configurationKey': value['configurationKey'],\n 'packageVersionKey': value['packageVersionKey'],\n 'packageKey': value['packageKey'],\n 'packageName': value['packageName'],\n 'packageVersion': value['packageVersion'],\n 'currentPackageVersion': value['currentPackageVersion'],\n 'targetPackageVersion': value['targetPackageVersion'],\n 'packageVersionOrigin': PackageVersionOriginToJSON(value['packageVersionOrigin']),\n 'folderPath': value['folderPath'],\n 'installedRootFolderKey': value['installedRootFolderKey'],\n 'installedRootFolderName': value['installedRootFolderName'],\n 'deploymentCreationTime': value['deploymentCreationTime'].toISOString(),\n 'startTime': value['startTime'] == null ? value['startTime'] : value['startTime'].toISOString(),\n 'endTime': value['endTime'] == null ? value['endTime'] : value['endTime'].toISOString(),\n 'actions': ((value['actions'] as Array<any>).map(WorkflowActionToJSON)),\n 'name': value['name'],\n 'type': DeploymentTypeToJSON(value['type']),\n 'operation': DeploymentOperationToJSON(value['operation']),\n 'operationStatus': DeploymentOperationStatusToJSON(value['operationStatus']),\n 'activationStatus': DeploymentActivationStatusToJSON(value['activationStatus']),\n 'newPackageVersionAvailable': value['newPackageVersionAvailable'],\n 'packageVersionDescription': value['packageVersionDescription'],\n 'packageVersionReleaseNotes': value['packageVersionReleaseNotes'],\n 'authorName': value['authorName'],\n 'previousDeploymentKey': value['previousDeploymentKey'],\n 'previousInstanceId': value['previousInstanceId'],\n };\n}\n\n",
|
|
37
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const OrderByDirection = {\n Ascending: 'Ascending',\n Descending: 'Descending'\n} as const;\nexport type OrderByDirection = typeof OrderByDirection[keyof typeof OrderByDirection];\n\n\nexport function instanceOfOrderByDirection(value: any): boolean {\n for (const key in OrderByDirection) {\n if (Object.prototype.hasOwnProperty.call(OrderByDirection, key)) {\n if (OrderByDirection[key as keyof typeof OrderByDirection] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function OrderByDirectionFromJSON(json: any): OrderByDirection {\n return OrderByDirectionFromJSONTyped(json, false);\n}\n\nexport function OrderByDirectionFromJSONTyped(json: any, ignoreDiscriminator: boolean): OrderByDirection {\n return json as OrderByDirection;\n}\n\nexport function OrderByDirectionToJSON(value?: OrderByDirection | null): any {\n return value as any;\n}\n\nexport function OrderByDirectionToJSONTyped(value: any, ignoreDiscriminator: boolean): OrderByDirection {\n return value as OrderByDirection;\n}\n\n",
|
|
38
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { DeploymentActivationStatus } from './DeploymentActivationStatus';\nimport {\n DeploymentActivationStatusFromJSON,\n DeploymentActivationStatusFromJSONTyped,\n DeploymentActivationStatusToJSON,\n DeploymentActivationStatusToJSONTyped,\n} from './DeploymentActivationStatus';\nimport type { DeploymentOperation } from './DeploymentOperation';\nimport {\n DeploymentOperationFromJSON,\n DeploymentOperationFromJSONTyped,\n DeploymentOperationToJSON,\n DeploymentOperationToJSONTyped,\n} from './DeploymentOperation';\nimport type { DeploymentOperationStatus } from './DeploymentOperationStatus';\nimport {\n DeploymentOperationStatusFromJSON,\n DeploymentOperationStatusFromJSONTyped,\n DeploymentOperationStatusToJSON,\n DeploymentOperationStatusToJSONTyped,\n} from './DeploymentOperationStatus';\nimport type { OrderByDirection } from './OrderByDirection';\nimport {\n OrderByDirectionFromJSON,\n OrderByDirectionFromJSONTyped,\n OrderByDirectionToJSON,\n OrderByDirectionToJSONTyped,\n} from './OrderByDirection';\n\n/**\n * \n * @export\n * @interface DeploymentsSearchRequest2\n */\nexport interface DeploymentsSearchRequest2 {\n /**\n * \n * @type {string}\n * @memberof DeploymentsSearchRequest2\n */\n orderByColumn?: string | null;\n /**\n * \n * @type {OrderByDirection}\n * @memberof DeploymentsSearchRequest2\n */\n orderByDirection?: OrderByDirection;\n /**\n * \n * @type {string}\n * @memberof DeploymentsSearchRequest2\n */\n searchTerm?: string | null;\n /**\n * \n * @type {number}\n * @memberof DeploymentsSearchRequest2\n */\n skip?: number | null;\n /**\n * \n * @type {number}\n * @memberof DeploymentsSearchRequest2\n */\n take?: number | null;\n /**\n * \n * @type {Array<DeploymentOperationStatus>}\n * @memberof DeploymentsSearchRequest2\n */\n operationStatuses: Array<DeploymentOperationStatus>;\n /**\n * \n * @type {DeploymentOperation}\n * @memberof DeploymentsSearchRequest2\n */\n operation?: DeploymentOperation;\n /**\n * \n * @type {Array<DeploymentActivationStatus>}\n * @memberof DeploymentsSearchRequest2\n */\n activationStatuses: Array<DeploymentActivationStatus>;\n /**\n * \n * @type {string}\n * @memberof DeploymentsSearchRequest2\n */\n packageName?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentsSearchRequest2\n */\n packageVersion?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentsSearchRequest2\n */\n currentPackageVersion?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentsSearchRequest2\n */\n targetPackageVersion?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentsSearchRequest2\n */\n targetFolderName?: string | null;\n /**\n * \n * @type {string}\n * @memberof DeploymentsSearchRequest2\n */\n packageVersionKey?: string | null;\n}\n\n\n\n/**\n * Check if a given object implements the DeploymentsSearchRequest2 interface.\n */\nexport function instanceOfDeploymentsSearchRequest2(value: object): value is DeploymentsSearchRequest2 {\n if (!('operationStatuses' in value) || value['operationStatuses'] === undefined) return false;\n if (!('activationStatuses' in value) || value['activationStatuses'] === undefined) return false;\n return true;\n}\n\nexport function DeploymentsSearchRequest2FromJSON(json: any): DeploymentsSearchRequest2 {\n return DeploymentsSearchRequest2FromJSONTyped(json, false);\n}\n\nexport function DeploymentsSearchRequest2FromJSONTyped(json: any, ignoreDiscriminator: boolean): DeploymentsSearchRequest2 {\n if (json == null) {\n return json;\n }\n return {\n \n 'orderByColumn': json['orderByColumn'] == null ? undefined : json['orderByColumn'],\n 'orderByDirection': json['orderByDirection'] == null ? undefined : OrderByDirectionFromJSON(json['orderByDirection']),\n 'searchTerm': json['searchTerm'] == null ? undefined : json['searchTerm'],\n 'skip': json['skip'] == null ? undefined : json['skip'],\n 'take': json['take'] == null ? undefined : json['take'],\n 'operationStatuses': ((json['operationStatuses'] as Array<any>).map(DeploymentOperationStatusFromJSON)),\n 'operation': json['operation'] == null ? undefined : DeploymentOperationFromJSON(json['operation']),\n 'activationStatuses': ((json['activationStatuses'] as Array<any>).map(DeploymentActivationStatusFromJSON)),\n 'packageName': json['packageName'] == null ? undefined : json['packageName'],\n 'packageVersion': json['packageVersion'] == null ? undefined : json['packageVersion'],\n 'currentPackageVersion': json['currentPackageVersion'] == null ? undefined : json['currentPackageVersion'],\n 'targetPackageVersion': json['targetPackageVersion'] == null ? undefined : json['targetPackageVersion'],\n 'targetFolderName': json['targetFolderName'] == null ? undefined : json['targetFolderName'],\n 'packageVersionKey': json['packageVersionKey'] == null ? undefined : json['packageVersionKey'],\n };\n}\n\nexport function DeploymentsSearchRequest2ToJSON(json: any): DeploymentsSearchRequest2 {\n return DeploymentsSearchRequest2ToJSONTyped(json, false);\n}\n\nexport function DeploymentsSearchRequest2ToJSONTyped(value?: DeploymentsSearchRequest2 | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'orderByColumn': value['orderByColumn'],\n 'orderByDirection': OrderByDirectionToJSON(value['orderByDirection']),\n 'searchTerm': value['searchTerm'],\n 'skip': value['skip'],\n 'take': value['take'],\n 'operationStatuses': ((value['operationStatuses'] as Array<any>).map(DeploymentOperationStatusToJSON)),\n 'operation': DeploymentOperationToJSON(value['operation']),\n 'activationStatuses': ((value['activationStatuses'] as Array<any>).map(DeploymentActivationStatusToJSON)),\n 'packageName': value['packageName'],\n 'packageVersion': value['packageVersion'],\n 'currentPackageVersion': value['currentPackageVersion'],\n 'targetPackageVersion': value['targetPackageVersion'],\n 'targetFolderName': value['targetFolderName'],\n 'packageVersionKey': value['packageVersionKey'],\n };\n}\n\n",
|
|
39
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const ExtendedPackageVersionState = {\n Pending: 'Pending',\n Ready: 'Ready',\n Failed: 'Failed',\n Active: 'Active'\n} as const;\nexport type ExtendedPackageVersionState = typeof ExtendedPackageVersionState[keyof typeof ExtendedPackageVersionState];\n\n\nexport function instanceOfExtendedPackageVersionState(value: any): boolean {\n for (const key in ExtendedPackageVersionState) {\n if (Object.prototype.hasOwnProperty.call(ExtendedPackageVersionState, key)) {\n if (ExtendedPackageVersionState[key as keyof typeof ExtendedPackageVersionState] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function ExtendedPackageVersionStateFromJSON(json: any): ExtendedPackageVersionState {\n return ExtendedPackageVersionStateFromJSONTyped(json, false);\n}\n\nexport function ExtendedPackageVersionStateFromJSONTyped(json: any, ignoreDiscriminator: boolean): ExtendedPackageVersionState {\n return json as ExtendedPackageVersionState;\n}\n\nexport function ExtendedPackageVersionStateToJSON(value?: ExtendedPackageVersionState | null): any {\n return value as any;\n}\n\nexport function ExtendedPackageVersionStateToJSONTyped(value: any, ignoreDiscriminator: boolean): ExtendedPackageVersionState {\n return value as ExtendedPackageVersionState;\n}\n\n",
|
|
40
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface FolderInfo\n */\nexport interface FolderInfo {\n /**\n * \n * @type {string}\n * @memberof FolderInfo\n */\n fullyQualifiedName: string;\n /**\n * \n * @type {string}\n * @memberof FolderInfo\n */\n path?: string | null;\n /**\n * \n * @type {string}\n * @memberof FolderInfo\n */\n folderKey?: string | null;\n}\n\n/**\n * Check if a given object implements the FolderInfo interface.\n */\nexport function instanceOfFolderInfo(value: object): value is FolderInfo {\n if (!('fullyQualifiedName' in value) || value['fullyQualifiedName'] === undefined) return false;\n return true;\n}\n\nexport function FolderInfoFromJSON(json: any): FolderInfo {\n return FolderInfoFromJSONTyped(json, false);\n}\n\nexport function FolderInfoFromJSONTyped(json: any, ignoreDiscriminator: boolean): FolderInfo {\n if (json == null) {\n return json;\n }\n return {\n \n 'fullyQualifiedName': json['fullyQualifiedName'],\n 'path': json['path'] == null ? undefined : json['path'],\n 'folderKey': json['folderKey'] == null ? undefined : json['folderKey'],\n };\n}\n\nexport function FolderInfoToJSON(json: any): FolderInfo {\n return FolderInfoToJSONTyped(json, false);\n}\n\nexport function FolderInfoToJSONTyped(value?: FolderInfo | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'fullyQualifiedName': value['fullyQualifiedName'],\n 'path': value['path'],\n 'folderKey': value['folderKey'],\n };\n}\n\n",
|
|
41
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface LocationDto\n */\nexport interface LocationDto {\n /**\n * \n * @type {string}\n * @memberof LocationDto\n */\n name: string;\n /**\n * \n * @type {string}\n * @memberof LocationDto\n */\n key: string;\n /**\n * \n * @type {boolean}\n * @memberof LocationDto\n */\n isPersonalWorkspace: boolean;\n}\n\n/**\n * Check if a given object implements the LocationDto interface.\n */\nexport function instanceOfLocationDto(value: object): value is LocationDto {\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('key' in value) || value['key'] === undefined) return false;\n if (!('isPersonalWorkspace' in value) || value['isPersonalWorkspace'] === undefined) return false;\n return true;\n}\n\nexport function LocationDtoFromJSON(json: any): LocationDto {\n return LocationDtoFromJSONTyped(json, false);\n}\n\nexport function LocationDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): LocationDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'name': json['name'],\n 'key': json['key'],\n 'isPersonalWorkspace': json['isPersonalWorkspace'],\n };\n}\n\nexport function LocationDtoToJSON(json: any): LocationDto {\n return LocationDtoToJSONTyped(json, false);\n}\n\nexport function LocationDtoToJSONTyped(value?: LocationDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'name': value['name'],\n 'key': value['key'],\n 'isPersonalWorkspace': value['isPersonalWorkspace'],\n };\n}\n\n",
|
|
42
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ExtendedPackageVersionState } from './ExtendedPackageVersionState';\nimport {\n ExtendedPackageVersionStateFromJSON,\n ExtendedPackageVersionStateFromJSONTyped,\n ExtendedPackageVersionStateToJSON,\n ExtendedPackageVersionStateToJSONTyped,\n} from './ExtendedPackageVersionState';\n\n/**\n * \n * @export\n * @interface PackageInfo\n */\nexport interface PackageInfo {\n /**\n * \n * @type {string}\n * @memberof PackageInfo\n */\n key: string;\n /**\n * \n * @type {string}\n * @memberof PackageInfo\n */\n name: string;\n /**\n * \n * @type {string}\n * @memberof PackageInfo\n */\n latestVersion: string;\n /**\n * \n * @type {string}\n * @memberof PackageInfo\n */\n packageVersionKey: string;\n /**\n * \n * @type {string}\n * @memberof PackageInfo\n */\n authorName: string;\n /**\n * \n * @type {string}\n * @memberof PackageInfo\n */\n authorEmail?: string | null;\n /**\n * \n * @type {Date}\n * @memberof PackageInfo\n */\n publishDate: Date;\n /**\n * \n * @type {string}\n * @memberof PackageInfo\n */\n description?: string | null;\n /**\n * \n * @type {string}\n * @memberof PackageInfo\n */\n releaseNotes?: string | null;\n /**\n * \n * @type {ExtendedPackageVersionState}\n * @memberof PackageInfo\n */\n state: ExtendedPackageVersionState;\n /**\n * \n * @type {string}\n * @memberof PackageInfo\n */\n solutionRootFolderName: string;\n /**\n * \n * @type {boolean}\n * @memberof PackageInfo\n */\n hasUpgradeableDeployments: boolean;\n}\n\n\n\n/**\n * Check if a given object implements the PackageInfo interface.\n */\nexport function instanceOfPackageInfo(value: object): value is PackageInfo {\n if (!('key' in value) || value['key'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('latestVersion' in value) || value['latestVersion'] === undefined) return false;\n if (!('packageVersionKey' in value) || value['packageVersionKey'] === undefined) return false;\n if (!('authorName' in value) || value['authorName'] === undefined) return false;\n if (!('publishDate' in value) || value['publishDate'] === undefined) return false;\n if (!('state' in value) || value['state'] === undefined) return false;\n if (!('solutionRootFolderName' in value) || value['solutionRootFolderName'] === undefined) return false;\n if (!('hasUpgradeableDeployments' in value) || value['hasUpgradeableDeployments'] === undefined) return false;\n return true;\n}\n\nexport function PackageInfoFromJSON(json: any): PackageInfo {\n return PackageInfoFromJSONTyped(json, false);\n}\n\nexport function PackageInfoFromJSONTyped(json: any, ignoreDiscriminator: boolean): PackageInfo {\n if (json == null) {\n return json;\n }\n return {\n \n 'key': json['key'],\n 'name': json['name'],\n 'latestVersion': json['latestVersion'],\n 'packageVersionKey': json['packageVersionKey'],\n 'authorName': json['authorName'],\n 'authorEmail': json['authorEmail'] == null ? undefined : json['authorEmail'],\n 'publishDate': (new Date(json['publishDate'])),\n 'description': json['description'] == null ? undefined : json['description'],\n 'releaseNotes': json['releaseNotes'] == null ? undefined : json['releaseNotes'],\n 'state': ExtendedPackageVersionStateFromJSON(json['state']),\n 'solutionRootFolderName': json['solutionRootFolderName'],\n 'hasUpgradeableDeployments': json['hasUpgradeableDeployments'],\n };\n}\n\nexport function PackageInfoToJSON(json: any): PackageInfo {\n return PackageInfoToJSONTyped(json, false);\n}\n\nexport function PackageInfoToJSONTyped(value?: PackageInfo | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'key': value['key'],\n 'name': value['name'],\n 'latestVersion': value['latestVersion'],\n 'packageVersionKey': value['packageVersionKey'],\n 'authorName': value['authorName'],\n 'authorEmail': value['authorEmail'],\n 'publishDate': value['publishDate'].toISOString(),\n 'description': value['description'],\n 'releaseNotes': value['releaseNotes'],\n 'state': ExtendedPackageVersionStateToJSON(value['state']),\n 'solutionRootFolderName': value['solutionRootFolderName'],\n 'hasUpgradeableDeployments': value['hasUpgradeableDeployments'],\n };\n}\n\n",
|
|
43
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ResourceStats\n */\nexport interface ResourceStats {\n /**\n * \n * @type {number}\n * @memberof ResourceStats\n */\n count: number;\n /**\n * \n * @type {string}\n * @memberof ResourceStats\n */\n kind: string;\n /**\n * \n * @type {string}\n * @memberof ResourceStats\n */\n serviceName: string;\n}\n\n/**\n * Check if a given object implements the ResourceStats interface.\n */\nexport function instanceOfResourceStats(value: object): value is ResourceStats {\n if (!('count' in value) || value['count'] === undefined) return false;\n if (!('kind' in value) || value['kind'] === undefined) return false;\n if (!('serviceName' in value) || value['serviceName'] === undefined) return false;\n return true;\n}\n\nexport function ResourceStatsFromJSON(json: any): ResourceStats {\n return ResourceStatsFromJSONTyped(json, false);\n}\n\nexport function ResourceStatsFromJSONTyped(json: any, ignoreDiscriminator: boolean): ResourceStats {\n if (json == null) {\n return json;\n }\n return {\n \n 'count': json['count'],\n 'kind': json['kind'],\n 'serviceName': json['serviceName'],\n };\n}\n\nexport function ResourceStatsToJSON(json: any): ResourceStats {\n return ResourceStatsToJSONTyped(json, false);\n}\n\nexport function ResourceStatsToJSONTyped(value?: ResourceStats | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'count': value['count'],\n 'kind': value['kind'],\n 'serviceName': value['serviceName'],\n };\n}\n\n",
|
|
44
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { FolderInfo } from './FolderInfo';\nimport {\n FolderInfoFromJSON,\n FolderInfoFromJSONTyped,\n FolderInfoToJSON,\n FolderInfoToJSONTyped,\n} from './FolderInfo';\n\n/**\n * \n * @export\n * @interface PackageVersionResourceDto\n */\nexport interface PackageVersionResourceDto {\n /**\n * \n * @type {string}\n * @memberof PackageVersionResourceDto\n */\n key: string;\n /**\n * \n * @type {string}\n * @memberof PackageVersionResourceDto\n */\n name: string;\n /**\n * \n * @type {string}\n * @memberof PackageVersionResourceDto\n */\n kind: string;\n /**\n * \n * @type {string}\n * @memberof PackageVersionResourceDto\n */\n type?: string | null;\n /**\n * \n * @type {string}\n * @memberof PackageVersionResourceDto\n */\n apiVersion: string;\n /**\n * \n * @type {Array<FolderInfo>}\n * @memberof PackageVersionResourceDto\n */\n folders: Array<FolderInfo>;\n}\n\n/**\n * Check if a given object implements the PackageVersionResourceDto interface.\n */\nexport function instanceOfPackageVersionResourceDto(value: object): value is PackageVersionResourceDto {\n if (!('key' in value) || value['key'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('kind' in value) || value['kind'] === undefined) return false;\n if (!('apiVersion' in value) || value['apiVersion'] === undefined) return false;\n if (!('folders' in value) || value['folders'] === undefined) return false;\n return true;\n}\n\nexport function PackageVersionResourceDtoFromJSON(json: any): PackageVersionResourceDto {\n return PackageVersionResourceDtoFromJSONTyped(json, false);\n}\n\nexport function PackageVersionResourceDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): PackageVersionResourceDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'key': json['key'],\n 'name': json['name'],\n 'kind': json['kind'],\n 'type': json['type'] == null ? undefined : json['type'],\n 'apiVersion': json['apiVersion'],\n 'folders': ((json['folders'] as Array<any>).map(FolderInfoFromJSON)),\n };\n}\n\nexport function PackageVersionResourceDtoToJSON(json: any): PackageVersionResourceDto {\n return PackageVersionResourceDtoToJSONTyped(json, false);\n}\n\nexport function PackageVersionResourceDtoToJSONTyped(value?: PackageVersionResourceDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'key': value['key'],\n 'name': value['name'],\n 'kind': value['kind'],\n 'type': value['type'],\n 'apiVersion': value['apiVersion'],\n 'folders': ((value['folders'] as Array<any>).map(FolderInfoToJSON)),\n };\n}\n\n",
|
|
45
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ResourceStats } from './ResourceStats';\nimport {\n ResourceStatsFromJSON,\n ResourceStatsFromJSONTyped,\n ResourceStatsToJSON,\n ResourceStatsToJSONTyped,\n} from './ResourceStats';\nimport type { PackageVersionResourceDto } from './PackageVersionResourceDto';\nimport {\n PackageVersionResourceDtoFromJSON,\n PackageVersionResourceDtoFromJSONTyped,\n PackageVersionResourceDtoToJSON,\n PackageVersionResourceDtoToJSONTyped,\n} from './PackageVersionResourceDto';\n\n/**\n * \n * @export\n * @interface PackageVersionComponentsDto\n */\nexport interface PackageVersionComponentsDto {\n /**\n * \n * @type {number}\n * @memberof PackageVersionComponentsDto\n */\n count: number;\n /**\n * \n * @type {Array<PackageVersionResourceDto>}\n * @memberof PackageVersionComponentsDto\n */\n resources: Array<PackageVersionResourceDto>;\n /**\n * \n * @type {Array<ResourceStats>}\n * @memberof PackageVersionComponentsDto\n */\n stats: Array<ResourceStats>;\n}\n\n/**\n * Check if a given object implements the PackageVersionComponentsDto interface.\n */\nexport function instanceOfPackageVersionComponentsDto(value: object): value is PackageVersionComponentsDto {\n if (!('count' in value) || value['count'] === undefined) return false;\n if (!('resources' in value) || value['resources'] === undefined) return false;\n if (!('stats' in value) || value['stats'] === undefined) return false;\n return true;\n}\n\nexport function PackageVersionComponentsDtoFromJSON(json: any): PackageVersionComponentsDto {\n return PackageVersionComponentsDtoFromJSONTyped(json, false);\n}\n\nexport function PackageVersionComponentsDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): PackageVersionComponentsDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'count': json['count'],\n 'resources': ((json['resources'] as Array<any>).map(PackageVersionResourceDtoFromJSON)),\n 'stats': ((json['stats'] as Array<any>).map(ResourceStatsFromJSON)),\n };\n}\n\nexport function PackageVersionComponentsDtoToJSON(json: any): PackageVersionComponentsDto {\n return PackageVersionComponentsDtoToJSONTyped(json, false);\n}\n\nexport function PackageVersionComponentsDtoToJSONTyped(value?: PackageVersionComponentsDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'count': value['count'],\n 'resources': ((value['resources'] as Array<any>).map(PackageVersionResourceDtoToJSON)),\n 'stats': ((value['stats'] as Array<any>).map(ResourceStatsToJSON)),\n };\n}\n\n",
|
|
46
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { PackageVersionComponentsDto } from './PackageVersionComponentsDto';\nimport {\n PackageVersionComponentsDtoFromJSON,\n PackageVersionComponentsDtoFromJSONTyped,\n PackageVersionComponentsDtoToJSON,\n PackageVersionComponentsDtoToJSONTyped,\n} from './PackageVersionComponentsDto';\nimport type { ExtendedPackageVersionState } from './ExtendedPackageVersionState';\nimport {\n ExtendedPackageVersionStateFromJSON,\n ExtendedPackageVersionStateFromJSONTyped,\n ExtendedPackageVersionStateToJSON,\n ExtendedPackageVersionStateToJSONTyped,\n} from './ExtendedPackageVersionState';\n\n/**\n * \n * @export\n * @interface PackageVersionInfoDto\n */\nexport interface PackageVersionInfoDto {\n /**\n * \n * @type {string}\n * @memberof PackageVersionInfoDto\n */\n key: string;\n /**\n * \n * @type {string}\n * @memberof PackageVersionInfoDto\n */\n packageName: string;\n /**\n * \n * @type {string}\n * @memberof PackageVersionInfoDto\n */\n packageVersion: string;\n /**\n * \n * @type {Date}\n * @memberof PackageVersionInfoDto\n */\n publishDate: Date;\n /**\n * \n * @type {string}\n * @memberof PackageVersionInfoDto\n */\n authorName: string;\n /**\n * \n * @type {string}\n * @memberof PackageVersionInfoDto\n */\n authorEmail?: string | null;\n /**\n * \n * @type {string}\n * @memberof PackageVersionInfoDto\n */\n description?: string | null;\n /**\n * \n * @type {string}\n * @memberof PackageVersionInfoDto\n */\n releaseNotes?: string | null;\n /**\n * \n * @type {ExtendedPackageVersionState}\n * @memberof PackageVersionInfoDto\n */\n state: ExtendedPackageVersionState;\n /**\n * \n * @type {string}\n * @memberof PackageVersionInfoDto\n */\n solutionRootFolderName: string;\n /**\n * \n * @type {string}\n * @memberof PackageVersionInfoDto\n */\n locationKey?: string | null;\n /**\n * \n * @type {PackageVersionComponentsDto}\n * @memberof PackageVersionInfoDto\n */\n components?: PackageVersionComponentsDto;\n}\n\n\n\n/**\n * Check if a given object implements the PackageVersionInfoDto interface.\n */\nexport function instanceOfPackageVersionInfoDto(value: object): value is PackageVersionInfoDto {\n if (!('key' in value) || value['key'] === undefined) return false;\n if (!('packageName' in value) || value['packageName'] === undefined) return false;\n if (!('packageVersion' in value) || value['packageVersion'] === undefined) return false;\n if (!('publishDate' in value) || value['publishDate'] === undefined) return false;\n if (!('authorName' in value) || value['authorName'] === undefined) return false;\n if (!('state' in value) || value['state'] === undefined) return false;\n if (!('solutionRootFolderName' in value) || value['solutionRootFolderName'] === undefined) return false;\n return true;\n}\n\nexport function PackageVersionInfoDtoFromJSON(json: any): PackageVersionInfoDto {\n return PackageVersionInfoDtoFromJSONTyped(json, false);\n}\n\nexport function PackageVersionInfoDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): PackageVersionInfoDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'key': json['key'],\n 'packageName': json['packageName'],\n 'packageVersion': json['packageVersion'],\n 'publishDate': (new Date(json['publishDate'])),\n 'authorName': json['authorName'],\n 'authorEmail': json['authorEmail'] == null ? undefined : json['authorEmail'],\n 'description': json['description'] == null ? undefined : json['description'],\n 'releaseNotes': json['releaseNotes'] == null ? undefined : json['releaseNotes'],\n 'state': ExtendedPackageVersionStateFromJSON(json['state']),\n 'solutionRootFolderName': json['solutionRootFolderName'],\n 'locationKey': json['locationKey'] == null ? undefined : json['locationKey'],\n 'components': json['components'] == null ? undefined : PackageVersionComponentsDtoFromJSON(json['components']),\n };\n}\n\nexport function PackageVersionInfoDtoToJSON(json: any): PackageVersionInfoDto {\n return PackageVersionInfoDtoToJSONTyped(json, false);\n}\n\nexport function PackageVersionInfoDtoToJSONTyped(value?: PackageVersionInfoDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'key': value['key'],\n 'packageName': value['packageName'],\n 'packageVersion': value['packageVersion'],\n 'publishDate': value['publishDate'].toISOString(),\n 'authorName': value['authorName'],\n 'authorEmail': value['authorEmail'],\n 'description': value['description'],\n 'releaseNotes': value['releaseNotes'],\n 'state': ExtendedPackageVersionStateToJSON(value['state']),\n 'solutionRootFolderName': value['solutionRootFolderName'],\n 'locationKey': value['locationKey'],\n 'components': PackageVersionComponentsDtoToJSON(value['components']),\n };\n}\n\n",
|
|
47
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { DeploymentSearchItemDto2 } from './DeploymentSearchItemDto2';\nimport {\n DeploymentSearchItemDto2FromJSON,\n DeploymentSearchItemDto2FromJSONTyped,\n DeploymentSearchItemDto2ToJSON,\n DeploymentSearchItemDto2ToJSONTyped,\n} from './DeploymentSearchItemDto2';\n\n/**\n * \n * @export\n * @interface PageInfoDtoOfDeploymentSearchItemDto2\n */\nexport interface PageInfoDtoOfDeploymentSearchItemDto2 {\n /**\n * \n * @type {number}\n * @memberof PageInfoDtoOfDeploymentSearchItemDto2\n */\n count: number;\n /**\n * \n * @type {Array<DeploymentSearchItemDto2>}\n * @memberof PageInfoDtoOfDeploymentSearchItemDto2\n */\n values: Array<DeploymentSearchItemDto2>;\n}\n\n/**\n * Check if a given object implements the PageInfoDtoOfDeploymentSearchItemDto2 interface.\n */\nexport function instanceOfPageInfoDtoOfDeploymentSearchItemDto2(value: object): value is PageInfoDtoOfDeploymentSearchItemDto2 {\n if (!('count' in value) || value['count'] === undefined) return false;\n if (!('values' in value) || value['values'] === undefined) return false;\n return true;\n}\n\nexport function PageInfoDtoOfDeploymentSearchItemDto2FromJSON(json: any): PageInfoDtoOfDeploymentSearchItemDto2 {\n return PageInfoDtoOfDeploymentSearchItemDto2FromJSONTyped(json, false);\n}\n\nexport function PageInfoDtoOfDeploymentSearchItemDto2FromJSONTyped(json: any, ignoreDiscriminator: boolean): PageInfoDtoOfDeploymentSearchItemDto2 {\n if (json == null) {\n return json;\n }\n return {\n \n 'count': json['count'],\n 'values': ((json['values'] as Array<any>).map(DeploymentSearchItemDto2FromJSON)),\n };\n}\n\nexport function PageInfoDtoOfDeploymentSearchItemDto2ToJSON(json: any): PageInfoDtoOfDeploymentSearchItemDto2 {\n return PageInfoDtoOfDeploymentSearchItemDto2ToJSONTyped(json, false);\n}\n\nexport function PageInfoDtoOfDeploymentSearchItemDto2ToJSONTyped(value?: PageInfoDtoOfDeploymentSearchItemDto2 | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'count': value['count'],\n 'values': ((value['values'] as Array<any>).map(DeploymentSearchItemDto2ToJSON)),\n };\n}\n\n",
|
|
48
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { PackageInfo } from './PackageInfo';\nimport {\n PackageInfoFromJSON,\n PackageInfoFromJSONTyped,\n PackageInfoToJSON,\n PackageInfoToJSONTyped,\n} from './PackageInfo';\n\n/**\n * \n * @export\n * @interface PageInfoDtoOfPackageInfo\n */\nexport interface PageInfoDtoOfPackageInfo {\n /**\n * \n * @type {number}\n * @memberof PageInfoDtoOfPackageInfo\n */\n count: number;\n /**\n * \n * @type {Array<PackageInfo>}\n * @memberof PageInfoDtoOfPackageInfo\n */\n values: Array<PackageInfo>;\n}\n\n/**\n * Check if a given object implements the PageInfoDtoOfPackageInfo interface.\n */\nexport function instanceOfPageInfoDtoOfPackageInfo(value: object): value is PageInfoDtoOfPackageInfo {\n if (!('count' in value) || value['count'] === undefined) return false;\n if (!('values' in value) || value['values'] === undefined) return false;\n return true;\n}\n\nexport function PageInfoDtoOfPackageInfoFromJSON(json: any): PageInfoDtoOfPackageInfo {\n return PageInfoDtoOfPackageInfoFromJSONTyped(json, false);\n}\n\nexport function PageInfoDtoOfPackageInfoFromJSONTyped(json: any, ignoreDiscriminator: boolean): PageInfoDtoOfPackageInfo {\n if (json == null) {\n return json;\n }\n return {\n \n 'count': json['count'],\n 'values': ((json['values'] as Array<any>).map(PackageInfoFromJSON)),\n };\n}\n\nexport function PageInfoDtoOfPackageInfoToJSON(json: any): PageInfoDtoOfPackageInfo {\n return PageInfoDtoOfPackageInfoToJSONTyped(json, false);\n}\n\nexport function PageInfoDtoOfPackageInfoToJSONTyped(value?: PageInfoDtoOfPackageInfo | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'count': value['count'],\n 'values': ((value['values'] as Array<any>).map(PackageInfoToJSON)),\n };\n}\n\n",
|
|
49
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ProblemDetails\n */\nexport interface ProblemDetails {\n [key: string]: any | any;\n /**\n * \n * @type {string}\n * @memberof ProblemDetails\n */\n type?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProblemDetails\n */\n title?: string | null;\n /**\n * \n * @type {number}\n * @memberof ProblemDetails\n */\n status?: number | null;\n /**\n * \n * @type {string}\n * @memberof ProblemDetails\n */\n detail?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProblemDetails\n */\n instance?: string | null;\n}\n\n/**\n * Check if a given object implements the ProblemDetails interface.\n */\nexport function instanceOfProblemDetails(value: object): value is ProblemDetails {\n return true;\n}\n\nexport function ProblemDetailsFromJSON(json: any): ProblemDetails {\n return ProblemDetailsFromJSONTyped(json, false);\n}\n\nexport function ProblemDetailsFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProblemDetails {\n if (json == null) {\n return json;\n }\n return {\n \n ...json,\n 'type': json['type'] == null ? undefined : json['type'],\n 'title': json['title'] == null ? undefined : json['title'],\n 'status': json['status'] == null ? undefined : json['status'],\n 'detail': json['detail'] == null ? undefined : json['detail'],\n 'instance': json['instance'] == null ? undefined : json['instance'],\n };\n}\n\nexport function ProblemDetailsToJSON(json: any): ProblemDetails {\n return ProblemDetailsToJSONTyped(json, false);\n}\n\nexport function ProblemDetailsToJSONTyped(value?: ProblemDetails | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n ...value,\n 'type': value['type'],\n 'title': value['title'],\n 'status': value['status'],\n 'detail': value['detail'],\n 'instance': value['instance'],\n };\n}\n\n",
|
|
50
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ProjectCreateRequest\n */\nexport interface ProjectCreateRequest {\n /**\n * \n * @type {string}\n * @memberof ProjectCreateRequest\n */\n name: string;\n /**\n * \n * @type {string}\n * @memberof ProjectCreateRequest\n */\n description?: string | null;\n}\n\n/**\n * Check if a given object implements the ProjectCreateRequest interface.\n */\nexport function instanceOfProjectCreateRequest(value: object): value is ProjectCreateRequest {\n if (!('name' in value) || value['name'] === undefined) return false;\n return true;\n}\n\nexport function ProjectCreateRequestFromJSON(json: any): ProjectCreateRequest {\n return ProjectCreateRequestFromJSONTyped(json, false);\n}\n\nexport function ProjectCreateRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProjectCreateRequest {\n if (json == null) {\n return json;\n }\n return {\n \n 'name': json['name'],\n 'description': json['description'] == null ? undefined : json['description'],\n };\n}\n\nexport function ProjectCreateRequestToJSON(json: any): ProjectCreateRequest {\n return ProjectCreateRequestToJSONTyped(json, false);\n}\n\nexport function ProjectCreateRequestToJSONTyped(value?: ProjectCreateRequest | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'name': value['name'],\n 'description': value['description'],\n };\n}\n\n",
|
|
51
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const ProjectImportStatus = {\n InProgress: 'InProgress',\n Completed: 'Completed',\n Failed: 'Failed',\n NotApplicable: 'NotApplicable'\n} as const;\nexport type ProjectImportStatus = typeof ProjectImportStatus[keyof typeof ProjectImportStatus];\n\n\nexport function instanceOfProjectImportStatus(value: any): boolean {\n for (const key in ProjectImportStatus) {\n if (Object.prototype.hasOwnProperty.call(ProjectImportStatus, key)) {\n if (ProjectImportStatus[key as keyof typeof ProjectImportStatus] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function ProjectImportStatusFromJSON(json: any): ProjectImportStatus {\n return ProjectImportStatusFromJSONTyped(json, false);\n}\n\nexport function ProjectImportStatusFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProjectImportStatus {\n return json as ProjectImportStatus;\n}\n\nexport function ProjectImportStatusToJSON(value?: ProjectImportStatus | null): any {\n return value as any;\n}\n\nexport function ProjectImportStatusToJSONTyped(value: any, ignoreDiscriminator: boolean): ProjectImportStatus {\n return value as ProjectImportStatus;\n}\n\n",
|
|
52
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ProjectImportStatus } from './ProjectImportStatus';\nimport {\n ProjectImportStatusFromJSON,\n ProjectImportStatusFromJSONTyped,\n ProjectImportStatusToJSON,\n ProjectImportStatusToJSONTyped,\n} from './ProjectImportStatus';\n\n/**\n * \n * @export\n * @interface ProjectDto\n */\nexport interface ProjectDto {\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n key: string;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n name: string;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n description?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n solutionRootFolderName?: string | null;\n /**\n * \n * @type {boolean}\n * @memberof ProjectDto\n */\n isEmpty: boolean;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n originatedPackageVersionKey?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n latestPublishedPackageVersionKey?: string | null;\n /**\n * \n * @type {ProjectImportStatus}\n * @memberof ProjectDto\n */\n importStatus: ProjectImportStatus;\n}\n\n\n\n/**\n * Check if a given object implements the ProjectDto interface.\n */\nexport function instanceOfProjectDto(value: object): value is ProjectDto {\n if (!('key' in value) || value['key'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('isEmpty' in value) || value['isEmpty'] === undefined) return false;\n if (!('importStatus' in value) || value['importStatus'] === undefined) return false;\n return true;\n}\n\nexport function ProjectDtoFromJSON(json: any): ProjectDto {\n return ProjectDtoFromJSONTyped(json, false);\n}\n\nexport function ProjectDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProjectDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'key': json['key'],\n 'name': json['name'],\n 'description': json['description'] == null ? undefined : json['description'],\n 'solutionRootFolderName': json['solutionRootFolderName'] == null ? undefined : json['solutionRootFolderName'],\n 'isEmpty': json['isEmpty'],\n 'originatedPackageVersionKey': json['originatedPackageVersionKey'] == null ? undefined : json['originatedPackageVersionKey'],\n 'latestPublishedPackageVersionKey': json['latestPublishedPackageVersionKey'] == null ? undefined : json['latestPublishedPackageVersionKey'],\n 'importStatus': ProjectImportStatusFromJSON(json['importStatus']),\n };\n}\n\nexport function ProjectDtoToJSON(json: any): ProjectDto {\n return ProjectDtoToJSONTyped(json, false);\n}\n\nexport function ProjectDtoToJSONTyped(value?: ProjectDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'key': value['key'],\n 'name': value['name'],\n 'description': value['description'],\n 'solutionRootFolderName': value['solutionRootFolderName'],\n 'isEmpty': value['isEmpty'],\n 'originatedPackageVersionKey': value['originatedPackageVersionKey'],\n 'latestPublishedPackageVersionKey': value['latestPublishedPackageVersionKey'],\n 'importStatus': ProjectImportStatusToJSON(value['importStatus']),\n };\n}\n\n",
|
|
53
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { OrderByDirection } from './OrderByDirection';\nimport {\n OrderByDirectionFromJSON,\n OrderByDirectionFromJSONTyped,\n OrderByDirectionToJSON,\n OrderByDirectionToJSONTyped,\n} from './OrderByDirection';\n\n/**\n * \n * @export\n * @interface SearchFilter\n */\nexport interface SearchFilter {\n /**\n * \n * @type {number}\n * @memberof SearchFilter\n */\n skip?: number | null;\n /**\n * \n * @type {number}\n * @memberof SearchFilter\n */\n take?: number | null;\n /**\n * \n * @type {string}\n * @memberof SearchFilter\n */\n orderByColumn?: string | null;\n /**\n * \n * @type {OrderByDirection}\n * @memberof SearchFilter\n */\n orderByDirection?: OrderByDirection;\n /**\n * \n * @type {string}\n * @memberof SearchFilter\n */\n searchTerm?: string | null;\n}\n\n\n\n/**\n * Check if a given object implements the SearchFilter interface.\n */\nexport function instanceOfSearchFilter(value: object): value is SearchFilter {\n return true;\n}\n\nexport function SearchFilterFromJSON(json: any): SearchFilter {\n return SearchFilterFromJSONTyped(json, false);\n}\n\nexport function SearchFilterFromJSONTyped(json: any, ignoreDiscriminator: boolean): SearchFilter {\n if (json == null) {\n return json;\n }\n return {\n \n 'skip': json['skip'] == null ? undefined : json['skip'],\n 'take': json['take'] == null ? undefined : json['take'],\n 'orderByColumn': json['orderByColumn'] == null ? undefined : json['orderByColumn'],\n 'orderByDirection': json['orderByDirection'] == null ? undefined : OrderByDirectionFromJSON(json['orderByDirection']),\n 'searchTerm': json['searchTerm'] == null ? undefined : json['searchTerm'],\n };\n}\n\nexport function SearchFilterToJSON(json: any): SearchFilter {\n return SearchFilterToJSONTyped(json, false);\n}\n\nexport function SearchFilterToJSONTyped(value?: SearchFilter | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'skip': value['skip'],\n 'take': value['take'],\n 'orderByColumn': value['orderByColumn'],\n 'orderByDirection': OrderByDirectionToJSON(value['orderByDirection']),\n 'searchTerm': value['searchTerm'],\n };\n}\n\n",
|
|
54
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n CreateConfigurationCommand,\n} from '../models/index';\nimport {\n CreateConfigurationCommandFromJSON,\n CreateConfigurationCommandToJSON,\n} from '../models/index';\n\nexport interface ConfigurationsPostRequest {\n createConfigurationCommand: CreateConfigurationCommand;\n xUipathAsVersion?: string;\n}\n\n/**\n * \n */\nexport class ConfigurationsApi extends runtime.BaseAPI {\n\n /**\n */\n async configurationsPostRaw(requestParameters: ConfigurationsPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<string>> {\n if (requestParameters['createConfigurationCommand'] == null) {\n throw new runtime.RequiredError(\n 'createConfigurationCommand',\n 'Required parameter \"createConfigurationCommand\" was null or undefined when calling configurationsPost().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (requestParameters['xUipathAsVersion'] != null) {\n headerParameters['x-uipath-as-version'] = String(requestParameters['xUipathAsVersion']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"Bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/api/configurations`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: CreateConfigurationCommandToJSON(requestParameters['createConfigurationCommand']),\n }, initOverrides);\n\n if (this.isJsonMime(response.headers.get('content-type'))) {\n return new runtime.JSONApiResponse<string>(response);\n } else {\n return new runtime.TextApiResponse(response) as any;\n }\n }\n\n /**\n */\n async configurationsPost(requestParameters: ConfigurationsPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<string> {\n const response = await this.configurationsPostRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n",
|
|
55
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n DeploymentAutoRequest,\n DeploymentDto,\n DeploymentItemDto,\n DeploymentRequest,\n ProblemDetails,\n} from '../models/index';\nimport {\n DeploymentAutoRequestFromJSON,\n DeploymentAutoRequestToJSON,\n DeploymentDtoFromJSON,\n DeploymentDtoToJSON,\n DeploymentItemDtoFromJSON,\n DeploymentItemDtoToJSON,\n DeploymentRequestFromJSON,\n DeploymentRequestToJSON,\n ProblemDetailsFromJSON,\n ProblemDetailsToJSON,\n} from '../models/index';\n\nexport interface DeploymentsDeployRequest {\n deploymentAutoRequest: DeploymentAutoRequest;\n xUIPATHFolderKey?: string | null;\n xUipathAsVersion?: string;\n}\n\nexport interface DeploymentsGetByKeyRequest {\n deploymentKey: string;\n xUipathAsVersion?: string;\n}\n\nexport interface DeploymentsPostRequest {\n deploymentRequest: DeploymentRequest;\n xUipathAsVersion?: string;\n}\n\n/**\n * \n */\nexport class DeploymentsApi extends runtime.BaseAPI {\n\n /**\n */\n async deploymentsDeployRaw(requestParameters: DeploymentsDeployRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<DeploymentDto>> {\n if (requestParameters['deploymentAutoRequest'] == null) {\n throw new runtime.RequiredError(\n 'deploymentAutoRequest',\n 'Required parameter \"deploymentAutoRequest\" was null or undefined when calling deploymentsDeploy().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (requestParameters['xUIPATHFolderKey'] != null) {\n headerParameters['X-UIPATH-FolderKey'] = String(requestParameters['xUIPATHFolderKey']);\n }\n\n if (requestParameters['xUipathAsVersion'] != null) {\n headerParameters['x-uipath-as-version'] = String(requestParameters['xUipathAsVersion']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"Bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/api/deployments/deploy`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: DeploymentAutoRequestToJSON(requestParameters['deploymentAutoRequest']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => DeploymentDtoFromJSON(jsonValue));\n }\n\n /**\n */\n async deploymentsDeploy(requestParameters: DeploymentsDeployRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<DeploymentDto> {\n const response = await this.deploymentsDeployRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n */\n async deploymentsGetByKeyRaw(requestParameters: DeploymentsGetByKeyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<DeploymentItemDto>> {\n if (requestParameters['deploymentKey'] == null) {\n throw new runtime.RequiredError(\n 'deploymentKey',\n 'Required parameter \"deploymentKey\" was null or undefined when calling deploymentsGetByKey().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xUipathAsVersion'] != null) {\n headerParameters['x-uipath-as-version'] = String(requestParameters['xUipathAsVersion']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"Bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/api/deployments/{deploymentKey}`;\n urlPath = urlPath.replace(`{${\"deploymentKey\"}}`, encodeURIComponent(String(requestParameters['deploymentKey'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => DeploymentItemDtoFromJSON(jsonValue));\n }\n\n /**\n */\n async deploymentsGetByKey(requestParameters: DeploymentsGetByKeyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<DeploymentItemDto> {\n const response = await this.deploymentsGetByKeyRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n */\n async deploymentsPostRaw(requestParameters: DeploymentsPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<DeploymentItemDto>> {\n if (requestParameters['deploymentRequest'] == null) {\n throw new runtime.RequiredError(\n 'deploymentRequest',\n 'Required parameter \"deploymentRequest\" was null or undefined when calling deploymentsPost().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (requestParameters['xUipathAsVersion'] != null) {\n headerParameters['x-uipath-as-version'] = String(requestParameters['xUipathAsVersion']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"Bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/api/deployments`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: DeploymentRequestToJSON(requestParameters['deploymentRequest']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => DeploymentItemDtoFromJSON(jsonValue));\n }\n\n /**\n */\n async deploymentsPost(requestParameters: DeploymentsPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<DeploymentItemDto> {\n const response = await this.deploymentsPostRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n",
|
|
56
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n BlobFileAccessDto,\n LocationDto,\n PackageInfo,\n PackageVersionInfoDto,\n ProblemDetails,\n} from '../models/index';\nimport {\n BlobFileAccessDtoFromJSON,\n BlobFileAccessDtoToJSON,\n LocationDtoFromJSON,\n LocationDtoToJSON,\n PackageInfoFromJSON,\n PackageInfoToJSON,\n PackageVersionInfoDtoFromJSON,\n PackageVersionInfoDtoToJSON,\n ProblemDetailsFromJSON,\n ProblemDetailsToJSON,\n} from '../models/index';\n\nexport interface PackagesDeletePackageRequest {\n packageKey: string;\n xUipathAsVersion?: string;\n}\n\nexport interface PackagesDeleteVersionRequest {\n packageVersionKey: string;\n xUipathAsVersion?: string;\n}\n\nexport interface PackagesDownloadRequest {\n packageVersionKey: string;\n xUipathAsVersion?: string;\n}\n\nexport interface PackagesGetPackageRequest {\n packageKey: string;\n xUipathAsVersion?: string;\n}\n\nexport interface PackagesGetPublishLocationsRequest {\n xUipathAsVersion?: string;\n}\n\nexport interface PackagesGetVersionRequest {\n packageVersionKey: string;\n xUipathAsVersion?: string;\n}\n\nexport interface PackagesUploadRequest {\n locationKey?: string | null;\n xUipathAsVersion?: string;\n body?: any;\n}\n\n/**\n * \n */\nexport class PackagesApi extends runtime.BaseAPI {\n\n /**\n */\n async packagesDeletePackageRaw(requestParameters: PackagesDeletePackageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {\n if (requestParameters['packageKey'] == null) {\n throw new runtime.RequiredError(\n 'packageKey',\n 'Required parameter \"packageKey\" was null or undefined when calling packagesDeletePackage().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xUipathAsVersion'] != null) {\n headerParameters['x-uipath-as-version'] = String(requestParameters['xUipathAsVersion']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"Bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/api/packages/{packageKey}`;\n urlPath = urlPath.replace(`{${\"packageKey\"}}`, encodeURIComponent(String(requestParameters['packageKey'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n */\n async packagesDeletePackage(requestParameters: PackagesDeletePackageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {\n await this.packagesDeletePackageRaw(requestParameters, initOverrides);\n }\n\n /**\n */\n async packagesDeleteVersionRaw(requestParameters: PackagesDeleteVersionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {\n if (requestParameters['packageVersionKey'] == null) {\n throw new runtime.RequiredError(\n 'packageVersionKey',\n 'Required parameter \"packageVersionKey\" was null or undefined when calling packagesDeleteVersion().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xUipathAsVersion'] != null) {\n headerParameters['x-uipath-as-version'] = String(requestParameters['xUipathAsVersion']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"Bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/api/packages/versions/{packageVersionKey}`;\n urlPath = urlPath.replace(`{${\"packageVersionKey\"}}`, encodeURIComponent(String(requestParameters['packageVersionKey'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n */\n async packagesDeleteVersion(requestParameters: PackagesDeleteVersionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {\n await this.packagesDeleteVersionRaw(requestParameters, initOverrides);\n }\n\n /**\n */\n async packagesDownloadRaw(requestParameters: PackagesDownloadRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<BlobFileAccessDto>> {\n if (requestParameters['packageVersionKey'] == null) {\n throw new runtime.RequiredError(\n 'packageVersionKey',\n 'Required parameter \"packageVersionKey\" was null or undefined when calling packagesDownload().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xUipathAsVersion'] != null) {\n headerParameters['x-uipath-as-version'] = String(requestParameters['xUipathAsVersion']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"Bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/api/packages/{packageVersionKey}/download`;\n urlPath = urlPath.replace(`{${\"packageVersionKey\"}}`, encodeURIComponent(String(requestParameters['packageVersionKey'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => BlobFileAccessDtoFromJSON(jsonValue));\n }\n\n /**\n */\n async packagesDownload(requestParameters: PackagesDownloadRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<BlobFileAccessDto> {\n const response = await this.packagesDownloadRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n */\n async packagesGetPackageRaw(requestParameters: PackagesGetPackageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PackageInfo>> {\n if (requestParameters['packageKey'] == null) {\n throw new runtime.RequiredError(\n 'packageKey',\n 'Required parameter \"packageKey\" was null or undefined when calling packagesGetPackage().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xUipathAsVersion'] != null) {\n headerParameters['x-uipath-as-version'] = String(requestParameters['xUipathAsVersion']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"Bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/api/packages/{packageKey}`;\n urlPath = urlPath.replace(`{${\"packageKey\"}}`, encodeURIComponent(String(requestParameters['packageKey'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PackageInfoFromJSON(jsonValue));\n }\n\n /**\n */\n async packagesGetPackage(requestParameters: PackagesGetPackageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PackageInfo> {\n const response = await this.packagesGetPackageRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n */\n async packagesGetPublishLocationsRaw(requestParameters: PackagesGetPublishLocationsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<LocationDto>>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xUipathAsVersion'] != null) {\n headerParameters['x-uipath-as-version'] = String(requestParameters['xUipathAsVersion']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"Bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/api/packages/publish-locations`;\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(LocationDtoFromJSON));\n }\n\n /**\n */\n async packagesGetPublishLocations(requestParameters: PackagesGetPublishLocationsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<LocationDto>> {\n const response = await this.packagesGetPublishLocationsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n */\n async packagesGetVersionRaw(requestParameters: PackagesGetVersionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PackageVersionInfoDto>> {\n if (requestParameters['packageVersionKey'] == null) {\n throw new runtime.RequiredError(\n 'packageVersionKey',\n 'Required parameter \"packageVersionKey\" was null or undefined when calling packagesGetVersion().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xUipathAsVersion'] != null) {\n headerParameters['x-uipath-as-version'] = String(requestParameters['xUipathAsVersion']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"Bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/api/packages/versions/{packageVersionKey}`;\n urlPath = urlPath.replace(`{${\"packageVersionKey\"}}`, encodeURIComponent(String(requestParameters['packageVersionKey'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PackageVersionInfoDtoFromJSON(jsonValue));\n }\n\n /**\n */\n async packagesGetVersion(requestParameters: PackagesGetVersionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PackageVersionInfoDto> {\n const response = await this.packagesGetVersionRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n */\n async packagesUploadRaw(requestParameters: PackagesUploadRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<string>> {\n const queryParameters: any = {};\n\n if (requestParameters['locationKey'] != null) {\n queryParameters['locationKey'] = requestParameters['locationKey'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/zip';\n\n if (requestParameters['xUipathAsVersion'] != null) {\n headerParameters['x-uipath-as-version'] = String(requestParameters['xUipathAsVersion']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"Bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/api/packages/upload`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: requestParameters['body'] as any,\n }, initOverrides);\n\n if (this.isJsonMime(response.headers.get('content-type'))) {\n return new runtime.JSONApiResponse<string>(response);\n } else {\n return new runtime.TextApiResponse(response) as any;\n }\n }\n\n /**\n */\n async packagesUpload(requestParameters: PackagesUploadRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<string> {\n const response = await this.packagesUploadRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n",
|
|
57
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ProjectCreateRequest,\n ProjectDto,\n} from '../models/index';\nimport {\n ProjectCreateRequestFromJSON,\n ProjectCreateRequestToJSON,\n ProjectDtoFromJSON,\n ProjectDtoToJSON,\n} from '../models/index';\n\nexport interface ProjectsPostRequest {\n projectCreateRequest: ProjectCreateRequest;\n}\n\nexport interface ProjectsPost2Request {\n projectCreateRequest: ProjectCreateRequest;\n xUipathAsVersion?: string;\n}\n\n/**\n * \n */\nexport class ProjectsApi extends runtime.BaseAPI {\n\n /**\n */\n async projectsPostRaw(requestParameters: ProjectsPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ProjectDto>> {\n if (requestParameters['projectCreateRequest'] == null) {\n throw new runtime.RequiredError(\n 'projectCreateRequest',\n 'Required parameter \"projectCreateRequest\" was null or undefined when calling projectsPost().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"Bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/api/v1/projects`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ProjectCreateRequestToJSON(requestParameters['projectCreateRequest']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ProjectDtoFromJSON(jsonValue));\n }\n\n /**\n */\n async projectsPost(requestParameters: ProjectsPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ProjectDto> {\n const response = await this.projectsPostRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n */\n async projectsPost2Raw(requestParameters: ProjectsPost2Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ProjectDto>> {\n if (requestParameters['projectCreateRequest'] == null) {\n throw new runtime.RequiredError(\n 'projectCreateRequest',\n 'Required parameter \"projectCreateRequest\" was null or undefined when calling projectsPost2().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (requestParameters['xUipathAsVersion'] != null) {\n headerParameters['x-uipath-as-version'] = String(requestParameters['xUipathAsVersion']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"Bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/api/projects`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ProjectCreateRequestToJSON(requestParameters['projectCreateRequest']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ProjectDtoFromJSON(jsonValue));\n }\n\n /**\n */\n async projectsPost2(requestParameters: ProjectsPost2Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ProjectDto> {\n const response = await this.projectsPost2Raw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n",
|
|
58
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n DeploymentsSearchRequest2,\n PageInfoDtoOfDeploymentSearchItemDto2,\n PageInfoDtoOfPackageInfo,\n ProblemDetails,\n SearchFilter,\n} from '../models/index';\nimport {\n DeploymentsSearchRequest2FromJSON,\n DeploymentsSearchRequest2ToJSON,\n PageInfoDtoOfDeploymentSearchItemDto2FromJSON,\n PageInfoDtoOfDeploymentSearchItemDto2ToJSON,\n PageInfoDtoOfPackageInfoFromJSON,\n PageInfoDtoOfPackageInfoToJSON,\n ProblemDetailsFromJSON,\n ProblemDetailsToJSON,\n SearchFilterFromJSON,\n SearchFilterToJSON,\n} from '../models/index';\n\nexport interface SearchSearchDeployments22Request {\n deploymentsSearchRequest2: DeploymentsSearchRequest2;\n xUipathAsVersion?: string;\n}\n\nexport interface SearchSearchPackagesRequest {\n searchFilter: SearchFilter;\n xUipathAsVersion?: string;\n}\n\n/**\n * \n */\nexport class SearchApi extends runtime.BaseAPI {\n\n /**\n */\n async searchSearchDeployments22Raw(requestParameters: SearchSearchDeployments22Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PageInfoDtoOfDeploymentSearchItemDto2>> {\n if (requestParameters['deploymentsSearchRequest2'] == null) {\n throw new runtime.RequiredError(\n 'deploymentsSearchRequest2',\n 'Required parameter \"deploymentsSearchRequest2\" was null or undefined when calling searchSearchDeployments22().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (requestParameters['xUipathAsVersion'] != null) {\n headerParameters['x-uipath-as-version'] = String(requestParameters['xUipathAsVersion']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"Bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/api/v3/search/deployments`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: DeploymentsSearchRequest2ToJSON(requestParameters['deploymentsSearchRequest2']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PageInfoDtoOfDeploymentSearchItemDto2FromJSON(jsonValue));\n }\n\n /**\n */\n async searchSearchDeployments22(requestParameters: SearchSearchDeployments22Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PageInfoDtoOfDeploymentSearchItemDto2> {\n const response = await this.searchSearchDeployments22Raw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n */\n async searchSearchPackagesRaw(requestParameters: SearchSearchPackagesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PageInfoDtoOfPackageInfo>> {\n if (requestParameters['searchFilter'] == null) {\n throw new runtime.RequiredError(\n 'searchFilter',\n 'Required parameter \"searchFilter\" was null or undefined when calling searchSearchPackages().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (requestParameters['xUipathAsVersion'] != null) {\n headerParameters['x-uipath-as-version'] = String(requestParameters['xUipathAsVersion']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"Bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/api/search/packages`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: SearchFilterToJSON(requestParameters['searchFilter']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PageInfoDtoOfPackageInfoFromJSON(jsonValue));\n }\n\n /**\n */\n async searchSearchPackages(requestParameters: SearchSearchPackagesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PageInfoDtoOfPackageInfo> {\n const response = await this.searchSearchPackagesRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n",
|
|
59
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * UiPath.AutomationSolutionsService.WebApi 1.0\n * Solutions API\n *\n * The version of the OpenAPI document: 1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\n\nexport interface SettingsGetSettingsRequest {\n nameSpace?: string | null;\n ngVersion?: string | null;\n xUipathAsVersion?: string;\n}\n\n/**\n * \n */\nexport class SettingsApi extends runtime.BaseAPI {\n\n /**\n */\n async settingsGetSettingsRaw(requestParameters: SettingsGetSettingsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{ [key: string]: any; }>> {\n const queryParameters: any = {};\n\n if (requestParameters['nameSpace'] != null) {\n queryParameters['nameSpace'] = requestParameters['nameSpace'];\n }\n\n if (requestParameters['ngVersion'] != null) {\n queryParameters['ngVersion'] = requestParameters['ngVersion'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xUipathAsVersion'] != null) {\n headerParameters['x-uipath-as-version'] = String(requestParameters['xUipathAsVersion']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"Bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/api/settings`;\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse<any>(response);\n }\n\n /**\n */\n async settingsGetSettings(requestParameters: SettingsGetSettingsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{ [key: string]: any; }> {\n const response = await this.settingsGetSettingsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n",
|
|
60
|
+
"import { randomUUID } from \"node:crypto\";\nimport { existsSync } from \"node:fs\";\nimport * as fs from \"node:fs/promises\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport open from \"open\";\nimport type {\n FileSystemStats,\n IEnv,\n IFileSystem,\n IPath,\n IUtils,\n} from \"./interfaces.js\";\n\n// Advisory-lock tuning. A holder refreshes the lock file's mtime every\n// LOCK_HEARTBEAT_MS while it works (on the event loop — which stays free\n// during the holder's async I/O), so STALE only fires for a holder that has\n// stopped heartbeating entirely: crashed, or suspended (OS sleep / SIGSTOP).\n// STALE is several missed heartbeats so a live holder is never reclaimed.\n// MAX_WAIT MUST exceed STALE so a contender that is already waiting when a\n// holder dies can reclaim the stale lock within its own budget rather than\n// timing out first.\n//\n// MAX_HOLD caps total heartbeat lifetime — a holder that legitimately needs\n// the lock for longer than this (e.g. a stalled IdP fetch with no client-side\n// timeout) stops heartbeating so peers can reclaim the lock as stale. The\n// caller's critical section keeps running; only the freshness signal stops.\nconst LOCK_HEARTBEAT_MS = 5_000;\nconst LOCK_STALE_MS = 15_000;\nconst LOCK_MAX_WAIT_MS = 20_000;\nconst LOCK_MAX_HOLD_MS = 60_000;\nconst LOCK_RETRY_MIN_MS = 100;\nconst LOCK_RETRY_JITTER_MS = 200;\n\nexport class NodeFileSystem implements IFileSystem {\n path: IPath = {\n join: path.join,\n resolve: path.resolve,\n relative: path.relative,\n dirname: path.dirname,\n isAbsolute: path.isAbsolute,\n basename: path.basename,\n };\n\n env: IEnv = {\n cwd: process.cwd,\n homedir: os.homedir,\n tmpdir: os.tmpdir,\n getenv: (key: string) => process.env[key],\n };\n\n utils: IUtils = {\n open: async (url: string) => {\n await open(url);\n },\n };\n\n async readFile(path: string): Promise<Uint8Array | null>;\n async readFile(\n path: string,\n options: { encoding: \"utf-8\" } | \"utf-8\",\n ): Promise<string | null>;\n async readFile(\n path: string,\n options?: { encoding: \"utf-8\" } | \"utf-8\",\n ): Promise<Uint8Array | string | null> {\n try {\n if (options) {\n return await fs.readFile(path, \"utf-8\");\n }\n return await fs.readFile(path);\n } catch (error: unknown) {\n if (this.isEnoent(error)) return null;\n throw error;\n }\n }\n\n async writeFile(\n filePath: string,\n data: string | Uint8Array,\n ): Promise<void> {\n const dir = path.dirname(filePath);\n if (dir) {\n await fs.mkdir(dir, { recursive: true });\n }\n await fs.writeFile(filePath, data);\n }\n\n async appendFile(\n filePath: string,\n data: string | Uint8Array,\n ): Promise<void> {\n const dir = path.dirname(filePath);\n if (dir) {\n await fs.mkdir(dir, { recursive: true });\n }\n await fs.appendFile(filePath, data);\n }\n\n async readdir(dirPath: string): Promise<string[]> {\n try {\n return await fs.readdir(dirPath);\n } catch (error: unknown) {\n if (this.isEnoent(error)) return [];\n throw error;\n }\n }\n\n async stat(filePath: string): Promise<FileSystemStats | null> {\n try {\n const stats = await fs.stat(filePath);\n return {\n isFile: () => stats.isFile(),\n isDirectory: () => stats.isDirectory(),\n size: stats.size,\n mtimeMs: stats.mtimeMs,\n };\n } catch (error: unknown) {\n if (this.isEnoent(error)) return null;\n throw error;\n }\n }\n\n async exists(filePath: string): Promise<boolean> {\n return existsSync(filePath);\n }\n\n async mkdir(dirPath: string): Promise<void> {\n await fs.mkdir(dirPath, { recursive: true });\n }\n\n async acquireLock(lockPath: string): Promise<() => Promise<void>> {\n // Normalize so two distinct input strings that resolve to the same\n // file (relative vs absolute, `..` segments, symlinked parent dir)\n // share a single lock. Without this, callers could each claim a\n // different `<path>.lock` file pointing at the same target and\n // defeat mutual exclusion.\n const canonicalPath = await this.canonicalizeLockTarget(lockPath);\n const lockFile = `${canonicalPath}.lock`;\n const ownerId = randomUUID();\n const start = Date.now();\n\n while (true) {\n try {\n // `wx` (O_CREAT | O_EXCL) is an atomic create-or-fail — the\n // contention signal we retry on is `EEXIST`. The owner id we\n // write lets release prove ownership, so a peer that reclaims\n // this lock as stale is never clobbered.\n await fs.writeFile(lockFile, ownerId, { flag: \"wx\" });\n return this.createLockRelease(lockFile, ownerId);\n } catch (error) {\n if (!this.hasErrnoCode(error, \"EEXIST\")) {\n throw error;\n }\n\n const stats = await fs.stat(lockFile).catch(() => null);\n if (stats && Date.now() - stats.mtimeMs > LOCK_STALE_MS) {\n // Holder stopped heartbeating — reclaim and retry at\n // once. If removal fails (e.g. a permission issue on the\n // lock file) fall through to the timeout/backoff below so\n // we never busy-spin on an unremovable stale lock.\n const reclaimed = await fs\n .rm(lockFile, { force: true })\n .then(() => true)\n .catch(() => false);\n if (reclaimed) continue;\n }\n if (Date.now() - start > LOCK_MAX_WAIT_MS) {\n throw new Error(\n `ELOCKED: timed out waiting for lock on ${canonicalPath}`,\n );\n }\n await new Promise((resolve) =>\n setTimeout(\n resolve,\n LOCK_RETRY_MIN_MS +\n Math.random() * LOCK_RETRY_JITTER_MS,\n ),\n );\n }\n }\n }\n\n private async canonicalizeLockTarget(lockPath: string): Promise<string> {\n // Make absolute via CWD, then realpath the FULL target so a\n // symlinked basename pointing at the same file collapses to one\n // identity (e.g. `.auth-link -> .auth`). When the target itself\n // does not exist yet (first-run auth file), fall back to\n // realpath-of-parent + lexical basename. When neither parent nor\n // target exists, fall back to the lexically resolved absolute\n // path — distinct strings for a non-existent dir tree get\n // distinct locks, but that case is degenerate (nothing to\n // contend on).\n const absolute = path.resolve(lockPath);\n const fullReal = await fs.realpath(absolute).catch(() => null);\n if (fullReal) return fullReal;\n const parent = path.dirname(absolute);\n const base = path.basename(absolute);\n const canonicalParent = await fs.realpath(parent).catch(() => parent);\n return path.join(canonicalParent, base);\n }\n\n private createLockRelease(\n lockFile: string,\n ownerId: string,\n ): () => Promise<void> {\n // Keep the lock fresh while held so peers never mistake a slow but\n // alive holder for a stale one. Best-effort: a missed touch only\n // brings the stale deadline forward. `unref` so the heartbeat never\n // keeps the process alive on its own.\n //\n // Self-rescheduling setTimeout chain (instead of setInterval) so\n // a tick whose readFile+utimes exceeds LOCK_HEARTBEAT_MS does not\n // overlap with the next tick — an in-flight stale utimes from a\n // prior tick could otherwise land on a peer's reclaimed lock and\n // silently refresh its mtime.\n //\n // Verify ownership before each touch. If a peer reclaimed this\n // lock as stale (e.g. after an OS suspend past LOCK_STALE_MS) and\n // wrote its own ownerId, an unconditional `utimes` would refresh\n // the peer's lock — silently extending its freshness and breaking\n // stale detection for everyone queued behind it. On owner\n // mismatch we stop heartbeating; release will see the same\n // mismatch and skip rm.\n //\n // After LOCK_MAX_HOLD_MS we stop heartbeating regardless of\n // ownership — a hung holder (e.g. stalled IdP fetch without a\n // client-side timeout) must not keep the lock fresh forever and\n // block every other process. The caller's critical section keeps\n // running; only the freshness signal stops, so peers reclaim it\n // as stale after one more LOCK_STALE_MS budget.\n const heartbeatStart = Date.now();\n let heartbeatTimer: ReturnType<typeof setTimeout> | undefined;\n let stopped = false;\n const stopHeartbeat = (): void => {\n stopped = true;\n if (heartbeatTimer) clearTimeout(heartbeatTimer);\n };\n const scheduleNextHeartbeat = (): void => {\n if (stopped) return;\n if (Date.now() - heartbeatStart >= LOCK_MAX_HOLD_MS) {\n stopped = true;\n return;\n }\n heartbeatTimer = setTimeout(() => {\n void runHeartbeat();\n }, LOCK_HEARTBEAT_MS);\n heartbeatTimer.unref?.();\n };\n const runHeartbeat = async (): Promise<void> => {\n if (stopped) return;\n const current = await fs\n .readFile(lockFile, \"utf-8\")\n .catch(() => null);\n if (stopped) return;\n if (current !== ownerId) {\n stopped = true;\n return;\n }\n const now = Date.now() / 1000;\n await fs.utimes(lockFile, now, now).catch(() => {});\n scheduleNextHeartbeat();\n };\n scheduleNextHeartbeat();\n\n let released = false;\n return async () => {\n if (released) return;\n released = true;\n stopHeartbeat();\n // Only remove the lock if we still own it. If this process was\n // suspended past LOCK_STALE_MS a peer may have reclaimed the lock\n // and written its own id; deleting that would break mutual\n // exclusion for everyone queued behind it.\n //\n // Narrow TOCTOU window remains between this readFile and the rm\n // below: if the process is suspended >LOCK_STALE_MS *after* the\n // owner-match read but *before* the rm, a peer can reclaim and\n // we will then rm the peer's lock. Window requires a multi-\n // second suspension between two adjacent awaits, which is\n // accepted: the heartbeat that previously held off staleness has\n // already been cleared at the top of release, so the suspension\n // would have to land in a sub-second slice of the release path.\n // A perfect fix would re-`writeFile(... wx)` self-check, which\n // muddies the owner-id semantics for no observable user benefit.\n const current = await fs\n .readFile(lockFile, \"utf-8\")\n .catch(() => null);\n if (current === ownerId) {\n await fs.rm(lockFile, { force: true });\n }\n };\n }\n\n async rm(filePath: string): Promise<void> {\n await fs.rm(filePath, { recursive: true, force: true });\n }\n\n async rename(oldPath: string, newPath: string): Promise<void> {\n await fs.rename(oldPath, newPath);\n }\n\n async realpath(filePath: string): Promise<string> {\n try {\n return await fs.realpath(filePath);\n } catch (error: unknown) {\n // Match the behaviour expected by callers walking ancestors of a\n // not-yet-existing path: return the input unchanged so consumers\n // can still reason about logical paths.\n if (this.isEnoent(error)) return filePath;\n throw error;\n }\n }\n\n async getTempDir(): Promise<string> {\n return await fs.mkdtemp(path.join(os.tmpdir(), \"uipath-fs-\"));\n }\n\n async copyDirectory(sourcePath: string, destPath: string): Promise<void> {\n const sourceStats = await this.stat(sourcePath);\n if (!sourceStats) {\n throw new Error(`Source directory does not exist: ${sourcePath}`);\n }\n if (!sourceStats.isDirectory()) {\n throw new Error(`Source path is not a directory: ${sourcePath}`);\n }\n\n await this.mkdir(destPath);\n\n const entries = await this.readdir(sourcePath);\n for (const entry of entries) {\n const srcEntry = path.join(sourcePath, entry);\n const destEntry = path.join(destPath, entry);\n const entryStats = await this.stat(srcEntry);\n if (!entryStats) continue;\n\n if (entryStats.isDirectory()) {\n await this.copyDirectory(srcEntry, destEntry);\n } else if (entryStats.isFile()) {\n const content = await this.readFile(srcEntry);\n if (content !== null) {\n await this.writeFile(destEntry, content);\n }\n }\n }\n }\n\n private isEnoent(error: unknown): boolean {\n return this.hasErrnoCode(error, \"ENOENT\");\n }\n\n private hasErrnoCode(error: unknown, code: string): boolean {\n return (\n typeof error === \"object\" &&\n error !== null &&\n \"code\" in error &&\n (error as { code: string }).code === code\n );\n }\n}\n",
|
|
61
|
+
"import process from 'node:process';\nimport path from 'node:path';\nimport {fileURLToPath} from 'node:url';\nimport childProcess from 'node:child_process';\nimport fs, {constants as fsConstants} from 'node:fs/promises';\nimport {\n\tisWsl,\n\tpowerShellPath,\n\tconvertWslPathToWindows,\n\tcanAccessPowerShell,\n\twslDefaultBrowser,\n} from 'wsl-utils';\nimport {executePowerShell} from 'powershell-utils';\nimport defineLazyProperty from 'define-lazy-prop';\nimport defaultBrowser, {_windowsBrowserProgIdMap} from 'default-browser';\nimport isInsideContainer from 'is-inside-container';\nimport isInSsh from 'is-in-ssh';\n\nconst fallbackAttemptSymbol = Symbol('fallbackAttempt');\n\n// Path to included `xdg-open`.\nconst __dirname = import.meta.url ? path.dirname(fileURLToPath(import.meta.url)) : '';\nconst localXdgOpenPath = path.join(__dirname, 'xdg-open');\n\nconst {platform, arch} = process;\n\nconst tryEachApp = async (apps, opener) => {\n\tif (apps.length === 0) {\n\t\t// No app was provided\n\t\treturn;\n\t}\n\n\tconst errors = [];\n\n\tfor (const app of apps) {\n\t\ttry {\n\t\t\treturn await opener(app); // eslint-disable-line no-await-in-loop\n\t\t} catch (error) {\n\t\t\terrors.push(error);\n\t\t}\n\t}\n\n\tthrow new AggregateError(errors, 'Failed to open in all supported apps');\n};\n\n// eslint-disable-next-line complexity\nconst baseOpen = async options => {\n\toptions = {\n\t\twait: false,\n\t\tbackground: false,\n\t\tnewInstance: false,\n\t\tallowNonzeroExitCode: false,\n\t\t...options,\n\t};\n\n\tconst isFallbackAttempt = options[fallbackAttemptSymbol] === true;\n\tdelete options[fallbackAttemptSymbol];\n\n\tif (Array.isArray(options.app)) {\n\t\treturn tryEachApp(options.app, singleApp => baseOpen({\n\t\t\t...options,\n\t\t\tapp: singleApp,\n\t\t\t[fallbackAttemptSymbol]: true,\n\t\t}));\n\t}\n\n\tlet {name: app, arguments: appArguments = []} = options.app ?? {};\n\tappArguments = [...appArguments];\n\n\tif (Array.isArray(app)) {\n\t\treturn tryEachApp(app, appName => baseOpen({\n\t\t\t...options,\n\t\t\tapp: {\n\t\t\t\tname: appName,\n\t\t\t\targuments: appArguments,\n\t\t\t},\n\t\t\t[fallbackAttemptSymbol]: true,\n\t\t}));\n\t}\n\n\tif (app === 'browser' || app === 'browserPrivate') {\n\t\t// IDs from default-browser for macOS and windows are the same.\n\t\t// IDs are lowercased to increase chances of a match.\n\t\tconst ids = {\n\t\t\t'com.google.chrome': 'chrome',\n\t\t\t'google-chrome.desktop': 'chrome',\n\t\t\t'com.brave.browser': 'brave',\n\t\t\t'org.mozilla.firefox': 'firefox',\n\t\t\t'firefox.desktop': 'firefox',\n\t\t\t'com.microsoft.msedge': 'edge',\n\t\t\t'com.microsoft.edge': 'edge',\n\t\t\t'com.microsoft.edgemac': 'edge',\n\t\t\t'microsoft-edge.desktop': 'edge',\n\t\t\t'com.apple.safari': 'safari',\n\t\t};\n\n\t\t// Incognito flags for each browser in `apps`.\n\t\tconst flags = {\n\t\t\tchrome: '--incognito',\n\t\t\tbrave: '--incognito',\n\t\t\tfirefox: '--private-window',\n\t\t\tedge: '--inPrivate',\n\t\t\t// Safari doesn't support private mode via command line\n\t\t};\n\n\t\tlet browser;\n\t\tif (isWsl) {\n\t\t\tconst progId = await wslDefaultBrowser();\n\t\t\tconst browserInfo = _windowsBrowserProgIdMap.get(progId);\n\t\t\tbrowser = browserInfo ?? {};\n\t\t} else {\n\t\t\tbrowser = await defaultBrowser();\n\t\t}\n\n\t\tif (browser.id in ids) {\n\t\t\tconst browserName = ids[browser.id.toLowerCase()];\n\n\t\t\tif (app === 'browserPrivate') {\n\t\t\t\t// Safari doesn't support private mode via command line\n\t\t\t\tif (browserName === 'safari') {\n\t\t\t\t\tthrow new Error('Safari doesn\\'t support opening in private mode via command line');\n\t\t\t\t}\n\n\t\t\t\tappArguments.push(flags[browserName]);\n\t\t\t}\n\n\t\t\treturn baseOpen({\n\t\t\t\t...options,\n\t\t\t\tapp: {\n\t\t\t\t\tname: apps[browserName],\n\t\t\t\t\targuments: appArguments,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthrow new Error(`${browser.name} is not supported as a default browser`);\n\t}\n\n\tlet command;\n\tconst cliArguments = [];\n\tconst childProcessOptions = {};\n\n\t// Determine if we should use Windows/PowerShell behavior in WSL.\n\t// We only use Windows integration if PowerShell is actually accessible.\n\t// This allows the package to work in sandboxed WSL environments where Windows access is restricted.\n\tlet shouldUseWindowsInWsl = false;\n\tif (isWsl && !isInsideContainer() && !isInSsh && !app) {\n\t\tshouldUseWindowsInWsl = await canAccessPowerShell();\n\t}\n\n\tif (platform === 'darwin') {\n\t\tcommand = 'open';\n\n\t\tif (options.wait) {\n\t\t\tcliArguments.push('--wait-apps');\n\t\t}\n\n\t\tif (options.background) {\n\t\t\tcliArguments.push('--background');\n\t\t}\n\n\t\tif (options.newInstance) {\n\t\t\tcliArguments.push('--new');\n\t\t}\n\n\t\tif (app) {\n\t\t\tcliArguments.push('-a', app);\n\t\t}\n\t} else if (platform === 'win32' || shouldUseWindowsInWsl) {\n\t\tcommand = await powerShellPath();\n\n\t\tcliArguments.push(...executePowerShell.argumentsPrefix);\n\n\t\tif (!isWsl) {\n\t\t\tchildProcessOptions.windowsVerbatimArguments = true;\n\t\t}\n\n\t\t// Convert WSL Linux paths to Windows paths\n\t\tif (isWsl && options.target) {\n\t\t\toptions.target = await convertWslPathToWindows(options.target);\n\t\t}\n\n\t\t// Suppress PowerShell progress messages that are written to stderr\n\t\tconst encodedArguments = ['$ProgressPreference = \\'SilentlyContinue\\';', 'Start'];\n\n\t\tif (options.wait) {\n\t\t\tencodedArguments.push('-Wait');\n\t\t}\n\n\t\tif (app) {\n\t\t\tencodedArguments.push(executePowerShell.escapeArgument(app));\n\t\t\tif (options.target) {\n\t\t\t\tappArguments.push(options.target);\n\t\t\t}\n\t\t} else if (options.target) {\n\t\t\tencodedArguments.push(executePowerShell.escapeArgument(options.target));\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tappArguments = appArguments.map(argument => executePowerShell.escapeArgument(argument));\n\t\t\tencodedArguments.push('-ArgumentList', appArguments.join(','));\n\t\t}\n\n\t\t// Using Base64-encoded command, accepted by PowerShell, to allow special characters.\n\t\toptions.target = executePowerShell.encodeCommand(encodedArguments.join(' '));\n\n\t\tif (!options.wait) {\n\t\t\t// PowerShell will keep the parent process alive unless stdio is ignored.\n\t\t\tchildProcessOptions.stdio = 'ignore';\n\t\t}\n\t} else {\n\t\tif (app) {\n\t\t\tcommand = app;\n\t\t} else {\n\t\t\t// When bundled by Webpack, there's no actual package file path and no local `xdg-open`.\n\t\t\tconst isBundled = !__dirname || __dirname === '/';\n\n\t\t\t// Check if local `xdg-open` exists and is executable.\n\t\t\tlet exeLocalXdgOpen = false;\n\t\t\ttry {\n\t\t\t\tawait fs.access(localXdgOpenPath, fsConstants.X_OK);\n\t\t\t\texeLocalXdgOpen = true;\n\t\t\t} catch {}\n\n\t\t\tconst useSystemXdgOpen = process.versions.electron\n\t\t\t\t?? (platform === 'android' || isBundled || !exeLocalXdgOpen);\n\t\t\tcommand = useSystemXdgOpen ? 'xdg-open' : localXdgOpenPath;\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tcliArguments.push(...appArguments);\n\t\t}\n\n\t\tif (!options.wait) {\n\t\t\t// `xdg-open` will block the process unless stdio is ignored\n\t\t\t// and it's detached from the parent even if it's unref'd.\n\t\t\tchildProcessOptions.stdio = 'ignore';\n\t\t\tchildProcessOptions.detached = true;\n\t\t}\n\t}\n\n\tif (platform === 'darwin' && appArguments.length > 0) {\n\t\tcliArguments.push('--args', ...appArguments);\n\t}\n\n\t// IMPORTANT: On macOS, the target MUST come AFTER '--args'.\n\t// When using --args, ALL following arguments are passed to the app.\n\t// Example: open -a \"chrome\" --args --incognito https://site.com\n\t// This passes BOTH --incognito AND https://site.com to Chrome.\n\t// Without this order, Chrome won't open in incognito. See #332.\n\tif (options.target) {\n\t\tcliArguments.push(options.target);\n\t}\n\n\tconst subprocess = childProcess.spawn(command, cliArguments, childProcessOptions);\n\n\tif (options.wait) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsubprocess.once('error', reject);\n\n\t\t\tsubprocess.once('close', exitCode => {\n\t\t\t\tif (!options.allowNonzeroExitCode && exitCode !== 0) {\n\t\t\t\t\treject(new Error(`Exited with code ${exitCode}`));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve(subprocess);\n\t\t\t});\n\t\t});\n\t}\n\n\t// When we're in a fallback attempt, we need to detect launch failures before trying the next app.\n\t// Wait for the close event to check the exit code before unreffing.\n\t// The launcher (open/xdg-open/PowerShell) exits quickly (~10-30ms) even on success.\n\tif (isFallbackAttempt) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsubprocess.once('error', reject);\n\n\t\t\tsubprocess.once('spawn', () => {\n\t\t\t\t// Keep error handler active for post-spawn errors\n\t\t\t\tsubprocess.once('close', exitCode => {\n\t\t\t\t\tsubprocess.off('error', reject);\n\n\t\t\t\t\tif (exitCode !== 0) {\n\t\t\t\t\t\treject(new Error(`Exited with code ${exitCode}`));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tsubprocess.unref();\n\t\t\t\t\tresolve(subprocess);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\tsubprocess.unref();\n\n\t// Handle spawn errors before the caller can attach listeners.\n\t// This prevents unhandled error events from crashing the process.\n\treturn new Promise((resolve, reject) => {\n\t\tsubprocess.once('error', reject);\n\n\t\t// Wait for the subprocess to spawn before resolving.\n\t\t// This ensures the process is established before the caller continues,\n\t\t// preventing issues when process.exit() is called immediately after.\n\t\tsubprocess.once('spawn', () => {\n\t\t\tsubprocess.off('error', reject);\n\t\t\tresolve(subprocess);\n\t\t});\n\t});\n};\n\nconst open = (target, options) => {\n\tif (typeof target !== 'string') {\n\t\tthrow new TypeError('Expected a `target`');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\ttarget,\n\t});\n};\n\nexport const openApp = (name, options) => {\n\tif (typeof name !== 'string' && !Array.isArray(name)) {\n\t\tthrow new TypeError('Expected a valid `name`');\n\t}\n\n\tconst {arguments: appArguments = []} = options ?? {};\n\tif (appArguments !== undefined && appArguments !== null && !Array.isArray(appArguments)) {\n\t\tthrow new TypeError('Expected `appArguments` as Array type');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\tapp: {\n\t\t\tname,\n\t\t\targuments: appArguments,\n\t\t},\n\t});\n};\n\nfunction detectArchBinary(binary) {\n\tif (typeof binary === 'string' || Array.isArray(binary)) {\n\t\treturn binary;\n\t}\n\n\tconst {[arch]: archBinary} = binary;\n\n\tif (!archBinary) {\n\t\tthrow new Error(`${arch} is not supported`);\n\t}\n\n\treturn archBinary;\n}\n\nfunction detectPlatformBinary({[platform]: platformBinary}, {wsl} = {}) {\n\tif (wsl && isWsl) {\n\t\treturn detectArchBinary(wsl);\n\t}\n\n\tif (!platformBinary) {\n\t\tthrow new Error(`${platform} is not supported`);\n\t}\n\n\treturn detectArchBinary(platformBinary);\n}\n\nexport const apps = {\n\tbrowser: 'browser',\n\tbrowserPrivate: 'browserPrivate',\n};\n\ndefineLazyProperty(apps, 'chrome', () => detectPlatformBinary({\n\tdarwin: 'google chrome',\n\twin32: 'chrome',\n\t// `chromium-browser` is the older deb package name used by Ubuntu/Debian before snap.\n\tlinux: ['google-chrome', 'google-chrome-stable', 'chromium', 'chromium-browser'],\n}, {\n\twsl: {\n\t\tia32: '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe',\n\t\tx64: ['/mnt/c/Program Files/Google/Chrome/Application/chrome.exe', '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe'],\n\t},\n}));\n\ndefineLazyProperty(apps, 'brave', () => detectPlatformBinary({\n\tdarwin: 'brave browser',\n\twin32: 'brave',\n\tlinux: ['brave-browser', 'brave'],\n}, {\n\twsl: {\n\t\tia32: '/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe',\n\t\tx64: ['/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe', '/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe'],\n\t},\n}));\n\ndefineLazyProperty(apps, 'firefox', () => detectPlatformBinary({\n\tdarwin: 'firefox',\n\twin32: String.raw`C:\\Program Files\\Mozilla Firefox\\firefox.exe`,\n\tlinux: 'firefox',\n}, {\n\twsl: '/mnt/c/Program Files/Mozilla Firefox/firefox.exe',\n}));\n\ndefineLazyProperty(apps, 'edge', () => detectPlatformBinary({\n\tdarwin: 'microsoft edge',\n\twin32: 'msedge',\n\tlinux: ['microsoft-edge', 'microsoft-edge-dev'],\n}, {\n\twsl: '/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe',\n}));\n\ndefineLazyProperty(apps, 'safari', () => detectPlatformBinary({\n\tdarwin: 'Safari',\n}));\n\nexport default open;\n",
|
|
62
|
+
"import {promisify} from 'node:util';\nimport childProcess from 'node:child_process';\nimport fs, {constants as fsConstants} from 'node:fs/promises';\nimport isWsl from 'is-wsl';\nimport {powerShellPath as windowsPowerShellPath, executePowerShell} from 'powershell-utils';\nimport {parseMountPointFromConfig} from './utilities.js';\n\nconst execFile = promisify(childProcess.execFile);\n\nexport const wslDrivesMountPoint = (() => {\n\t// Default value for \"root\" param\n\t// according to https://docs.microsoft.com/en-us/windows/wsl/wsl-config\n\tconst defaultMountPoint = '/mnt/';\n\n\tlet mountPoint;\n\n\treturn async function () {\n\t\tif (mountPoint) {\n\t\t\t// Return memoized mount point value\n\t\t\treturn mountPoint;\n\t\t}\n\n\t\tconst configFilePath = '/etc/wsl.conf';\n\n\t\tlet isConfigFileExists = false;\n\t\ttry {\n\t\t\tawait fs.access(configFilePath, fsConstants.F_OK);\n\t\t\tisConfigFileExists = true;\n\t\t} catch {}\n\n\t\tif (!isConfigFileExists) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tconst configContent = await fs.readFile(configFilePath, {encoding: 'utf8'});\n\t\tconst parsedMountPoint = parseMountPointFromConfig(configContent);\n\n\t\tif (parsedMountPoint === undefined) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tmountPoint = parsedMountPoint;\n\t\tmountPoint = mountPoint.endsWith('/') ? mountPoint : `${mountPoint}/`;\n\n\t\treturn mountPoint;\n\t};\n})();\n\nexport const powerShellPathFromWsl = async () => {\n\tconst mountPoint = await wslDrivesMountPoint();\n\treturn `${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`;\n};\n\nexport const powerShellPath = isWsl ? powerShellPathFromWsl : windowsPowerShellPath;\n\n// Cache for PowerShell accessibility check\nlet canAccessPowerShellPromise;\n\nexport const canAccessPowerShell = async () => {\n\tcanAccessPowerShellPromise ??= (async () => {\n\t\ttry {\n\t\t\tconst psPath = await powerShellPath();\n\t\t\tawait fs.access(psPath, fsConstants.X_OK);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\t// PowerShell is not accessible (either doesn't exist, no execute permission, or other error)\n\t\t\treturn false;\n\t\t}\n\t})();\n\n\treturn canAccessPowerShellPromise;\n};\n\nexport const wslDefaultBrowser = async () => {\n\tconst psPath = await powerShellPath();\n\tconst command = String.raw`(Get-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice\").ProgId`;\n\n\tconst {stdout} = await executePowerShell(command, {powerShellPath: psPath});\n\n\treturn stdout.trim();\n};\n\nexport const convertWslPathToWindows = async path => {\n\t// Don't convert URLs\n\tif (/^[a-z]+:\\/\\//i.test(path)) {\n\t\treturn path;\n\t}\n\n\ttry {\n\t\tconst {stdout} = await execFile('wslpath', ['-aw', path], {encoding: 'utf8'});\n\t\treturn stdout.trim();\n\t} catch {\n\t\t// If wslpath fails, return the original path\n\t\treturn path;\n\t}\n};\n\nexport {default as isWsl} from 'is-wsl';\n",
|
|
63
|
+
"import process from 'node:process';\nimport os from 'node:os';\nimport fs from 'node:fs';\nimport isInsideContainer from 'is-inside-container';\n\nconst isWsl = () => {\n\tif (process.platform !== 'linux') {\n\t\treturn false;\n\t}\n\n\tif (os.release().toLowerCase().includes('microsoft')) {\n\t\tif (isInsideContainer()) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\ttry {\n\t\tif (fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft')) {\n\t\t\treturn !isInsideContainer();\n\t\t}\n\t} catch {}\n\n\t// Fallback for custom kernels: check WSL-specific paths.\n\tif (\n\t\tfs.existsSync('/proc/sys/fs/binfmt_misc/WSLInterop')\n\t\t|| fs.existsSync('/run/WSL')\n\t) {\n\t\treturn !isInsideContainer();\n\t}\n\n\treturn false;\n};\n\nexport default process.env.__IS_WSL_TEST__ ? isWsl : isWsl();\n",
|
|
64
|
+
"import fs from 'node:fs';\nimport isDocker from 'is-docker';\n\nlet cachedResult;\n\n// Podman detection\nconst hasContainerEnv = () => {\n\ttry {\n\t\tfs.statSync('/run/.containerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport default function isInsideContainer() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (cachedResult === undefined) {\n\t\tcachedResult = hasContainerEnv() || isDocker();\n\t}\n\n\treturn cachedResult;\n}\n",
|
|
65
|
+
"import fs from 'node:fs';\n\nlet isDockerCached;\n\nfunction hasDockerEnv() {\n\ttry {\n\t\tfs.statSync('/.dockerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction hasDockerCGroup() {\n\ttry {\n\t\treturn fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker');\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport default function isDocker() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (isDockerCached === undefined) {\n\t\tisDockerCached = hasDockerEnv() || hasDockerCGroup();\n\t}\n\n\treturn isDockerCached;\n}\n",
|
|
66
|
+
"import process from 'node:process';\nimport {Buffer} from 'node:buffer';\nimport {promisify} from 'node:util';\nimport childProcess from 'node:child_process';\nimport fs, {constants as fsConstants} from 'node:fs/promises';\n\nconst execFile = promisify(childProcess.execFile);\n\nexport const powerShellPath = () => `${process.env.SYSTEMROOT || process.env.windir || String.raw`C:\\Windows`}\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\powershell.exe`;\n\n// Cache for PowerShell accessibility check\nlet canAccessCache;\n\nexport const canAccessPowerShell = async () => {\n\tcanAccessCache ??= (async () => {\n\t\ttry {\n\t\t\tawait fs.access(powerShellPath(), fsConstants.X_OK);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t})();\n\n\treturn canAccessCache;\n};\n\nexport const executePowerShell = async (command, options = {}) => {\n\tconst {\n\t\tpowerShellPath: psPath,\n\t\t...execFileOptions\n\t} = options;\n\n\tconst encodedCommand = executePowerShell.encodeCommand(command);\n\n\treturn execFile(\n\t\tpsPath ?? powerShellPath(),\n\t\t[\n\t\t\t...executePowerShell.argumentsPrefix,\n\t\t\tencodedCommand,\n\t\t],\n\t\t{\n\t\t\tencoding: 'utf8',\n\t\t\t...execFileOptions,\n\t\t},\n\t);\n};\n\nexecutePowerShell.argumentsPrefix = [\n\t'-NoProfile',\n\t'-NonInteractive',\n\t'-ExecutionPolicy',\n\t'Bypass',\n\t'-EncodedCommand',\n];\n\nexecutePowerShell.encodeCommand = command => Buffer.from(command, 'utf16le').toString('base64');\n\nexecutePowerShell.escapeArgument = value => `'${String(value).replaceAll('\\'', '\\'\\'')}'`;\n",
|
|
67
|
+
"export function parseMountPointFromConfig(content) {\n\tfor (const line of content.split('\\n')) {\n\t\t// Skip comment lines\n\t\tif (/^\\s*#/.test(line)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Match root at start of line (after optional whitespace)\n\t\tconst match = /^\\s*root\\s*=\\s*(?<mountPoint>\"[^\"]*\"|'[^']*'|[^#]*)/.exec(line);\n\t\tif (!match) {\n\t\t\tcontinue;\n\t\t}\n\n\t\treturn match.groups.mountPoint\n\t\t\t.trim()\n\t\t\t// Strip surrounding quotes\n\t\t\t.replaceAll(/^[\"']|[\"']$/g, '');\n\t}\n}\n",
|
|
68
|
+
"export default function defineLazyProperty(object, propertyName, valueGetter) {\n\tconst define = value => Object.defineProperty(object, propertyName, {value, enumerable: true, writable: true});\n\n\tObject.defineProperty(object, propertyName, {\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t\tget() {\n\t\t\tconst result = valueGetter();\n\t\t\tdefine(result);\n\t\t\treturn result;\n\t\t},\n\t\tset(value) {\n\t\t\tdefine(value);\n\t\t}\n\t});\n\n\treturn object;\n}\n",
|
|
69
|
+
"import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\nimport defaultBrowserId from 'default-browser-id';\nimport bundleName from 'bundle-name';\nimport windows from './windows.js';\n\nexport {_windowsBrowserProgIdMap} from './windows.js';\n\nconst execFileAsync = promisify(execFile);\n\n// Inlined: https://github.com/sindresorhus/titleize/blob/main/index.js\nconst titleize = string => string.toLowerCase().replaceAll(/(?:^|\\s|-)\\S/g, x => x.toUpperCase());\n\nexport default async function defaultBrowser() {\n\tif (process.platform === 'darwin') {\n\t\tconst id = await defaultBrowserId();\n\t\tconst name = await bundleName(id);\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'linux') {\n\t\tconst {stdout} = await execFileAsync('xdg-mime', ['query', 'default', 'x-scheme-handler/http']);\n\t\tconst id = stdout.trim();\n\t\tconst name = titleize(id.replace(/.desktop$/, '').replace('-', ' '));\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'win32') {\n\t\treturn windows();\n\t}\n\n\tthrow new Error('Only macOS, Linux, and Windows are supported');\n}\n",
|
|
70
|
+
"import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport default async function defaultBrowserId() {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst {stdout} = await execFileAsync('defaults', ['read', 'com.apple.LaunchServices/com.apple.launchservices.secure', 'LSHandlers']);\n\n\t// `(?!-)` is to prevent matching `LSHandlerRoleAll = \"-\";`.\n\tconst match = /LSHandlerRoleAll = \"(?!-)(?<id>[^\"]+?)\";\\s+?LSHandlerURLScheme = (?:http|https);/.exec(stdout);\n\n\tconst browserId = match?.groups.id ?? 'com.apple.Safari';\n\n\t// Correct the case for Safari's bundle identifier\n\tif (browserId === 'com.apple.safari') {\n\t\treturn 'com.apple.Safari';\n\t}\n\n\treturn browserId;\n}\n",
|
|
71
|
+
"import process from 'node:process';\nimport {promisify} from 'node:util';\nimport {execFile, execFileSync} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport async function runAppleScript(script, {humanReadableOutput = true, signal} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst execOptions = {};\n\tif (signal) {\n\t\texecOptions.signal = signal;\n\t}\n\n\tconst {stdout} = await execFileAsync('osascript', ['-e', script, outputArguments], execOptions);\n\treturn stdout.trim();\n}\n\nexport function runAppleScriptSync(script, {humanReadableOutput = true} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst stdout = execFileSync('osascript', ['-e', script, ...outputArguments], {\n\t\tencoding: 'utf8',\n\t\tstdio: ['ignore', 'pipe', 'ignore'],\n\t\ttimeout: 500,\n\t});\n\n\treturn stdout.trim();\n}\n",
|
|
72
|
+
"import {runAppleScript} from 'run-applescript';\n\nexport default async function bundleName(bundleId) {\n\treturn runAppleScript(`tell application \"Finder\" to set app_path to application file id \"${bundleId}\" as string\\ntell application \"System Events\" to get value of property list item \"CFBundleName\" of property list file (app_path & \":Contents:Info.plist\")`);\n}\n",
|
|
73
|
+
"import {promisify} from 'node:util';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\n// TODO: Fix the casing of bundle identifiers in the next major version.\n\n// Windows doesn't have browser IDs in the same way macOS/Linux does so we give fake\n// ones that look real and match the macOS/Linux versions for cross-platform apps.\nconst windowsBrowserProgIds = {\n\tMSEdgeHTM: {name: 'Edge', id: 'com.microsoft.edge'}, // The missing `L` is correct.\n\tMSEdgeBHTML: {name: 'Edge Beta', id: 'com.microsoft.edge.beta'},\n\tMSEdgeDHTML: {name: 'Edge Dev', id: 'com.microsoft.edge.dev'},\n\tAppXq0fevzme2pys62n3e0fbqa7peapykr8v: {name: 'Edge', id: 'com.microsoft.edge.old'},\n\tChromeHTML: {name: 'Chrome', id: 'com.google.chrome'},\n\tChromeBHTML: {name: 'Chrome Beta', id: 'com.google.chrome.beta'},\n\tChromeDHTML: {name: 'Chrome Dev', id: 'com.google.chrome.dev'},\n\tChromiumHTM: {name: 'Chromium', id: 'org.chromium.Chromium'},\n\tBraveHTML: {name: 'Brave', id: 'com.brave.Browser'},\n\tBraveBHTML: {name: 'Brave Beta', id: 'com.brave.Browser.beta'},\n\tBraveDHTML: {name: 'Brave Dev', id: 'com.brave.Browser.dev'},\n\tBraveSSHTM: {name: 'Brave Nightly', id: 'com.brave.Browser.nightly'},\n\tFirefoxURL: {name: 'Firefox', id: 'org.mozilla.firefox'},\n\tOperaStable: {name: 'Opera', id: 'com.operasoftware.Opera'},\n\tVivaldiHTM: {name: 'Vivaldi', id: 'com.vivaldi.Vivaldi'},\n\t'IE.HTTP': {name: 'Internet Explorer', id: 'com.microsoft.ie'},\n};\n\nexport const _windowsBrowserProgIdMap = new Map(Object.entries(windowsBrowserProgIds));\n\nexport class UnknownBrowserError extends Error {}\n\nexport default async function defaultBrowser(_execFileAsync = execFileAsync) {\n\tconst {stdout} = await _execFileAsync('reg', [\n\t\t'QUERY',\n\t\t' HKEY_CURRENT_USER\\\\Software\\\\Microsoft\\\\Windows\\\\Shell\\\\Associations\\\\UrlAssociations\\\\http\\\\UserChoice',\n\t\t'/v',\n\t\t'ProgId',\n\t]);\n\n\tconst match = /ProgId\\s*REG_SZ\\s*(?<id>\\S+)/.exec(stdout);\n\tif (!match) {\n\t\tthrow new UnknownBrowserError(`Cannot find Windows browser in stdout: ${JSON.stringify(stdout)}`);\n\t}\n\n\tconst {id} = match.groups;\n\n\t// Windows can append a hash suffix to ProgIds using a dot or hyphen\n\t// (e.g., `ChromeHTML.ABC123`, `FirefoxURL-6F193CCC56814779`).\n\t// Try exact match first, then try without the suffix.\n\tconst dotIndex = id.lastIndexOf('.');\n\tconst hyphenIndex = id.lastIndexOf('-');\n\tconst baseIdByDot = dotIndex === -1 ? undefined : id.slice(0, dotIndex);\n\tconst baseIdByHyphen = hyphenIndex === -1 ? undefined : id.slice(0, hyphenIndex);\n\n\treturn windowsBrowserProgIds[id] ?? windowsBrowserProgIds[baseIdByDot] ?? windowsBrowserProgIds[baseIdByHyphen] ?? {name: id, id};\n}\n",
|
|
74
|
+
"import process from 'node:process';\n\nconst isInSsh = Boolean(process.env.SSH_CONNECTION\n\t|| process.env.SSH_CLIENT\n\t|| process.env.SSH_TTY);\n\nexport default isInSsh;\n",
|
|
75
|
+
"import type { IFileSystem } from \"./interfaces.js\";\nimport { NodeFileSystem } from \"./node.js\";\n\nconst fsInstance = new NodeFileSystem();\n\n// Type-only mirror of the browser entry's `setFileSystem`. Consumers import\n// via the bare `@uipath/filesystem` specifier; TypeScript resolves that to\n// this Node entry's `.d.ts`, so the export must exist here. At runtime the\n// bundler's browser conditional export swaps in `index.browser.ts`, where\n// the real override implementation lives. Node never exercises this path, so\n// we keep it as a no-op to leave Node runtime behaviour unchanged.\nexport const setFileSystem =\n (_fs: IFileSystem | null): (() => void) =>\n () => {};\n\nexport const getFileSystem = (): IFileSystem => fsInstance;\n\nexport const getFileSystemAsync = async (): Promise<IFileSystem> => fsInstance;\n\nexport * from \"./interfaces.js\";\nexport { NodeFileSystem } from \"./node.js\";\n",
|
|
76
|
+
"type CatchErrorResult<T> = [undefined, T] | [Error, undefined];\ntype FunctionOrPromise<T> = Promise<T> | (() => T);\n\n// Duck-type check for promise-like objects. Using instanceof Promise\n// fails in cross-realm environments (iframes, module federation, IIFE\n// bundles hosted on a different page) where the Promise constructor\n// differs from the one in the current execution context.\nfunction isPromiseLike(value: unknown): value is PromiseLike<unknown> {\n return (\n value !== null &&\n typeof value === \"object\" &&\n typeof (value as { then?: unknown }).then === \"function\"\n );\n}\n\nexport function catchError<T>(\n fnOrPromise: Promise<T>,\n): Promise<CatchErrorResult<T>>;\n\nexport function catchError<T>(\n fnOrPromise: () => Promise<T>,\n): Promise<CatchErrorResult<T>>;\n\nexport function catchError<T>(fnOrPromise: () => T): CatchErrorResult<T>;\n\nexport function catchError<T>(\n fnOrPromise: FunctionOrPromise<T>,\n): Promise<CatchErrorResult<T>> | CatchErrorResult<T> {\n if (isPromiseLike(fnOrPromise)) {\n return settlePromiseLike(fnOrPromise as PromiseLike<T>);\n }\n\n try {\n const result = (fnOrPromise as () => T)();\n if (isPromiseLike(result)) {\n return settlePromiseLike(result as PromiseLike<T>);\n }\n return [undefined, result] as const;\n } catch (error) {\n return [\n error instanceof Error ? error : new Error(String(error)),\n undefined,\n ] as const;\n }\n}\n\n// Promise.resolve() coerces any PromiseLike into a genuine Promise, giving us\n// access to `.catch` even for cross-realm thenables that only guarantee `.then`.\nfunction settlePromiseLike<T>(\n thenable: PromiseLike<T>,\n): Promise<CatchErrorResult<T>> {\n return Promise.resolve(thenable)\n .then((data): CatchErrorResult<T> => [undefined, data] as const)\n .catch(\n (error: unknown): CatchErrorResult<T> =>\n [\n error instanceof Error ? error : new Error(String(error)),\n undefined,\n ] as const,\n );\n}\n",
|
|
77
|
+
"import { catchError } from \"./catch-error\";\nimport type {\n CliErrorCode,\n ErrorContext,\n FailureResultType,\n RetryHint,\n} from \"./formatter\";\n\n/**\n * Structured error details returned by {@link extractErrorDetails}.\n */\nexport interface ErrorDetails {\n /** Categorised failure type suitable for OutputFormatter.error() Result field */\n result: FailureResultType;\n /** Stable CLI-owned error code suitable for agent control flow */\n errorCode: CliErrorCode;\n /** Human-readable error message suitable for OutputFormatter.error() */\n message: string;\n /** Stable retry guidance suitable for agent control flow */\n retry: RetryHint;\n /** Raw details from the response body or error object for debugging */\n details: string;\n /** Machine-readable context for agents (HTTP status, request ID, retry-after, etc.) */\n context?: ErrorContext;\n /**\n * Per-field validation errors lifted from an ASP.NET ProblemDetails body\n * (application/problem+json). Shape: `{ fieldName: [\"msg\", ...] }`.\n * Surfaced as `Errors` on the OutputFormatter envelope so agents can\n * react to the specific field that failed validation instead of parsing\n * the free-text Message.\n */\n parsedErrors?: Record<string, string[]>;\n}\n\n/**\n * Options for customising error extraction behaviour.\n */\nexport interface ExtractErrorOptions {\n /** Custom message for HTTP 403 Forbidden errors. Uses a generic default if omitted. */\n forbiddenMessage?: string;\n}\n\nconst DEFAULT_401 = \"Unauthorized (401). Run `uip login` to authenticate.\";\nconst DEFAULT_403 =\n \"Forbidden (403). Ensure the account has the required permissions.\";\nconst DEFAULT_405 =\n \"Method Not Allowed (405). The endpoint may not exist or the base URL may be incorrect.\";\nconst HTML_RESPONSE_MESSAGE =\n \"Received HTML instead of the expected JSON response.\";\nconst NETWORK_ERROR_CODES = new Set([\n \"ECONNREFUSED\",\n \"ECONNRESET\",\n \"ENOTFOUND\",\n \"EAI_AGAIN\",\n \"ETIMEDOUT\",\n \"EPIPE\",\n \"EHOSTUNREACH\",\n \"ENETUNREACH\",\n \"EAI_FAIL\",\n]);\n\n// TLS trust failures — almost always a corporate proxy / firewall that\n// re-signs HTTPS with a root CA that Node does not trust. Node's `fetch`\n// hides these inside a generic `TypeError: fetch failed`, with the real\n// code on `error.cause`.\nconst TLS_ERROR_CODES = new Set([\n \"SELF_SIGNED_CERT_IN_CHAIN\",\n \"DEPTH_ZERO_SELF_SIGNED_CERT\",\n \"UNABLE_TO_VERIFY_LEAF_SIGNATURE\",\n \"UNABLE_TO_GET_ISSUER_CERT_LOCALLY\",\n \"UNABLE_TO_GET_ISSUER_CERT\",\n \"CERT_HAS_EXPIRED\",\n \"CERT_UNTRUSTED\",\n \"ERR_TLS_CERT_ALTNAME_INVALID\",\n]);\n\nconst TLS_INSTRUCTIONS =\n \"The server's TLS certificate could not be verified. Most often a \" +\n \"corporate proxy/firewall re-signs HTTPS with a root CA that Node does \" +\n \"not trust — set NODE_EXTRA_CA_CERTS to that CA's PEM file (and HTTPS_PROXY \" +\n \"if you connect through a proxy). If the certificate is instead expired or \" +\n \"its hostname does not match, fix the endpoint URL or the system clock. \" +\n \"Then retry.\";\n\nconst NETWORK_INSTRUCTIONS =\n \"Could not reach the UiPath service. Check your network connection and \" +\n \"VPN, confirm any HTTP_PROXY/HTTPS_PROXY/NO_PROXY settings are correct, \" +\n \"then retry.\";\n\n/**\n * A connectivity failure (TLS trust or socket/DNS), already classified with\n * actionable guidance. Returned by {@link describeConnectivityError}.\n */\nexport interface ConnectivityError {\n /** The OS/TLS error code, e.g. `SELF_SIGNED_CERT_IN_CHAIN`. */\n code: string;\n /** Whether the failure is a TLS trust problem or a plain network problem. */\n kind: \"tls\" | \"network\";\n /** The most specific message found while walking the cause chain. */\n message: string;\n /** Actionable, user-facing remediation steps. */\n instructions: string;\n}\n\n/**\n * Classify an outbound connectivity failure by walking the `cause` chain.\n *\n * Node's native `fetch` wraps the real failure (a TLS or socket error) inside\n * a generic `TypeError: fetch failed`, so the useful code/message lives on\n * `error.cause` (sometimes nested deeper). This unwraps that chain and, when\n * it finds a known TLS or network code, returns the specific message plus\n * remediation steps. Returns `undefined` for anything that isn't a recognised\n * connectivity failure so callers can fall back to their normal handling.\n */\nexport function describeConnectivityError(\n error: unknown,\n): ConnectivityError | undefined {\n let current: unknown = error;\n for (\n let depth = 0;\n depth < 5 && current !== null && typeof current === \"object\";\n depth++\n ) {\n const cur = current as Record<string, unknown>;\n const code = typeof cur.code === \"string\" ? cur.code : undefined;\n const message =\n typeof cur.message === \"string\" ? cur.message : undefined;\n if (code && TLS_ERROR_CODES.has(code)) {\n return {\n code,\n kind: \"tls\",\n message: message ?? code,\n instructions: TLS_INSTRUCTIONS,\n };\n }\n if (code && NETWORK_ERROR_CODES.has(code)) {\n return {\n code,\n kind: \"network\",\n message: message ?? code,\n instructions: NETWORK_INSTRUCTIONS,\n };\n }\n current = cur.cause;\n }\n return undefined;\n}\n\ninterface ResponseLike {\n status?: number;\n statusText?: string;\n text?: () => Promise<string>;\n}\n\nexport function isHtmlDocument(body: string): boolean {\n return /^\\s*(<!doctype html|<html\\b)/i.test(body);\n}\n\nfunction retryHintForRetryAfter(seconds: number): RetryHint {\n if (seconds <= 1) {\n return \"RetryAfter1Second\";\n }\n if (seconds <= 10) {\n return \"RetryAfter10Seconds\";\n }\n if (seconds <= 30) {\n return \"RetryAfter30Seconds\";\n }\n return \"RetryAfter60Seconds\";\n}\n\nfunction classifyError(\n status: number | undefined,\n error: unknown,\n): { errorCode: CliErrorCode; retry: RetryHint } {\n if (status === 400 || status === 409 || status === 422) {\n return { errorCode: \"invalid_argument\", retry: \"RetryWillNotFix\" };\n }\n if (status === 401) {\n return {\n errorCode: \"authentication_required\",\n retry: \"RetryWillNotFix\",\n };\n }\n if (status === 403) {\n return { errorCode: \"permission_denied\", retry: \"RetryWillNotFix\" };\n }\n if (status === 404) {\n return { errorCode: \"not_found\", retry: \"RetryWillNotFix\" };\n }\n if (status === 405) {\n return { errorCode: \"method_not_allowed\", retry: \"RetryWillNotFix\" };\n }\n if (status === 408) {\n return { errorCode: \"timeout\", retry: \"RetryLater\" };\n }\n if (status === 429) {\n return { errorCode: \"rate_limited\", retry: \"RetryLater\" };\n }\n if (status !== undefined && status >= 500 && status < 600) {\n return { errorCode: \"server_error\", retry: \"RetryLater\" };\n }\n const connectivity = describeConnectivityError(error);\n if (connectivity) {\n return {\n errorCode: \"network_error\",\n // A TLS trust failure won't fix itself on retry — it needs a CA or\n // proxy change. Plain socket/DNS errors are worth retrying.\n retry:\n connectivity.kind === \"tls\" ? \"RetryWillNotFix\" : \"RetryLater\",\n };\n }\n return { errorCode: \"unknown_error\", retry: \"RetryWillNotFix\" };\n}\n\n/**\n * Extract a structured error message and details from an unknown thrown value.\n *\n * Handles the common shapes seen across UiPath API SDKs:\n * - Objects with `.status` and/or `.response.status` (HTTP-like errors)\n * - JSON response bodies with `message`, `errorMessage`, `title`, or nested `errors`\n * - Standard `Error` objects\n * - Arbitrary values (stringified as fallback)\n *\n * HTTP status code handling:\n * - 401 → authentication prompt\n * - 403 → permissions message (customisable via `options.forbiddenMessage`)\n * - 405 → endpoint hint\n * - Other → `HTTP {status}: {body message}`\n */\nexport async function extractErrorDetails(\n error: unknown,\n options?: ExtractErrorOptions,\n): Promise<ErrorDetails> {\n const err = (\n error !== null && error !== undefined && typeof error === \"object\"\n ? error\n : {}\n ) as Record<string, unknown>;\n const response = err.response as ResponseLike | undefined;\n const status = (err.status as number | undefined) ?? response?.status;\n const isSuccessfulResponse =\n status !== undefined && status >= 200 && status < 300;\n\n let rawBody: string | undefined;\n let extractedMessage: string | undefined;\n let parsedBody: Record<string, unknown> | undefined;\n\n // Attempt to read and parse the response body (once).\n // Wrap in async IIFE so synchronous throws from text() become rejected promises.\n const textFn = response?.text?.bind(response);\n if (textFn) {\n const [bodyError, body] = await catchError((async () => textFn())());\n if (!bodyError && body) {\n rawBody = body;\n const [parseError, parsed] = catchError(() => JSON.parse(body));\n if (!parseError && parsed && typeof parsed === \"object\") {\n parsedBody = parsed as Record<string, unknown>;\n\n // 1. Nested errors array (e.g. validation error responses)\n if (\n parsedBody.errors &&\n typeof parsedBody.errors === \"object\"\n ) {\n for (const field of Object.values(\n parsedBody.errors as Record<string, unknown>,\n )) {\n if (Array.isArray(field) && field.length > 0) {\n const first = field[0] as Record<string, unknown>;\n if (first && typeof first.message === \"string\") {\n extractedMessage = first.message;\n break;\n }\n }\n }\n }\n\n // 2. Top-level message fields\n if (!extractedMessage) {\n extractedMessage =\n typeof parsedBody.message === \"string\"\n ? parsedBody.message\n : typeof parsedBody.errorMessage === \"string\"\n ? parsedBody.errorMessage\n : typeof parsedBody.title === \"string\"\n ? parsedBody.title\n : undefined;\n }\n\n // 3. Valid JSON but no recognised fields — use the raw body\n if (!extractedMessage) {\n extractedMessage = body;\n }\n } else {\n // Not JSON — use the raw text\n extractedMessage = isHtmlDocument(body)\n ? HTML_RESPONSE_MESSAGE\n : body;\n }\n }\n }\n\n // Build the user-facing message and classify the failure type\n const rawMessage =\n typeof err.message === \"string\" ? err.message : \"Unknown error\";\n let message: string;\n let result: FailureResultType = \"Failure\";\n const classification = classifyError(status, error);\n let retry = classification.retry;\n\n if (status === 401) {\n message = DEFAULT_401;\n result = \"AuthenticationError\";\n } else if (status === 403) {\n message = options?.forbiddenMessage ?? DEFAULT_403;\n result = \"AuthenticationError\";\n } else if (status === 405) {\n message = DEFAULT_405;\n } else if (status === 400 || status === 422) {\n message = extractedMessage\n ? `HTTP ${status}: ${extractedMessage}`\n : `HTTP ${status}: ${rawMessage}`;\n result = \"ValidationError\";\n } else if (status === 429) {\n message = extractedMessage\n ? `HTTP ${status}: ${extractedMessage}`\n : `HTTP ${status}: ${rawMessage}`;\n // Keep result as \"Failure\" — rate limiting is transient, not a validation error\n } else if (extractedMessage) {\n if (isSuccessfulResponse && rawMessage !== \"Unknown error\") {\n message = rawMessage;\n } else {\n // Preserve HTTP status prefix for context (4xx vs 5xx)\n message = status\n ? `HTTP ${status}: ${extractedMessage}`\n : extractedMessage;\n }\n } else if (status) {\n if (rawMessage === \"Unknown error\" && response) {\n // statusText fallback when neither body nor error object had a useful message\n const statusText = response.statusText;\n message = statusText\n ? `HTTP ${status} ${statusText}`\n : `HTTP ${status} - request failed`;\n } else {\n // No body message — include HTTP status for context\n message = `HTTP ${status}: ${rawMessage}`;\n }\n } else {\n message = rawMessage;\n }\n\n // Node's fetch collapses TLS/socket failures into a bare \"fetch failed\"\n // and hides the real reason on `error.cause`. When there's no richer HTTP\n // message (those already carry the server's explanation), surface that\n // cause so the message alone is actionable across every tool.\n if (status === undefined) {\n const connectivity = describeConnectivityError(error);\n if (\n connectivity &&\n connectivity.message !== message &&\n !message.includes(connectivity.message)\n ) {\n message = `${message}: ${connectivity.message}`;\n }\n }\n\n // Build details — prefer structured extra fields, fall back to raw body\n let details: string = rawMessage;\n if (rawBody) {\n if (parsedBody) {\n const extra: Record<string, unknown> = {};\n if (parsedBody.errorCode) extra.errorCode = parsedBody.errorCode;\n if (parsedBody.details) extra.details = parsedBody.details;\n if (parsedBody.errors != null) extra.errors = parsedBody.errors;\n if (\n parsedBody.data &&\n typeof parsedBody.data === \"object\" &&\n Object.keys(parsedBody.data as Record<string, unknown>).length >\n 0\n ) {\n extra.data = parsedBody.data;\n }\n details =\n Object.keys(extra).length > 0 ? JSON.stringify(extra) : rawBody;\n } else {\n details = rawBody;\n }\n } else if (typeof err.message === \"string\") {\n details = err.message;\n } else {\n details = String(error);\n }\n\n // Build machine-readable context for agents\n const context: ErrorContext = {};\n if (status) {\n context.httpStatus = status;\n }\n if (parsedBody?.errorCode && typeof parsedBody.errorCode === \"string\") {\n context.errorCode = parsedBody.errorCode;\n } else if (parsedBody?.code && typeof parsedBody.code === \"string\") {\n // ConnectionService and other UiPath services use `code` instead of `errorCode`\n context.errorCode = parsedBody.code;\n }\n if (parsedBody?.requestId && typeof parsedBody.requestId === \"string\") {\n context.requestId = parsedBody.requestId;\n }\n if (parsedBody?.traceId && typeof parsedBody.traceId === \"string\") {\n context.traceId = parsedBody.traceId;\n }\n if (status === 429) {\n const resp = response as Record<string, unknown> | undefined;\n const headersObj = resp?.headers;\n let retryAfterValue: string | undefined;\n\n // fetch()-style Headers object with .get()\n if (\n headersObj &&\n typeof headersObj === \"object\" &&\n typeof (headersObj as { get?: unknown }).get === \"function\"\n ) {\n retryAfterValue =\n (headersObj as { get(n: string): string | null }).get(\n \"retry-after\",\n ) ?? undefined;\n }\n\n // Plain object (e.g. test doubles, non-fetch HTTP clients)\n if (!retryAfterValue && headersObj && typeof headersObj === \"object\") {\n const headers = headersObj as Record<string, string>;\n retryAfterValue = headers[\"retry-after\"] ?? headers[\"Retry-After\"];\n }\n\n if (retryAfterValue) {\n const seconds = Number(retryAfterValue);\n if (!Number.isNaN(seconds)) {\n context.retryAfter = seconds;\n retry = retryHintForRetryAfter(seconds);\n }\n }\n }\n const hasContext = Object.keys(context).length > 0;\n\n // ProblemDetails `errors` field (ASP.NET application/problem+json) →\n // surface as a structured `{field: [\"msg\", ...]}` map. Tolerates both\n // the canonical array-of-strings shape and the array-of-objects shape\n // seen on some UiPath services.\n let parsedErrors: Record<string, string[]> | undefined;\n if (parsedBody?.errors && typeof parsedBody.errors === \"object\") {\n const errors: Record<string, string[]> = {};\n for (const [field, raw] of Object.entries(\n parsedBody.errors as Record<string, unknown>,\n )) {\n if (Array.isArray(raw)) {\n const messages = raw\n .map((entry) => {\n if (typeof entry === \"string\") return entry;\n if (\n entry &&\n typeof entry === \"object\" &&\n typeof (entry as { message?: unknown }).message ===\n \"string\"\n ) {\n return (entry as { message: string }).message;\n }\n return String(entry);\n })\n .filter(Boolean);\n if (messages.length > 0) errors[field] = messages;\n } else if (typeof raw === \"string\") {\n errors[field] = [raw];\n }\n }\n if (Object.keys(errors).length > 0) parsedErrors = errors;\n }\n\n return {\n result,\n errorCode: classification.errorCode,\n message,\n retry,\n details,\n ...(hasContext ? { context } : {}),\n ...(parsedErrors ? { parsedErrors } : {}),\n };\n}\n\n/**\n * Extract a human-readable error message from an unknown thrown value.\n *\n * Convenience wrapper around {@link extractErrorDetails} that returns only the\n * message string.\n */\nexport async function extractErrorMessage(\n error: unknown,\n options?: ExtractErrorOptions,\n): Promise<string> {\n const { message } = await extractErrorDetails(error, options);\n return message;\n}\n\n/**\n * Synchronous variant of {@link extractErrorMessage}.\n *\n * Does NOT attempt to read response bodies (which requires async I/O).\n * Suitable for MCP SDK errors and other contexts where errors are always\n * plain `Error` objects.\n */\nexport function extractErrorMessageSync(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n\n if (typeof error === \"object\" && error !== null) {\n if (\"status\" in error && error.status === 401) {\n return DEFAULT_401;\n }\n if (\n \"message\" in error &&\n typeof (error as Record<string, unknown>).message === \"string\"\n ) {\n return (error as Record<string, unknown>).message as string;\n }\n }\n\n return String(error);\n}\n",
|
|
78
|
+
"import commander from './index.js';\n\n// wrapper to provide named exports for ESM.\nexport const {\n program,\n createCommand,\n createArgument,\n createOption,\n CommanderError,\n InvalidArgumentError,\n InvalidOptionArgumentError, // deprecated old name\n Command,\n Argument,\n Option,\n Help,\n} = commander;\n",
|
|
79
|
+
"import { Command } from \"commander\";\n\n/**\n * Structured example output data, stored as objects for format-agnostic rendering.\n * The `Code` mirrors the SuccessOutput.Code the real command would emit;\n * `Data` holds anonymized sample records.\n */\nexport interface CommandExampleOutput {\n Code: string;\n Data: Record<string, unknown> | Record<string, unknown>[];\n}\n\n/**\n * A single usage example for a leaf command.\n *\n * Displayed in the \"Examples\" section of `--help` output.\n * The `Output.Data` is stored as plain objects so the help renderer\n * can format it in whatever `--output` mode is active (table, json, yaml, plain).\n */\nexport interface CommandExample {\n /** Short description of what this example demonstrates (optional). */\n Description?: string;\n /** The anonymized command invocation (e.g. \"uip or machines list --limit 2\"). */\n Command: string;\n /** Example response data the command would produce. */\n Output: CommandExampleOutput;\n}\n\nconst examplesByCommand = new WeakMap<Command, CommandExample[]>();\n\n/** Retrieve examples registered on a command (empty array if none). */\nexport function getCommandExamples(cmd: Command): CommandExample[] {\n return examplesByCommand.get(cmd) ?? [];\n}\n\n// ---------------------------------------------------------------------------\n// Commander augmentation\n// ---------------------------------------------------------------------------\n\ndeclare module \"commander\" {\n interface Command {\n /**\n * Register usage examples displayed in the \"Examples\" help section.\n * Only meaningful on leaf commands (those with a `.trackedAction`).\n */\n examples(examples: CommandExample[]): this;\n }\n}\n\nCommand.prototype.examples = function (examples: CommandExample[]): Command {\n examplesByCommand.set(this, examples);\n return this;\n};\n",
|
|
80
|
+
"import { catchError } from \"./catch-error\";\nimport type { OutputSink, SinkCapabilities } from \"./output-sink\";\nimport { singleton } from \"./singleton\";\n\n/**\n * Minimal interface matching the subset of AsyncLocalStorage we use.\n * Allows a no-op fallback in browsers where node:async_hooks is absent.\n */\ninterface OutputStorage<T> {\n getStore(): T | undefined;\n run<R>(store: T, fn: () => R): R;\n}\n\nfunction createStorage(): OutputStorage<OutputSink> {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const [error, mod] = catchError(() => require(\"node:async_hooks\"));\n if (error || typeof mod?.AsyncLocalStorage !== \"function\") {\n // Browser or environment without async_hooks — no-op stub.\n return {\n getStore: () => undefined,\n run: <R>(_store: OutputSink, fn: () => R): R => fn(),\n } satisfies OutputStorage<OutputSink>;\n }\n return new mod.AsyncLocalStorage();\n}\n\nconst storageSingleton = singleton<OutputStorage<OutputSink>>(\"OutputStorage\");\n\nconst sinkSlot = singleton<OutputSink | undefined>(\"OutputSink\");\n\nconst outputStorage: OutputStorage<OutputSink> = storageSingleton.getOrInit(\n createStorage,\n (v) => \"getStore\" in v,\n);\n\n/**\n * Last-resort fallback when no sink is configured.\n * Writes to console.* to preserve current behavior during migration.\n */\nconst CONSOLE_FALLBACK: OutputSink = {\n writeOut: (str: string) => process.stdout.write(str),\n writeErr: (str: string) => process.stderr.write(str),\n writeLog: (str: string) => process.stdout.write(str),\n capabilities: {\n isInteractive: false,\n canReadInput: false,\n supportsColor: false,\n outputWidth: 80,\n },\n};\n\n/**\n * Run a function with a specific OutputSink bound to the current async context.\n * All code executed within `fn` (including async continuations) will see this sink\n * via `getOutputSink()`.\n *\n * This is concurrency-safe: multiple simultaneous `runWithSink` scopes\n * (e.g. concurrent MCP tool calls) each see their own sink.\n */\nexport function runWithSink<T>(sink: OutputSink, fn: () => T): T {\n return outputStorage.run(sink, fn);\n}\n\n/**\n * Get the OutputSink for the current execution context.\n *\n * Resolution order:\n * 1. AsyncLocalStorage context (set by runWithSink)\n * 2. Global fallback sink (set at process startup)\n * 3. CONSOLE_FALLBACK (writes to process.stdout/stderr — last resort)\n */\nexport function getOutputSink(): OutputSink {\n return outputStorage.getStore() ?? sinkSlot.get() ?? CONSOLE_FALLBACK;\n}\n\n/**\n * Set the process-wide default sink. Called once at CLI startup.\n * This is NOT per-request — it is the global fallback when no\n * AsyncLocalStorage context is active.\n *\n * Stored on globalThis so all bundled copies of @uipath/common share it.\n */\nexport function setGlobalSink(sink: OutputSink): void {\n sinkSlot.set(sink);\n}\n\nexport type { OutputSink, SinkCapabilities };\n",
|
|
81
|
+
"/**\n * Declarative shell-completion API.\n *\n * Tools attach a `CompletionSpec` to a Commander Option or Argument. The spec\n * describes a real user-facing CLI command whose JSON output supplies the\n * candidate list at TAB time. The `uip completion <shell>` generator inlines\n * this information into the emitted completion script, so TAB completion\n * invokes the same commands a user would run directly — no hidden dispatch,\n * no separate process-init path.\n *\n * Cross-bundle detail: each tool bundles its own copy of commander, so\n * `instanceof Option` checks fail across bundles. Specs are stored on the\n * target via a `Symbol.for()` key, which is shared process-wide.\n *\n * Example:\n * withCompleter(option, {\n * command: [\"uip\", \"solution\", \"packages\", \"list\", \"--output\", \"json\", \"--take\", \"200\"],\n * valueSelector: \"[.Data[].name] | unique | .[]\",\n * });\n */\n\nconst COMPLETER_SYMBOL = Symbol.for(\"@uipath/common/completer\");\n\nexport interface CompletionSpec {\n /**\n * Argv of the public CLI command to invoke at TAB time. Tokens wrapped in\n * `{name}` are substituted with the value of the option `--name` that the\n * user has already typed (camelCase keys, matching Commander's attribute\n * names).\n */\n command: string[];\n /**\n * `jq` filter applied to the command's stdout. Each non-empty line of the\n * filtered output becomes a candidate value. `{name}` placeholders are\n * substituted with `$name` (a jq variable) and bound at TAB time via\n * `--arg name \"$_req_name\"`, so user-supplied values cannot escape the\n * jq string context. `requiresOptions` must list each placeholder name.\n * Missing `jq` or a non-zero exit silently yields no candidates (falls\n * through to shell defaults).\n */\n valueSelector: string;\n /**\n * Option names (camelCase) that must be set on the current command before\n * this completer is invoked. If any required option is absent, no TAB is\n * performed — avoids useless network calls when context is incomplete.\n */\n requiresOptions?: string[];\n}\n\n/** Attach a completion spec to a Commander Option or Argument. */\nexport function withCompleter<T extends object>(\n target: T,\n spec: CompletionSpec,\n): T {\n (target as Record<symbol, unknown>)[COMPLETER_SYMBOL] = spec;\n return target;\n}\n\nexport function getCompleter(\n target: object | null | undefined,\n): CompletionSpec | undefined {\n if (!target) return undefined;\n const raw = (target as Record<symbol, unknown>)[COMPLETER_SYMBOL];\n if (\n raw &&\n typeof raw === \"object\" &&\n \"command\" in raw &&\n \"valueSelector\" in raw\n ) {\n return raw as CompletionSpec;\n }\n return undefined;\n}\n",
|
|
82
|
+
"// src/utils/index.ts\nvar isObject = (obj) => {\n return obj !== null && Object.prototype.toString.call(obj) === \"[object Object]\";\n};\nvar strictDeepEqual = (first, second) => {\n if (first === second) {\n return true;\n }\n if (typeof first !== typeof second) {\n return false;\n }\n if (Array.isArray(first) && Array.isArray(second)) {\n if (first.length !== second.length) {\n return false;\n }\n for (let i = 0; i < first.length; i += 1) {\n if (!strictDeepEqual(first[i], second[i])) {\n return false;\n }\n }\n return true;\n }\n if (isObject(first) && isObject(second)) {\n const firstEntries = Object.entries(first);\n const secondKeys = new Set(Object.keys(second));\n if (firstEntries.length !== secondKeys.size) {\n return false;\n }\n for (const [key, value] of firstEntries) {\n if (!strictDeepEqual(value, second[key])) {\n return false;\n }\n secondKeys.delete(key);\n }\n return secondKeys.size === 0;\n }\n return false;\n};\nvar isFalse = (obj) => {\n if (obj === null || obj === void 0 || obj === false) {\n return true;\n }\n if (typeof obj === \"string\") {\n return obj === \"\";\n }\n if (typeof obj === \"object\") {\n if (Array.isArray(obj)) {\n return obj.length === 0;\n }\n if (obj === null) {\n return true;\n }\n return Object.keys(obj).length === 0;\n }\n return false;\n};\nvar isAlpha = (ch) => {\n return ch >= \"a\" && ch <= \"z\" || ch >= \"A\" && ch <= \"Z\" || ch === \"_\";\n};\nvar isNum = (ch) => {\n return ch >= \"0\" && ch <= \"9\" || ch === \"-\";\n};\nvar isAlphaNum = (ch) => {\n return ch >= \"a\" && ch <= \"z\" || ch >= \"A\" && ch <= \"Z\" || ch >= \"0\" && ch <= \"9\" || ch === \"_\";\n};\nvar ensureInteger = (value) => {\n if (!(typeof value === \"number\") || Math.floor(value) !== value) {\n throw new Error(\"invalid-value: expecting an integer.\");\n }\n return value;\n};\nvar ensurePositiveInteger = (value) => {\n if (!(typeof value === \"number\") || value < 0 || Math.floor(value) !== value) {\n throw new Error(\"invalid-value: expecting a non-negative integer.\");\n }\n return value;\n};\nvar ensureNumbers = (...operands) => {\n for (let i = 0; i < operands.length; i++) {\n if (operands[i] === null || operands[i] === void 0) {\n throw new Error(\"not-a-number: undefined\");\n }\n if (typeof operands[i] !== \"number\") {\n throw new Error(\"not-a-number\");\n }\n }\n};\nvar notZero = (n) => {\n n = +n;\n if (!n) {\n throw new Error(\"not-a-number: divide by zero\");\n }\n return n;\n};\nvar add = (left, right) => {\n ensureNumbers(left, right);\n const result = left + right;\n return result;\n};\nvar sub = (left, right) => {\n ensureNumbers(left, right);\n const result = left - right;\n return result;\n};\nvar mul = (left, right) => {\n ensureNumbers(left, right);\n const result = left * right;\n return result;\n};\nvar divide = (left, right) => {\n ensureNumbers(left, right);\n const result = left / notZero(right);\n return result;\n};\nvar div = (left, right) => {\n ensureNumbers(left, right);\n const result = Math.floor(left / notZero(right));\n return result;\n};\nvar mod = (left, right) => {\n ensureNumbers(left, right);\n const result = left % right;\n return result;\n};\n\n// src/utils/strings.ts\nvar findFirst = (subject, sub2, start, end) => {\n if (!subject || !sub2) {\n return null;\n }\n start = Math.max(ensureInteger(start = start || 0), 0);\n end = Math.min(ensureInteger(end = end || subject.length), subject.length);\n const offset = subject.slice(start, end).indexOf(sub2);\n return offset === -1 ? null : offset + start;\n};\nvar findLast = (subject, sub2, start, end) => {\n if (!subject || !sub2) {\n return null;\n }\n start = Math.max(ensureInteger(start = start || 0), 0);\n end = Math.min(ensureInteger(end = end || subject.length), subject.length);\n const offset = subject.slice(start, end).lastIndexOf(sub2);\n const result = offset === -1 ? null : offset + start;\n return result;\n};\nvar lower = (subject) => subject.toLowerCase();\nvar ensurePadFuncParams = (name, width, padding) => {\n padding = padding || \" \";\n if (padding.length > 1) {\n throw new Error(`invalid value, ${name} expects its 'pad' parameter to be a valid string with a single codepoint`);\n }\n ensurePositiveInteger(width);\n return padding;\n};\nvar padLeft = (subject, width, padding) => {\n padding = ensurePadFuncParams(\"pad_left\", width, padding);\n return subject && subject.padStart(width, padding) || \"\";\n};\nvar padRight = (subject, width, padding) => {\n padding = ensurePadFuncParams(\"pad_right\", width, padding);\n return subject && subject.padEnd(width, padding) || \"\";\n};\nvar replace = (subject, string, by, count) => {\n if (count === 0) {\n return subject;\n }\n if (!count) {\n return subject.split(string).join(by);\n }\n ensurePositiveInteger(count);\n [...Array(count).keys()].map(() => subject = subject.replace(string, by));\n return subject;\n};\nvar split = (subject, search2, count) => {\n if (subject.length == 0 && search2.length === 0) {\n return [];\n }\n if (count === null || count === void 0) {\n return subject.split(search2);\n }\n ensurePositiveInteger(count);\n if (count === 0) {\n return [subject];\n }\n const split2 = subject.split(search2);\n return [...split2.slice(0, count), split2.slice(count).join(search2)];\n};\nvar trim = (subject, chars) => {\n return trimLeft(trimRight(subject, chars), chars);\n};\nvar trimLeft = (subject, chars) => {\n return trimImpl(subject, (list) => new RegExp(`^[${list}]*(.*?)`), chars);\n};\nvar trimRight = (subject, chars) => {\n return trimImpl(subject, (list) => new RegExp(`(.*?)[${list}]*$`), chars);\n};\nvar trimImpl = (subject, regExper, chars) => {\n const pattern = chars ? chars.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\") : \"\\\\s\\x85\";\n return subject.replace(regExper(pattern), \"$1\");\n};\nvar upper = (subject) => subject.toUpperCase();\n\n// src/Lexer.ts\nvar basicTokens = {\n \"(\": \"Lparen\" /* TOK_LPAREN */,\n \")\": \"Rparen\" /* TOK_RPAREN */,\n \"*\": \"Star\" /* TOK_STAR */,\n \",\": \"Comma\" /* TOK_COMMA */,\n \".\": \"Dot\" /* TOK_DOT */,\n \":\": \"Colon\" /* TOK_COLON */,\n \"@\": \"Current\" /* TOK_CURRENT */,\n \"]\": \"Rbracket\" /* TOK_RBRACKET */,\n \"{\": \"Lbrace\" /* TOK_LBRACE */,\n \"}\": \"Rbrace\" /* TOK_RBRACE */,\n \"+\": \"Plus\" /* TOK_PLUS */,\n \"%\": \"Modulo\" /* TOK_MODULO */,\n \"?\": \"Question\" /* TOK_QUESTION */,\n \"\\u2212\": \"Minus\" /* TOK_MINUS */,\n \"\\xD7\": \"Multiply\" /* TOK_MULTIPLY */,\n \"\\xF7\": \"Divide\" /* TOK_DIVIDE */\n};\nvar operatorStartToken = {\n \"!\": true,\n \"<\": true,\n \"=\": true,\n \">\": true,\n \"&\": true,\n \"|\": true,\n \"/\": true\n};\nvar skipChars = {\n \"\t\": true,\n \"\\n\": true,\n \"\\r\": true,\n \" \": true\n};\nvar StreamLexer = class {\n _current = 0;\n _enable_legacy_literals = false;\n tokenize(stream, options) {\n const tokens = [];\n this._current = 0;\n this._enable_legacy_literals = options?.enable_legacy_literals || false;\n let start;\n let identifier;\n let token;\n while (this._current < stream.length) {\n if (isAlpha(stream[this._current])) {\n start = this._current;\n identifier = this.consumeUnquotedIdentifier(stream);\n tokens.push({\n start,\n type: \"UnquotedIdentifier\" /* TOK_UNQUOTEDIDENTIFIER */,\n value: identifier\n });\n } else if (basicTokens[stream[this._current]] !== void 0) {\n tokens.push({\n start: this._current,\n type: basicTokens[stream[this._current]],\n value: stream[this._current]\n });\n this._current += 1;\n } else if (stream[this._current] === \"$\") {\n start = this._current;\n if (this._current + 1 < stream.length && isAlpha(stream[this._current + 1])) {\n this._current += 1;\n identifier = this.consumeUnquotedIdentifier(stream);\n tokens.push({\n start,\n type: \"Variable\" /* TOK_VARIABLE */,\n value: identifier\n });\n } else {\n tokens.push({\n start,\n type: \"Root\" /* TOK_ROOT */,\n value: stream[this._current]\n });\n this._current += 1;\n }\n } else if (stream[this._current] === \"-\") {\n if (this._current + 1 < stream.length && isNum(stream[this._current + 1])) {\n const token2 = this.consumeNumber(stream);\n token2 && tokens.push(token2);\n } else {\n const token2 = {\n start: this._current,\n type: \"Minus\" /* TOK_MINUS */,\n value: \"-\"\n };\n tokens.push(token2);\n this._current += 1;\n }\n } else if (isNum(stream[this._current])) {\n token = this.consumeNumber(stream);\n tokens.push(token);\n } else if (stream[this._current] === \"[\") {\n token = this.consumeLBracket(stream);\n tokens.push(token);\n } else if (stream[this._current] === '\"') {\n start = this._current;\n identifier = this.consumeQuotedIdentifier(stream);\n tokens.push({\n start,\n type: \"QuotedIdentifier\" /* TOK_QUOTEDIDENTIFIER */,\n value: identifier\n });\n } else if (stream[this._current] === `'`) {\n start = this._current;\n identifier = this.consumeRawStringLiteral(stream);\n tokens.push({\n start,\n type: \"Literal\" /* TOK_LITERAL */,\n value: identifier\n });\n } else if (stream[this._current] === \"`\") {\n start = this._current;\n const literal = this.consumeLiteral(stream);\n tokens.push({\n start,\n type: \"Literal\" /* TOK_LITERAL */,\n value: literal\n });\n } else if (operatorStartToken[stream[this._current]] !== void 0) {\n token = this.consumeOperator(stream);\n token && tokens.push(token);\n } else if (skipChars[stream[this._current]] !== void 0) {\n this._current += 1;\n } else {\n const error = new Error(`Syntax error: unknown character: ${stream[this._current]}`);\n error.name = \"LexerError\";\n throw error;\n }\n }\n return tokens;\n }\n consumeUnquotedIdentifier(stream) {\n const start = this._current;\n this._current += 1;\n while (this._current < stream.length && isAlphaNum(stream[this._current])) {\n this._current += 1;\n }\n return stream.slice(start, this._current);\n }\n consumeQuotedIdentifier(stream) {\n const start = this._current;\n this._current += 1;\n const maxLength = stream.length;\n while (stream[this._current] !== '\"' && this._current < maxLength) {\n let current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" || stream[current + 1] === '\"')) {\n current += 2;\n } else {\n current += 1;\n }\n this._current = current;\n }\n this._current += 1;\n const [value, ok] = this.parseJSON(stream.slice(start, this._current));\n if (!ok) {\n const error = new Error(`syntax: unexpected end of JSON input`);\n error.name = \"LexerError\";\n throw error;\n }\n return value;\n }\n consumeRawStringLiteral(stream) {\n const start = this._current;\n this._current += 1;\n const maxLength = stream.length;\n while (stream[this._current] !== `'` && this._current < maxLength) {\n let current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" || stream[current + 1] === `'`)) {\n current += 2;\n } else {\n current += 1;\n }\n this._current = current;\n }\n this._current += 1;\n const literal = stream.slice(start + 1, this._current - 1);\n return replace(replace(literal, `\\\\\\\\`, `\\\\`), `\\\\'`, `'`);\n }\n consumeNumber(stream) {\n const start = this._current;\n this._current += 1;\n const maxLength = stream.length;\n while (isNum(stream[this._current]) && this._current < maxLength) {\n this._current += 1;\n }\n const value = parseInt(stream.slice(start, this._current), 10);\n return { start, value, type: \"Number\" /* TOK_NUMBER */ };\n }\n consumeLBracket(stream) {\n const start = this._current;\n this._current += 1;\n if (stream[this._current] === \"?\") {\n this._current += 1;\n return { start, type: \"Filter\" /* TOK_FILTER */, value: \"[?\" };\n }\n if (stream[this._current] === \"]\") {\n this._current += 1;\n return { start, type: \"Flatten\" /* TOK_FLATTEN */, value: \"[]\" };\n }\n return { start, type: \"Lbracket\" /* TOK_LBRACKET */, value: \"[\" };\n }\n consumeOrElse(stream, peek, token, orElse) {\n const start = this._current;\n this._current += 1;\n if (this._current < stream.length && stream[this._current] === peek) {\n this._current += 1;\n return {\n start,\n type: orElse,\n value: stream.slice(start, this._current)\n };\n }\n return { start, type: token, value: stream[start] };\n }\n consumeOperator(stream) {\n const start = this._current;\n const startingChar = stream[start];\n switch (startingChar) {\n case \"!\":\n return this.consumeOrElse(stream, \"=\", \"Not\" /* TOK_NOT */, \"NE\" /* TOK_NE */);\n case \"<\":\n return this.consumeOrElse(stream, \"=\", \"LT\" /* TOK_LT */, \"LTE\" /* TOK_LTE */);\n case \">\":\n return this.consumeOrElse(stream, \"=\", \"GT\" /* TOK_GT */, \"GTE\" /* TOK_GTE */);\n case \"=\":\n return this.consumeOrElse(stream, \"=\", \"Assign\" /* TOK_ASSIGN */, \"EQ\" /* TOK_EQ */);\n case \"&\":\n return this.consumeOrElse(stream, \"&\", \"Expref\" /* TOK_EXPREF */, \"And\" /* TOK_AND */);\n case \"|\":\n return this.consumeOrElse(stream, \"|\", \"Pipe\" /* TOK_PIPE */, \"Or\" /* TOK_OR */);\n case \"/\":\n return this.consumeOrElse(stream, \"/\", \"Divide\" /* TOK_DIVIDE */, \"Div\" /* TOK_DIV */);\n }\n }\n consumeLiteral(stream) {\n this._current += 1;\n const start = this._current;\n const maxLength = stream.length;\n while (stream[this._current] !== \"`\" && this._current < maxLength) {\n let current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" || stream[current + 1] === \"`\")) {\n current += 2;\n } else {\n current += 1;\n }\n this._current = current;\n }\n let literalString = stream.slice(start, this._current).trimStart();\n literalString = literalString.replace(\"\\\\`\", \"`\");\n let literal = null;\n let ok = false;\n if (this.looksLikeJSON(literalString)) {\n [literal, ok] = this.parseJSON(literalString);\n }\n if (!ok && this._enable_legacy_literals) {\n [literal, ok] = this.parseJSON(`\"${literalString}\"`);\n }\n if (!ok) {\n const error = new Error(\n `Syntax error: unexpected end of JSON input or invalid format for a JSON literal: ${stream[this._current]}`\n );\n error.name = \"LexerError\";\n throw error;\n }\n this._current += 1;\n return literal;\n }\n looksLikeJSON(literalString) {\n const startingChars = '[{\"';\n const jsonLiterals = [\"true\", \"false\", \"null\"];\n const numberLooking = \"-0123456789\";\n if (literalString === \"\") {\n return false;\n }\n if (startingChars.includes(literalString[0])) {\n return true;\n }\n if (jsonLiterals.includes(literalString)) {\n return true;\n }\n if (numberLooking.includes(literalString[0])) {\n const [_, ok] = this.parseJSON(literalString);\n return ok;\n }\n return false;\n }\n parseJSON(text) {\n try {\n const json = JSON.parse(text);\n return [json, true];\n } catch {\n return [null, false];\n }\n }\n};\nvar Lexer = new StreamLexer();\nvar Lexer_default = Lexer;\n\n// src/Parser.ts\nvar bindingPower = {\n [\"EOF\" /* TOK_EOF */]: 0,\n [\"Variable\" /* TOK_VARIABLE */]: 0,\n [\"UnquotedIdentifier\" /* TOK_UNQUOTEDIDENTIFIER */]: 0,\n [\"QuotedIdentifier\" /* TOK_QUOTEDIDENTIFIER */]: 0,\n [\"Rbracket\" /* TOK_RBRACKET */]: 0,\n [\"Rparen\" /* TOK_RPAREN */]: 0,\n [\"Comma\" /* TOK_COMMA */]: 0,\n [\"Rbrace\" /* TOK_RBRACE */]: 0,\n [\"Number\" /* TOK_NUMBER */]: 0,\n [\"Current\" /* TOK_CURRENT */]: 0,\n [\"Expref\" /* TOK_EXPREF */]: 0,\n [\"Root\" /* TOK_ROOT */]: 0,\n [\"Assign\" /* TOK_ASSIGN */]: 1,\n [\"Pipe\" /* TOK_PIPE */]: 1,\n [\"Question\" /* TOK_QUESTION */]: 2,\n [\"Or\" /* TOK_OR */]: 3,\n [\"And\" /* TOK_AND */]: 4,\n [\"EQ\" /* TOK_EQ */]: 5,\n [\"GT\" /* TOK_GT */]: 5,\n [\"LT\" /* TOK_LT */]: 5,\n [\"GTE\" /* TOK_GTE */]: 5,\n [\"LTE\" /* TOK_LTE */]: 5,\n [\"NE\" /* TOK_NE */]: 5,\n [\"Minus\" /* TOK_MINUS */]: 6,\n [\"Plus\" /* TOK_PLUS */]: 6,\n [\"Div\" /* TOK_DIV */]: 7,\n [\"Divide\" /* TOK_DIVIDE */]: 7,\n [\"Modulo\" /* TOK_MODULO */]: 7,\n [\"Multiply\" /* TOK_MULTIPLY */]: 7,\n [\"Flatten\" /* TOK_FLATTEN */]: 9,\n [\"Star\" /* TOK_STAR */]: 20,\n [\"Filter\" /* TOK_FILTER */]: 21,\n [\"Dot\" /* TOK_DOT */]: 40,\n [\"Not\" /* TOK_NOT */]: 45,\n [\"Lbrace\" /* TOK_LBRACE */]: 50,\n [\"Lbracket\" /* TOK_LBRACKET */]: 55,\n [\"Lparen\" /* TOK_LPAREN */]: 60\n};\nvar TokenParser = class _TokenParser {\n index = 0;\n tokens = [];\n parse(expression, options) {\n this.loadTokens(expression, options || { enable_legacy_literals: false });\n this.index = 0;\n const ast = this.expression(0);\n if (this.lookahead(0) !== \"EOF\" /* TOK_EOF */) {\n const token = this.lookaheadToken(0);\n this.errorToken(token, `Syntax error: unexpected token type: ${token.type}, value: ${token.value}`);\n }\n return ast;\n }\n loadTokens(expression, options) {\n this.tokens = Lexer_default.tokenize(expression, options);\n this.tokens.push({ type: \"EOF\" /* TOK_EOF */, value: \"\", start: expression.length });\n }\n expression(rbp) {\n const leftToken = this.lookaheadToken(0);\n this.advance();\n let left = this.nud(leftToken);\n let currentTokenType = this.lookahead(0);\n while (rbp < bindingPower[currentTokenType]) {\n this.advance();\n left = this.led(currentTokenType, left);\n currentTokenType = this.lookahead(0);\n }\n return left;\n }\n lookahead(offset) {\n return this.tokens[this.index + offset].type;\n }\n lookaheadToken(offset) {\n return this.tokens[this.index + offset];\n }\n advance() {\n this.index += 1;\n }\n nud(token) {\n switch (token.type) {\n case \"Variable\" /* TOK_VARIABLE */:\n return { type: \"Variable\", name: token.value };\n case \"Literal\" /* TOK_LITERAL */:\n return { type: \"Literal\", value: token.value };\n case \"UnquotedIdentifier\" /* TOK_UNQUOTEDIDENTIFIER */: {\n if (_TokenParser.isKeyword(token, \"let\") && this.lookahead(0) === \"Variable\" /* TOK_VARIABLE */) {\n return this.parseLetExpression();\n } else {\n return { type: \"Field\", name: token.value };\n }\n }\n case \"QuotedIdentifier\" /* TOK_QUOTEDIDENTIFIER */:\n if (this.lookahead(0) === \"Lparen\" /* TOK_LPAREN */) {\n throw new Error(\"Syntax error: quoted identifier not allowed for function names.\");\n } else {\n return { type: \"Field\", name: token.value };\n }\n case \"Not\" /* TOK_NOT */: {\n const child = this.expression(bindingPower.Not);\n return { type: \"NotExpression\", child };\n }\n case \"Minus\" /* TOK_MINUS */: {\n const child = this.expression(bindingPower.Minus);\n return {\n type: \"Unary\",\n operator: token.type,\n operand: child\n };\n }\n case \"Plus\" /* TOK_PLUS */: {\n const child = this.expression(bindingPower.Plus);\n return {\n type: \"Unary\",\n operator: token.type,\n operand: child\n };\n }\n case \"Star\" /* TOK_STAR */: {\n const left = { type: \"Identity\" };\n return { type: \"ValueProjection\", left, right: this.parseProjectionRHS(bindingPower.Star) };\n }\n case \"Filter\" /* TOK_FILTER */:\n return this.led(token.type, { type: \"Identity\" });\n case \"Lbrace\" /* TOK_LBRACE */:\n return this.parseMultiselectHash();\n case \"Flatten\" /* TOK_FLATTEN */: {\n const left = {\n type: \"Flatten\",\n child: { type: \"Identity\" }\n };\n const right = this.parseProjectionRHS(bindingPower.Flatten);\n return { type: \"Projection\", left, right };\n }\n case \"Lbracket\" /* TOK_LBRACKET */: {\n if (this.lookahead(0) === \"Number\" /* TOK_NUMBER */ || this.lookahead(0) === \"Colon\" /* TOK_COLON */) {\n const right = this.parseIndexExpression();\n return this.projectIfSlice({ type: \"Identity\" }, right);\n }\n if (this.lookahead(0) === \"Star\" /* TOK_STAR */ && this.lookahead(1) === \"Rbracket\" /* TOK_RBRACKET */) {\n this.advance();\n this.advance();\n const right = this.parseProjectionRHS(bindingPower.Star);\n return {\n left: { type: \"Identity\" },\n right,\n type: \"Projection\"\n };\n }\n return this.parseMultiselectList();\n }\n case \"Current\" /* TOK_CURRENT */:\n return { type: \"Current\" /* TOK_CURRENT */ };\n case \"Root\" /* TOK_ROOT */:\n return { type: \"Root\" /* TOK_ROOT */ };\n case \"Expref\" /* TOK_EXPREF */: {\n const child = this.expression(bindingPower.Expref);\n return { type: \"ExpressionReference\", child };\n }\n case \"Lparen\" /* TOK_LPAREN */: {\n const expression = this.expression(0);\n this.match(\"Rparen\" /* TOK_RPAREN */);\n return expression;\n }\n default:\n this.errorToken(token);\n }\n }\n led(tokenName, left) {\n switch (tokenName) {\n case \"Question\" /* TOK_QUESTION */: {\n const trueExpr = this.expression(0);\n this.match(\"Colon\" /* TOK_COLON */);\n const falseExpr = this.expression(0);\n return {\n type: \"Ternary\",\n condition: left,\n trueExpr,\n falseExpr\n };\n }\n case \"Dot\" /* TOK_DOT */: {\n const rbp = bindingPower.Dot;\n if (this.lookahead(0) !== \"Star\" /* TOK_STAR */) {\n const right2 = this.parseDotRHS(rbp);\n return { type: \"Subexpression\", left, right: right2 };\n }\n this.advance();\n const right = this.parseProjectionRHS(rbp);\n return { type: \"ValueProjection\", left, right };\n }\n case \"Pipe\" /* TOK_PIPE */: {\n const right = this.expression(bindingPower.Pipe);\n return { type: \"Pipe\", left, right };\n }\n case \"Or\" /* TOK_OR */: {\n const right = this.expression(bindingPower.Or);\n return { type: \"OrExpression\", left, right };\n }\n case \"And\" /* TOK_AND */: {\n const right = this.expression(bindingPower.And);\n return { type: \"AndExpression\", left, right };\n }\n case \"Lparen\" /* TOK_LPAREN */: {\n if (left.type !== \"Field\") {\n throw new Error(\"Syntax error: expected a Field node\");\n }\n const name = left.name;\n const args = this.parseCommaSeparatedExpressionsUntilToken(\"Rparen\" /* TOK_RPAREN */);\n const node = { name, type: \"Function\", children: args };\n return node;\n }\n case \"Filter\" /* TOK_FILTER */: {\n const condition = this.expression(0);\n this.match(\"Rbracket\" /* TOK_RBRACKET */);\n const right = this.lookahead(0) === \"Flatten\" /* TOK_FLATTEN */ ? { type: \"Identity\" } : this.parseProjectionRHS(bindingPower.Filter);\n return { type: \"FilterProjection\", left, right, condition };\n }\n case \"Flatten\" /* TOK_FLATTEN */: {\n const leftNode = { type: \"Flatten\", child: left };\n const right = this.parseProjectionRHS(bindingPower.Flatten);\n return { type: \"Projection\", left: leftNode, right };\n }\n case \"Assign\" /* TOK_ASSIGN */: {\n const leftNode = left;\n const right = this.expression(0);\n return {\n type: \"Binding\",\n variable: leftNode.name,\n reference: right\n };\n }\n case \"EQ\" /* TOK_EQ */:\n case \"NE\" /* TOK_NE */:\n case \"GT\" /* TOK_GT */:\n case \"GTE\" /* TOK_GTE */:\n case \"LT\" /* TOK_LT */:\n case \"LTE\" /* TOK_LTE */:\n return this.parseComparator(left, tokenName);\n case \"Plus\" /* TOK_PLUS */:\n case \"Minus\" /* TOK_MINUS */:\n case \"Multiply\" /* TOK_MULTIPLY */:\n case \"Star\" /* TOK_STAR */:\n case \"Divide\" /* TOK_DIVIDE */:\n case \"Modulo\" /* TOK_MODULO */:\n case \"Div\" /* TOK_DIV */:\n return this.parseArithmetic(left, tokenName);\n case \"Lbracket\" /* TOK_LBRACKET */: {\n const token = this.lookaheadToken(0);\n if (token.type === \"Number\" /* TOK_NUMBER */ || token.type === \"Colon\" /* TOK_COLON */) {\n const right2 = this.parseIndexExpression();\n return this.projectIfSlice(left, right2);\n }\n this.match(\"Star\" /* TOK_STAR */);\n this.match(\"Rbracket\" /* TOK_RBRACKET */);\n const right = this.parseProjectionRHS(bindingPower.Star);\n return { type: \"Projection\", left, right };\n }\n default:\n return this.errorToken(this.lookaheadToken(0));\n }\n }\n static isKeyword(token, keyword) {\n return token.type === \"UnquotedIdentifier\" /* TOK_UNQUOTEDIDENTIFIER */ && token.value === keyword;\n }\n match(tokenType) {\n if (this.lookahead(0) === tokenType) {\n this.advance();\n return;\n } else {\n const token = this.lookaheadToken(0);\n this.errorToken(token, `Syntax error: expected ${tokenType}, got: ${token.type}`);\n }\n }\n errorToken(token, message = \"\") {\n const error = new Error(message || `Syntax error: invalid token (${token.type}): \"${token.value}\"`);\n error.name = \"ParserError\";\n throw error;\n }\n parseIndexExpression() {\n if (this.lookahead(0) === \"Colon\" /* TOK_COLON */ || this.lookahead(1) === \"Colon\" /* TOK_COLON */) {\n return this.parseSliceExpression();\n }\n const value = Number(this.lookaheadToken(0).value);\n this.advance();\n this.match(\"Rbracket\" /* TOK_RBRACKET */);\n return { type: \"Index\", value };\n }\n projectIfSlice(left, right) {\n const indexExpr = {\n type: \"IndexExpression\",\n left,\n right\n };\n if (right.type === \"Slice\") {\n return {\n left: indexExpr,\n right: this.parseProjectionRHS(bindingPower.Star),\n type: \"Projection\"\n };\n }\n return indexExpr;\n }\n parseSliceExpression() {\n const parts = [null, null, null];\n let index = 0;\n let current = this.lookaheadToken(0);\n while (current.type != \"Rbracket\" /* TOK_RBRACKET */ && index < 3) {\n if (current.type === \"Colon\" /* TOK_COLON */) {\n index++;\n if (index === 3) {\n this.errorToken(this.lookaheadToken(0), \"Syntax error, too many colons in slice expression\");\n }\n this.advance();\n } else if (current.type === \"Number\" /* TOK_NUMBER */) {\n const part = this.lookaheadToken(0).value;\n parts[index] = part;\n this.advance();\n } else {\n const next = this.lookaheadToken(0);\n this.errorToken(next, `Syntax error, unexpected token: ${next.value}(${next.type})`);\n }\n current = this.lookaheadToken(0);\n }\n this.match(\"Rbracket\" /* TOK_RBRACKET */);\n const [start, stop, step] = parts;\n return { type: \"Slice\", start, stop, step };\n }\n parseLetExpression() {\n const separated = this.parseCommaSeparatedExpressionsUntilKeyword(\"in\");\n const expression = this.expression(0);\n const bindings = separated.map((binding) => binding);\n return {\n type: \"LetExpression\",\n bindings,\n expression\n };\n }\n parseCommaSeparatedExpressionsUntilKeyword(keyword) {\n return this.parseCommaSeparatedExpressionsUntil(\n () => {\n return _TokenParser.isKeyword(this.lookaheadToken(0), keyword);\n },\n () => {\n this.advance();\n }\n );\n }\n parseCommaSeparatedExpressionsUntilToken(token) {\n return this.parseCommaSeparatedExpressionsUntil(\n () => {\n return this.lookahead(0) === token;\n },\n () => {\n return this.match(token);\n }\n );\n }\n parseCommaSeparatedExpressionsUntil(isEndToken, matchEndToken) {\n const args = [];\n let expression;\n while (!isEndToken()) {\n expression = this.expression(0);\n if (this.lookahead(0) === \"Comma\" /* TOK_COMMA */) {\n this.match(\"Comma\" /* TOK_COMMA */);\n }\n args.push(expression);\n }\n matchEndToken();\n return args;\n }\n parseComparator(left, comparator) {\n const right = this.expression(bindingPower[comparator]);\n return { type: \"Comparator\", name: comparator, left, right };\n }\n parseArithmetic(left, operator) {\n const right = this.expression(bindingPower[operator]);\n return { type: \"Arithmetic\", operator, left, right };\n }\n parseDotRHS(rbp) {\n const lookahead = this.lookahead(0);\n const exprTokens = [\"UnquotedIdentifier\" /* TOK_UNQUOTEDIDENTIFIER */, \"QuotedIdentifier\" /* TOK_QUOTEDIDENTIFIER */, \"Star\" /* TOK_STAR */];\n if (exprTokens.includes(lookahead)) {\n return this.expression(rbp);\n }\n if (lookahead === \"Lbracket\" /* TOK_LBRACKET */) {\n this.match(\"Lbracket\" /* TOK_LBRACKET */);\n return this.parseMultiselectList();\n }\n if (lookahead === \"Lbrace\" /* TOK_LBRACE */) {\n this.match(\"Lbrace\" /* TOK_LBRACE */);\n return this.parseMultiselectHash();\n }\n const token = this.lookaheadToken(0);\n this.errorToken(token, `Syntax error, unexpected token: ${token.value}(${token.type})`);\n }\n parseProjectionRHS(rbp) {\n if (bindingPower[this.lookahead(0)] < 10) {\n return { type: \"Identity\" };\n }\n if (this.lookahead(0) === \"Lbracket\" /* TOK_LBRACKET */) {\n return this.expression(rbp);\n }\n if (this.lookahead(0) === \"Filter\" /* TOK_FILTER */) {\n return this.expression(rbp);\n }\n if (this.lookahead(0) === \"Dot\" /* TOK_DOT */) {\n this.match(\"Dot\" /* TOK_DOT */);\n return this.parseDotRHS(rbp);\n }\n const token = this.lookaheadToken(0);\n this.errorToken(token, `Syntax error, unexpected token: ${token.value}(${token.type})`);\n }\n parseMultiselectList() {\n const expressions = [];\n while (this.lookahead(0) !== \"Rbracket\" /* TOK_RBRACKET */) {\n const expression = this.expression(0);\n expressions.push(expression);\n if (this.lookahead(0) === \"Comma\" /* TOK_COMMA */) {\n this.match(\"Comma\" /* TOK_COMMA */);\n if (this.lookahead(0) === \"Rbracket\" /* TOK_RBRACKET */) {\n throw new Error(\"Syntax error: unexpected token Rbracket\");\n }\n }\n }\n this.match(\"Rbracket\" /* TOK_RBRACKET */);\n return { type: \"MultiSelectList\", children: expressions };\n }\n parseMultiselectHash() {\n const pairs = [];\n const identifierTypes = [\"UnquotedIdentifier\" /* TOK_UNQUOTEDIDENTIFIER */, \"QuotedIdentifier\" /* TOK_QUOTEDIDENTIFIER */];\n let keyToken;\n let keyName;\n let value;\n for (; ; ) {\n keyToken = this.lookaheadToken(0);\n if (!identifierTypes.includes(keyToken.type)) {\n throw new Error(`Syntax error: expecting an identifier token, got: ${keyToken.type}`);\n }\n keyName = keyToken.value;\n this.advance();\n this.match(\"Colon\" /* TOK_COLON */);\n value = this.expression(0);\n pairs.push({ value, type: \"KeyValuePair\", name: keyName });\n if (this.lookahead(0) === \"Comma\" /* TOK_COMMA */) {\n this.match(\"Comma\" /* TOK_COMMA */);\n } else if (this.lookahead(0) === \"Rbrace\" /* TOK_RBRACE */) {\n this.match(\"Rbrace\" /* TOK_RBRACE */);\n break;\n }\n }\n return { type: \"MultiSelectHash\", children: pairs };\n }\n};\nvar Parser = new TokenParser();\nvar Parser_default = Parser;\n\n// src/utils/text.ts\nvar Text = class _Text {\n _text;\n constructor(text) {\n this._text = text;\n }\n get string() {\n return this._text;\n }\n get length() {\n return this.codePoints.length;\n }\n compareTo(other) {\n return _Text.compare(this, new _Text(other));\n }\n static get comparer() {\n const stringComparer = (left, right) => {\n return new _Text(left).compareTo(right);\n };\n return stringComparer;\n }\n static compare(left, right) {\n const leftCp = left.codePoints;\n const rightCp = right.codePoints;\n for (let index = 0; index < Math.min(leftCp.length, rightCp.length); index++) {\n if (leftCp[index] === rightCp[index]) {\n continue;\n }\n return leftCp[index] - rightCp[index] > 0 ? 1 : -1;\n }\n return leftCp.length - rightCp.length > 0 ? 1 : -1;\n }\n reverse() {\n return String.fromCodePoint(...this.codePoints.reverse());\n }\n get codePoints() {\n const array = [...this._text].map((s) => s.codePointAt(0));\n return array;\n }\n};\n\n// src/Runtime.ts\nvar createMathFunction = (mathFn) => ([value]) => mathFn(value);\nvar createStringFunction = (stringFn) => ([subject]) => stringFn(subject);\nvar createObjectFunction = (objFn) => ([obj]) => objFn(obj);\nvar Runtime = class {\n _interpreter;\n _functionTable;\n _customFunctions = /* @__PURE__ */ new Set();\n TYPE_NAME_TABLE = Object.freeze({\n [0 /* TYPE_NUMBER */]: \"number\",\n [1 /* TYPE_ANY */]: \"any\",\n [2 /* TYPE_STRING */]: \"string\",\n [3 /* TYPE_ARRAY */]: \"array\",\n [4 /* TYPE_OBJECT */]: \"object\",\n [5 /* TYPE_BOOLEAN */]: \"boolean\",\n [6 /* TYPE_EXPREF */]: \"expression\",\n [7 /* TYPE_NULL */]: \"null\",\n [8 /* TYPE_ARRAY_NUMBER */]: \"Array<number>\",\n [10 /* TYPE_ARRAY_OBJECT */]: \"Array<object>\",\n [9 /* TYPE_ARRAY_STRING */]: \"Array<string>\",\n [11 /* TYPE_ARRAY_ARRAY */]: \"Array<Array<any>>\"\n });\n constructor(interpreter) {\n this._interpreter = interpreter;\n this._functionTable = this.buildFunctionTable();\n }\n buildFunctionTable() {\n return {\n // Math functions\n abs: { _func: createMathFunction(Math.abs), _signature: [{ types: [0 /* TYPE_NUMBER */] }] },\n ceil: { _func: createMathFunction(Math.ceil), _signature: [{ types: [0 /* TYPE_NUMBER */] }] },\n floor: { _func: createMathFunction(Math.floor), _signature: [{ types: [0 /* TYPE_NUMBER */] }] },\n // String functions\n lower: { _func: createStringFunction(lower), _signature: [{ types: [2 /* TYPE_STRING */] }] },\n upper: { _func: createStringFunction(upper), _signature: [{ types: [2 /* TYPE_STRING */] }] },\n // Object functions\n keys: { _func: createObjectFunction(Object.keys), _signature: [{ types: [4 /* TYPE_OBJECT */] }] },\n values: { _func: createObjectFunction(Object.values), _signature: [{ types: [4 /* TYPE_OBJECT */] }] },\n // Complex functions that need custom implementations\n avg: { _func: this.functionAvg, _signature: [{ types: [8 /* TYPE_ARRAY_NUMBER */] }] },\n contains: {\n _func: this.functionContains,\n _signature: [\n { types: [2 /* TYPE_STRING */, 3 /* TYPE_ARRAY */] },\n { types: [1 /* TYPE_ANY */] }\n ]\n },\n ends_with: {\n _func: this.functionEndsWith,\n _signature: [{ types: [2 /* TYPE_STRING */] }, { types: [2 /* TYPE_STRING */] }]\n },\n find_first: {\n _func: this.functionFindFirst,\n _signature: [\n { types: [2 /* TYPE_STRING */] },\n { types: [2 /* TYPE_STRING */] },\n { types: [0 /* TYPE_NUMBER */], optional: true },\n { types: [0 /* TYPE_NUMBER */], optional: true }\n ]\n },\n find_last: {\n _func: this.functionFindLast,\n _signature: [\n { types: [2 /* TYPE_STRING */] },\n { types: [2 /* TYPE_STRING */] },\n { types: [0 /* TYPE_NUMBER */], optional: true },\n { types: [0 /* TYPE_NUMBER */], optional: true }\n ]\n },\n from_items: { _func: this.functionFromItems, _signature: [{ types: [11 /* TYPE_ARRAY_ARRAY */] }] },\n group_by: {\n _func: this.functionGroupBy,\n _signature: [{ types: [3 /* TYPE_ARRAY */] }, { types: [6 /* TYPE_EXPREF */] }]\n },\n items: { _func: this.functionItems, _signature: [{ types: [4 /* TYPE_OBJECT */] }] },\n join: {\n _func: this.functionJoin,\n _signature: [{ types: [2 /* TYPE_STRING */] }, { types: [9 /* TYPE_ARRAY_STRING */] }]\n },\n length: {\n _func: this.functionLength,\n _signature: [{ types: [2 /* TYPE_STRING */, 3 /* TYPE_ARRAY */, 4 /* TYPE_OBJECT */] }]\n },\n map: {\n _func: this.functionMap,\n _signature: [{ types: [6 /* TYPE_EXPREF */] }, { types: [3 /* TYPE_ARRAY */] }]\n },\n max: {\n _func: this.functionMax,\n _signature: [{ types: [8 /* TYPE_ARRAY_NUMBER */, 9 /* TYPE_ARRAY_STRING */] }]\n },\n max_by: {\n _func: this.functionMaxBy,\n _signature: [{ types: [3 /* TYPE_ARRAY */] }, { types: [6 /* TYPE_EXPREF */] }]\n },\n merge: { _func: this.functionMerge, _signature: [{ types: [4 /* TYPE_OBJECT */], variadic: true }] },\n min: {\n _func: this.functionMin,\n _signature: [{ types: [8 /* TYPE_ARRAY_NUMBER */, 9 /* TYPE_ARRAY_STRING */] }]\n },\n min_by: {\n _func: this.functionMinBy,\n _signature: [{ types: [3 /* TYPE_ARRAY */] }, { types: [6 /* TYPE_EXPREF */] }]\n },\n not_null: { _func: this.functionNotNull, _signature: [{ types: [1 /* TYPE_ANY */], variadic: true }] },\n pad_left: {\n _func: this.functionPadLeft,\n _signature: [\n { types: [2 /* TYPE_STRING */] },\n { types: [0 /* TYPE_NUMBER */] },\n { types: [2 /* TYPE_STRING */], optional: true }\n ]\n },\n pad_right: {\n _func: this.functionPadRight,\n _signature: [\n { types: [2 /* TYPE_STRING */] },\n { types: [0 /* TYPE_NUMBER */] },\n { types: [2 /* TYPE_STRING */], optional: true }\n ]\n },\n replace: {\n _func: this.functionReplace,\n _signature: [\n { types: [2 /* TYPE_STRING */] },\n { types: [2 /* TYPE_STRING */] },\n { types: [2 /* TYPE_STRING */] },\n { types: [0 /* TYPE_NUMBER */], optional: true }\n ]\n },\n reverse: {\n _func: this.functionReverse,\n _signature: [{ types: [2 /* TYPE_STRING */, 3 /* TYPE_ARRAY */] }]\n },\n sort: {\n _func: this.functionSort,\n _signature: [{ types: [9 /* TYPE_ARRAY_STRING */, 8 /* TYPE_ARRAY_NUMBER */] }]\n },\n sort_by: {\n _func: this.functionSortBy,\n _signature: [{ types: [3 /* TYPE_ARRAY */] }, { types: [6 /* TYPE_EXPREF */] }]\n },\n split: {\n _func: this.functionSplit,\n _signature: [\n { types: [2 /* TYPE_STRING */] },\n { types: [2 /* TYPE_STRING */] },\n { types: [0 /* TYPE_NUMBER */], optional: true }\n ]\n },\n starts_with: {\n _func: this.functionStartsWith,\n _signature: [{ types: [2 /* TYPE_STRING */] }, { types: [2 /* TYPE_STRING */] }]\n },\n sum: { _func: this.functionSum, _signature: [{ types: [8 /* TYPE_ARRAY_NUMBER */] }] },\n to_array: { _func: this.functionToArray, _signature: [{ types: [1 /* TYPE_ANY */] }] },\n to_number: { _func: this.functionToNumber, _signature: [{ types: [1 /* TYPE_ANY */] }] },\n to_string: { _func: this.functionToString, _signature: [{ types: [1 /* TYPE_ANY */] }] },\n trim: {\n _func: this.functionTrim,\n _signature: [{ types: [2 /* TYPE_STRING */] }, { types: [2 /* TYPE_STRING */], optional: true }]\n },\n trim_left: {\n _func: this.functionTrimLeft,\n _signature: [{ types: [2 /* TYPE_STRING */] }, { types: [2 /* TYPE_STRING */], optional: true }]\n },\n trim_right: {\n _func: this.functionTrimRight,\n _signature: [{ types: [2 /* TYPE_STRING */] }, { types: [2 /* TYPE_STRING */], optional: true }]\n },\n type: { _func: this.functionType, _signature: [{ types: [1 /* TYPE_ANY */] }] },\n zip: { _func: this.functionZip, _signature: [{ types: [3 /* TYPE_ARRAY */], variadic: true }] }\n };\n }\n /**\n * Enhanced registerFunction with backward compatibility and new options\n * @deprecated Use register() method for enhanced functionality\n */\n registerFunction(name, customFunction, signature, options) {\n const result = this._registerInternal(name, customFunction, signature, options);\n if (!result.success) {\n throw new Error(result.message);\n }\n }\n /**\n * Internal registration method that bypasses TypeScript type checking\n */\n _registerInternal(name, customFunction, signature, options = {}) {\n if (!name || typeof name !== \"string\" || name.trim() === \"\") {\n return {\n success: false,\n reason: \"invalid-name\",\n message: \"Function name must be a non-empty string\"\n };\n }\n try {\n this.validateInputSignatures(name, signature);\n } catch (error) {\n return {\n success: false,\n reason: \"invalid-signature\",\n message: error instanceof Error ? error.message : \"Invalid function signature\"\n };\n }\n const { override = false, warn = false } = options;\n const exists = name in this._functionTable;\n if (exists && !override) {\n return {\n success: false,\n reason: \"already-exists\",\n message: `Function already defined: ${name}(). Use { override: true } to replace it.`\n };\n }\n if (exists && override && warn) {\n console.warn(`Warning: Overriding existing function: ${name}()`);\n }\n this._functionTable[name] = {\n _func: customFunction.bind(this),\n _signature: signature\n };\n this._customFunctions.add(name);\n const message = exists ? `Function ${name}() overridden successfully` : `Function ${name}() registered successfully`;\n return { success: true, message };\n }\n /**\n * Register a new function with enhanced options and type safety\n */\n register(name, customFunction, signature, options = {}) {\n return this._registerInternal(name, customFunction, signature, options);\n }\n /**\n * Unregister a custom function (built-in functions cannot be unregistered)\n */\n unregister(name) {\n if (!this._customFunctions.has(name)) {\n return false;\n }\n delete this._functionTable[name];\n this._customFunctions.delete(name);\n return true;\n }\n /**\n * Check if a function is registered\n */\n isRegistered(name) {\n return name in this._functionTable;\n }\n /**\n * Get list of all registered function names\n */\n getRegistered() {\n return Object.keys(this._functionTable);\n }\n /**\n * Get list of custom (non-built-in) function names\n */\n getCustomFunctions() {\n return Array.from(this._customFunctions);\n }\n /**\n * Clear all custom functions (built-in functions remain)\n */\n clearCustomFunctions() {\n for (const name of this._customFunctions) {\n delete this._functionTable[name];\n }\n this._customFunctions.clear();\n }\n callFunction(name, resolvedArgs) {\n const functionEntry = this._functionTable[name];\n if (functionEntry === void 0) {\n throw new Error(`Unknown function: ${name}()`);\n }\n this.validateArgs(name, resolvedArgs, functionEntry._signature);\n return functionEntry._func.call(this, resolvedArgs);\n }\n validateInputSignatures(name, signature) {\n for (let i = 0; i < signature.length; i += 1) {\n if (\"variadic\" in signature[i] && i !== signature.length - 1) {\n throw new Error(`Invalid arity: ${name}() 'variadic' argument ${i + 1} must occur last`);\n }\n }\n }\n validateArgs(name, args, signature) {\n this.validateInputSignatures(name, signature);\n this.validateArity(name, args, signature);\n this.validateTypes(name, args, signature);\n }\n validateArity(name, args, signature) {\n const numberOfRequiredArgs = signature.filter((argSignature) => !(argSignature.optional ?? false)).length;\n const lastArgIsVariadic = signature[signature.length - 1]?.variadic ?? false;\n const tooFewArgs = args.length < numberOfRequiredArgs;\n const tooManyArgs = args.length > signature.length;\n if (lastArgIsVariadic && tooFewArgs || !lastArgIsVariadic && (tooFewArgs || tooManyArgs)) {\n const tooFewModifier = tooFewArgs && (!lastArgIsVariadic && numberOfRequiredArgs > 1 || lastArgIsVariadic) ? \"at least \" : \"\";\n const pluralized = signature.length > 1;\n throw new Error(\n `Invalid arity: ${name}() takes ${tooFewModifier}${numberOfRequiredArgs} argument${pluralized && \"s\" || \"\"} but received ${args.length}`\n );\n }\n }\n validateTypes(name, args, signature) {\n for (let i = 0; i < signature.length; i += 1) {\n const currentSpec = signature[i].types;\n const actualType = this.getTypeName(args[i]);\n if (actualType === void 0) {\n continue;\n }\n const typeMatched = currentSpec.some((expectedType) => this.typeMatches(actualType, expectedType, args[i]));\n if (!typeMatched) {\n const expected = currentSpec.map((typeId) => this.TYPE_NAME_TABLE[typeId]).join(\" | \");\n throw new Error(\n `Invalid type: ${name}() expected argument ${i + 1} to be type (${expected}) but received type ${this.TYPE_NAME_TABLE[actualType]} instead.`\n );\n }\n }\n }\n typeMatches(actual, expected, argValue) {\n if (expected === 1 /* TYPE_ANY */) {\n return true;\n }\n if (expected === 9 /* TYPE_ARRAY_STRING */ || expected === 8 /* TYPE_ARRAY_NUMBER */ || expected === 10 /* TYPE_ARRAY_OBJECT */ || expected === 11 /* TYPE_ARRAY_ARRAY */ || expected === 3 /* TYPE_ARRAY */) {\n if (expected === 3 /* TYPE_ARRAY */) {\n return actual === 3 /* TYPE_ARRAY */;\n }\n if (actual === 3 /* TYPE_ARRAY */) {\n let subtype;\n if (expected === 8 /* TYPE_ARRAY_NUMBER */) {\n subtype = 0 /* TYPE_NUMBER */;\n } else if (expected === 10 /* TYPE_ARRAY_OBJECT */) {\n subtype = 4 /* TYPE_OBJECT */;\n } else if (expected === 9 /* TYPE_ARRAY_STRING */) {\n subtype = 2 /* TYPE_STRING */;\n } else if (expected === 11 /* TYPE_ARRAY_ARRAY */) {\n subtype = 3 /* TYPE_ARRAY */;\n }\n const array = argValue;\n for (let i = 0; i < array.length; i += 1) {\n const typeName = this.getTypeName(array[i]);\n if (typeName !== void 0 && subtype !== void 0 && !this.typeMatches(typeName, subtype, array[i])) {\n return false;\n }\n }\n return true;\n }\n } else {\n return actual === expected;\n }\n return false;\n }\n getTypeName(obj) {\n if (obj === null) {\n return 7 /* TYPE_NULL */;\n }\n if (typeof obj === \"string\") {\n return 2 /* TYPE_STRING */;\n }\n if (typeof obj === \"number\") {\n return 0 /* TYPE_NUMBER */;\n }\n if (typeof obj === \"boolean\") {\n return 5 /* TYPE_BOOLEAN */;\n }\n if (Array.isArray(obj)) {\n return 3 /* TYPE_ARRAY */;\n }\n if (typeof obj === \"object\") {\n if (obj.expref) {\n return 6 /* TYPE_EXPREF */;\n }\n return 4 /* TYPE_OBJECT */;\n }\n return;\n }\n createKeyFunction(exprefNode, allowedTypes) {\n const interpreter = this._interpreter;\n const keyFunc = (x) => {\n const current = interpreter.visit(exprefNode, x);\n if (!allowedTypes.includes(this.getTypeName(current))) {\n const msg = `Invalid type: expected one of (${allowedTypes.map((t) => this.TYPE_NAME_TABLE[t]).join(\" | \")}), received ${this.TYPE_NAME_TABLE[this.getTypeName(current)]}`;\n throw new Error(msg);\n }\n return current;\n };\n return keyFunc;\n }\n functionAvg = ([inputArray]) => {\n if (!inputArray || inputArray.length == 0) {\n return null;\n }\n let sum = 0;\n for (let i = 0; i < inputArray.length; i += 1) {\n sum += inputArray[i];\n }\n return sum / inputArray.length;\n };\n functionContains = ([\n searchable,\n searchValue\n ]) => {\n if (Array.isArray(searchable)) {\n const array = searchable;\n return array.includes(searchValue);\n }\n if (typeof searchable === \"string\") {\n const text = searchable;\n if (typeof searchValue === \"string\") {\n return text.includes(searchValue);\n }\n }\n return null;\n };\n functionEndsWith = (resolvedArgs) => {\n const [searchStr, suffix] = resolvedArgs;\n return searchStr.includes(suffix, searchStr.length - suffix.length);\n };\n functionFindFirst = this.createFindFunction(findFirst);\n functionFindLast = this.createFindFunction(findLast);\n createFindFunction(findFn) {\n return (resolvedArgs) => {\n const subject = resolvedArgs[0];\n const search2 = resolvedArgs[1];\n const start = resolvedArgs.length > 2 ? resolvedArgs[2] : void 0;\n const end = resolvedArgs.length > 3 ? resolvedArgs[3] : void 0;\n return findFn(subject, search2, start, end);\n };\n }\n functionFromItems = ([array]) => {\n array.map((pair) => {\n if (pair.length != 2 || typeof pair[0] !== \"string\") {\n throw new Error(\"invalid value, each array must contain two elements, a pair of string and value\");\n }\n });\n return Object.fromEntries(array);\n };\n functionGroupBy = ([array, exprefNode]) => {\n const keyFunction = this.createKeyFunction(exprefNode, [2 /* TYPE_STRING */]);\n return array.reduce((acc, cur) => {\n const k = keyFunction(cur ?? {});\n const target = acc[k] = acc[k] || [];\n target.push(cur);\n return acc;\n }, {});\n };\n functionItems = ([inputValue]) => {\n return Object.entries(inputValue);\n };\n functionJoin = (resolvedArgs) => {\n const [joinChar, listJoin] = resolvedArgs;\n return listJoin.join(joinChar);\n };\n functionLength = ([inputValue]) => {\n if (typeof inputValue === \"string\") {\n return new Text(inputValue).length;\n }\n if (Array.isArray(inputValue)) {\n return inputValue.length;\n }\n return Object.keys(inputValue).length;\n };\n functionMap = ([exprefNode, elements]) => {\n if (!this._interpreter) {\n return [];\n }\n const mapped = [];\n const interpreter = this._interpreter;\n for (let i = 0; i < elements.length; i += 1) {\n mapped.push(interpreter.visit(exprefNode, elements[i]));\n }\n return mapped;\n };\n functionMax = ([inputValue]) => {\n if (!inputValue.length) {\n return null;\n }\n const typeName = this.getTypeName(inputValue[0]);\n if (typeName === 0 /* TYPE_NUMBER */) {\n return Math.max(...inputValue);\n }\n const elements = inputValue;\n let maxElement = elements[0];\n for (let i = 1; i < elements.length; i += 1) {\n if (maxElement.localeCompare(elements[i]) < 0) {\n maxElement = elements[i];\n }\n }\n return maxElement;\n };\n functionMaxBy = (resolvedArgs) => {\n const exprefNode = resolvedArgs[1];\n const resolvedArray = resolvedArgs[0];\n const keyFunction = this.createKeyFunction(exprefNode, [0 /* TYPE_NUMBER */, 2 /* TYPE_STRING */]);\n let maxNumber = -Infinity;\n let maxRecord;\n let current;\n for (let i = 0; i < resolvedArray.length; i += 1) {\n current = keyFunction && keyFunction(resolvedArray[i]);\n if (current !== void 0 && current > maxNumber) {\n maxNumber = current;\n maxRecord = resolvedArray[i];\n }\n }\n return maxRecord || null;\n };\n functionMerge = (resolvedArgs) => {\n let merged = {};\n for (let i = 0; i < resolvedArgs.length; i += 1) {\n const current = resolvedArgs[i];\n merged = Object.assign(merged, current);\n }\n return merged;\n };\n functionMin = ([inputValue]) => {\n if (!inputValue.length) {\n return null;\n }\n const typeName = this.getTypeName(inputValue[0]);\n if (typeName === 0 /* TYPE_NUMBER */) {\n return Math.min(...inputValue);\n }\n const elements = inputValue;\n let minElement = elements[0];\n for (let i = 1; i < elements.length; i += 1) {\n if (elements[i].localeCompare(minElement) < 0) {\n minElement = elements[i];\n }\n }\n return minElement;\n };\n functionMinBy = (resolvedArgs) => {\n const exprefNode = resolvedArgs[1];\n const resolvedArray = resolvedArgs[0];\n const keyFunction = this.createKeyFunction(exprefNode, [0 /* TYPE_NUMBER */, 2 /* TYPE_STRING */]);\n let minNumber = Infinity;\n let minRecord;\n let current;\n for (let i = 0; i < resolvedArray.length; i += 1) {\n current = keyFunction && keyFunction(resolvedArray[i]);\n if (current !== void 0 && current < minNumber) {\n minNumber = current;\n minRecord = resolvedArray[i];\n }\n }\n return minRecord || null;\n };\n functionNotNull = (resolvedArgs) => {\n for (let i = 0; i < resolvedArgs.length; i += 1) {\n if (this.getTypeName(resolvedArgs[i]) !== 7 /* TYPE_NULL */) {\n return resolvedArgs[i];\n }\n }\n return null;\n };\n functionPadLeft = this.createPadFunction(padLeft);\n functionPadRight = this.createPadFunction(padRight);\n createPadFunction(padFn) {\n return (resolvedArgs) => {\n const subject = resolvedArgs[0];\n const width = resolvedArgs[1];\n const padding = resolvedArgs.length > 2 ? resolvedArgs[2] : void 0;\n return padFn(subject, width, padding);\n };\n }\n functionReplace = (resolvedArgs) => {\n const subject = resolvedArgs[0];\n const string = resolvedArgs[1];\n const by = resolvedArgs[2];\n return replace(subject, string, by, resolvedArgs.length > 3 ? resolvedArgs[3] : void 0);\n };\n functionSplit = (resolvedArgs) => {\n const subject = resolvedArgs[0];\n const search2 = resolvedArgs[1];\n return split(subject, search2, resolvedArgs.length > 2 ? resolvedArgs[2] : void 0);\n };\n functionReverse = ([inputValue]) => {\n const typeName = this.getTypeName(inputValue);\n if (typeName === 2 /* TYPE_STRING */) {\n return new Text(inputValue).reverse();\n }\n const reversedArray = inputValue.slice(0);\n reversedArray.reverse();\n return reversedArray;\n };\n functionSort = ([inputValue]) => {\n if (inputValue.length == 0) {\n return inputValue;\n }\n if (typeof inputValue[0] === \"string\") {\n return [...inputValue].sort(Text.comparer);\n }\n return [...inputValue].sort();\n };\n functionSortBy = (resolvedArgs) => {\n const sortedArray = resolvedArgs[0].slice(0);\n if (sortedArray.length === 0) {\n return sortedArray;\n }\n const interpreter = this._interpreter;\n const exprefNode = resolvedArgs[1];\n const requiredType = this.getTypeName(interpreter.visit(exprefNode, sortedArray[0]));\n if (requiredType !== void 0 && ![0 /* TYPE_NUMBER */, 2 /* TYPE_STRING */].includes(requiredType)) {\n throw new Error(`Invalid type: unexpected type (${this.TYPE_NAME_TABLE[requiredType]})`);\n }\n function throwInvalidTypeError(rt, item) {\n throw new Error(\n `Invalid type: expected (${rt.TYPE_NAME_TABLE[requiredType]}), received ${rt.TYPE_NAME_TABLE[rt.getTypeName(item)]}`\n );\n }\n return sortedArray.sort((a, b) => {\n const exprA = interpreter.visit(exprefNode, a);\n const exprB = interpreter.visit(exprefNode, b);\n if (this.getTypeName(exprA) !== requiredType) {\n throwInvalidTypeError(this, exprA);\n } else if (this.getTypeName(exprB) !== requiredType) {\n throwInvalidTypeError(this, exprB);\n }\n if (requiredType === 2 /* TYPE_STRING */) {\n return Text.comparer(exprA, exprB);\n }\n return exprA - exprB;\n });\n };\n functionStartsWith = ([searchable, searchStr]) => {\n return searchable.startsWith(searchStr);\n };\n functionSum = ([inputValue]) => {\n return inputValue.reduce((x, y) => x + y, 0);\n };\n functionToArray = ([inputValue]) => {\n if (this.getTypeName(inputValue) === 3 /* TYPE_ARRAY */) {\n return inputValue;\n }\n return [inputValue];\n };\n functionToNumber = ([inputValue]) => {\n const typeName = this.getTypeName(inputValue);\n let convertedValue;\n if (typeName === 0 /* TYPE_NUMBER */) {\n return inputValue;\n }\n if (typeName === 2 /* TYPE_STRING */) {\n convertedValue = +inputValue;\n if (!isNaN(convertedValue)) {\n return convertedValue;\n }\n }\n return null;\n };\n functionToString = ([inputValue]) => {\n if (this.getTypeName(inputValue) === 2 /* TYPE_STRING */) {\n return inputValue;\n }\n return JSON.stringify(inputValue);\n };\n functionTrim = this.createTrimFunction(trim);\n functionTrimLeft = this.createTrimFunction(trimLeft);\n functionTrimRight = this.createTrimFunction(trimRight);\n createTrimFunction(trimFn) {\n return (resolvedArgs) => {\n const subject = resolvedArgs[0];\n const chars = resolvedArgs.length > 1 ? resolvedArgs[1] : void 0;\n return trimFn(subject, chars);\n };\n }\n functionType = ([inputValue]) => {\n switch (this.getTypeName(inputValue)) {\n case 0 /* TYPE_NUMBER */:\n return \"number\";\n case 2 /* TYPE_STRING */:\n return \"string\";\n case 3 /* TYPE_ARRAY */:\n return \"array\";\n case 4 /* TYPE_OBJECT */:\n return \"object\";\n case 5 /* TYPE_BOOLEAN */:\n return \"boolean\";\n case 7 /* TYPE_NULL */:\n return \"null\";\n default:\n throw new Error(\"invalid-type\");\n }\n };\n functionZip = (array) => {\n const length = Math.min(...array.map((arr) => arr.length));\n const result = Array(length).fill(null).map((_, index) => array.map((arr) => arr[index]));\n return result;\n };\n};\n\n// src/Scope.ts\nvar ScopeChain = class _ScopeChain {\n inner = void 0;\n data = {};\n get currentScopeData() {\n return this.data;\n }\n withScope(data) {\n const outer = new _ScopeChain();\n outer.inner = this;\n outer.data = data;\n return outer;\n }\n getValue(identifier) {\n if (Object.prototype.hasOwnProperty.call(this.data, identifier)) {\n return this.data[identifier];\n }\n if (this.inner) {\n return this.inner.getValue(identifier);\n }\n return null;\n }\n};\n\n// src/TreeInterpreter.ts\nvar emptyScopeChain = new ScopeChain();\nvar TreeInterpreter = class _TreeInterpreter {\n runtime;\n _rootValue = null;\n _scope;\n constructor() {\n this.runtime = new Runtime(this);\n this._scope = new ScopeChain();\n }\n withScope(scope) {\n const interpreter = new _TreeInterpreter();\n interpreter.runtime._functionTable = this.runtime._functionTable;\n interpreter._rootValue = this._rootValue;\n interpreter._scope = this._scope.withScope(scope);\n return interpreter;\n }\n search(node, value) {\n this._rootValue = value;\n this._scope = emptyScopeChain;\n return this.visit(node, value);\n }\n visit(node, value) {\n switch (node.type) {\n case \"Ternary\": {\n const condition = this.visit(node.condition, value);\n if (!isFalse(condition)) {\n return this.visit(node.trueExpr, value);\n }\n return this.visit(node.falseExpr, value);\n }\n case \"Field\":\n const identifier = node.name;\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) {\n return null;\n }\n return value[identifier] ?? null;\n case \"LetExpression\": {\n const { bindings, expression } = node;\n let scope = {};\n bindings.forEach((binding) => {\n const reference = this.visit(binding, value);\n scope = {\n ...scope,\n ...reference\n };\n });\n return this.withScope(scope).visit(expression, value);\n }\n case \"Binding\": {\n const { variable, reference } = node;\n const result = this.visit(reference, value);\n return { [variable]: result };\n }\n case \"Variable\": {\n const variable = node.name;\n if (!this._scope.getValue(variable) && !Object.prototype.hasOwnProperty.call(this._scope.currentScopeData, variable)) {\n throw new Error(`Error referencing undefined variable ${variable}`);\n }\n return this._scope.getValue(variable);\n }\n case \"IndexExpression\":\n return this.visit(node.right, this.visit(node.left, value));\n case \"Subexpression\": {\n const result = this.visit(node.left, value);\n return result != null ? this.visit(node.right, result) ?? null : null;\n }\n case \"Index\": {\n if (!Array.isArray(value)) {\n return null;\n }\n const index = node.value < 0 ? value.length + node.value : node.value;\n return value[index] ?? null;\n }\n case \"Slice\": {\n if (!Array.isArray(value) && typeof value !== \"string\") {\n return null;\n }\n const { start, stop, step } = this.computeSliceParams(value.length, node);\n if (typeof value === \"string\") {\n const chars = [...value];\n const sliced = this.slice(chars, start, stop, step);\n return sliced.join(\"\");\n } else {\n return this.slice(value, start, stop, step);\n }\n }\n case \"Projection\": {\n const { left, right } = node;\n let allowString = false;\n if (left.type === \"IndexExpression\" && left.right.type === \"Slice\") {\n allowString = true;\n }\n const base = this.visit(left, value);\n if (allowString && typeof base === \"string\") {\n return this.visit(right, base);\n }\n if (!Array.isArray(base)) {\n return null;\n }\n const collected = [];\n for (const elem of base) {\n const current = this.visit(right, elem);\n if (current !== null) {\n collected.push(current);\n }\n }\n return collected;\n }\n case \"ValueProjection\": {\n const { left, right } = node;\n const base = this.visit(left, value);\n if (base === null || typeof base !== \"object\" || Array.isArray(base)) {\n return null;\n }\n const collected = [];\n const values = Object.values(base);\n for (const elem of values) {\n const current = this.visit(right, elem);\n if (current !== null) {\n collected.push(current);\n }\n }\n return collected;\n }\n case \"FilterProjection\": {\n const { left, right, condition } = node;\n const base = this.visit(left, value);\n if (!Array.isArray(base)) {\n return null;\n }\n const results = [];\n for (const elem of base) {\n const matched = this.visit(condition, elem);\n if (isFalse(matched)) {\n continue;\n }\n const result = this.visit(right, elem);\n if (result !== null) {\n results.push(result);\n }\n }\n return results;\n }\n case \"Arithmetic\": {\n const first = this.visit(node.left, value);\n const second = this.visit(node.right, value);\n switch (node.operator) {\n case \"Plus\" /* TOK_PLUS */:\n return add(first, second);\n case \"Minus\" /* TOK_MINUS */:\n return sub(first, second);\n case \"Multiply\" /* TOK_MULTIPLY */:\n case \"Star\" /* TOK_STAR */:\n return mul(first, second);\n case \"Divide\" /* TOK_DIVIDE */:\n return divide(first, second);\n case \"Modulo\" /* TOK_MODULO */:\n return mod(first, second);\n case \"Div\" /* TOK_DIV */:\n return div(first, second);\n default:\n throw new Error(`Syntax error: unknown arithmetic operator: ${node.operator}`);\n }\n }\n case \"Unary\": {\n const operand = this.visit(node.operand, value);\n switch (node.operator) {\n case \"Plus\" /* TOK_PLUS */:\n ensureNumbers(operand);\n return operand;\n case \"Minus\" /* TOK_MINUS */:\n ensureNumbers(operand);\n return -operand;\n default:\n throw new Error(`Syntax error: unknown arithmetic operator: ${node.operator}`);\n }\n }\n case \"Comparator\": {\n const first = this.visit(node.left, value);\n const second = this.visit(node.right, value);\n switch (node.name) {\n case \"EQ\":\n return strictDeepEqual(first, second);\n case \"NE\":\n return !strictDeepEqual(first, second);\n }\n if (typeof first !== \"number\" || typeof second !== \"number\") {\n return null;\n }\n switch (node.name) {\n case \"GT\":\n return first > second;\n case \"GTE\":\n return first >= second;\n case \"LT\":\n return first < second;\n case \"LTE\":\n return first <= second;\n }\n }\n case \"Flatten\": {\n const original = this.visit(node.child, value);\n return Array.isArray(original) ? original.flat() : null;\n }\n case \"Root\":\n return this._rootValue;\n case \"MultiSelectList\": {\n const collected = [];\n for (const child of node.children) {\n collected.push(this.visit(child, value));\n }\n return collected;\n }\n case \"MultiSelectHash\": {\n const collected = {};\n for (const child of node.children) {\n collected[child.name] = this.visit(child.value, value);\n }\n return collected;\n }\n case \"OrExpression\": {\n const result = this.visit(node.left, value);\n if (isFalse(result)) {\n return this.visit(node.right, value);\n }\n return result;\n }\n case \"AndExpression\": {\n const result = this.visit(node.left, value);\n if (isFalse(result)) {\n return result;\n }\n return this.visit(node.right, value);\n }\n case \"NotExpression\":\n return isFalse(this.visit(node.child, value));\n case \"Literal\":\n return node.value;\n case \"Pipe\":\n return this.visit(node.right, this.visit(node.left, value));\n case \"Function\": {\n const args = [];\n for (const child of node.children) {\n args.push(this.visit(child, value));\n }\n return this.runtime.callFunction(node.name, args);\n }\n case \"ExpressionReference\":\n return {\n expref: true,\n ...node.child\n };\n case \"Current\":\n case \"Identity\":\n return value;\n }\n }\n computeSliceParams(arrayLength, sliceNode) {\n let { start, stop, step } = sliceNode;\n if (step === null) {\n step = 1;\n } else if (step === 0) {\n const error = new Error(\"Invalid value: slice step cannot be 0\");\n error.name = \"RuntimeError\";\n throw error;\n }\n start = start === null ? step < 0 ? arrayLength - 1 : 0 : this.capSliceRange(arrayLength, start, step);\n stop = stop === null ? step < 0 ? -1 : arrayLength : this.capSliceRange(arrayLength, stop, step);\n return { start, stop, step };\n }\n capSliceRange(arrayLength, actualValue, step) {\n let nextActualValue = actualValue;\n if (nextActualValue < 0) {\n nextActualValue += arrayLength;\n if (nextActualValue < 0) {\n nextActualValue = step < 0 ? -1 : 0;\n }\n } else if (nextActualValue >= arrayLength) {\n nextActualValue = step < 0 ? arrayLength - 1 : arrayLength;\n }\n return nextActualValue;\n }\n slice(collection, start, end, step) {\n const result = [];\n if (step > 0) {\n for (let i = start; i < end; i += step) {\n result.push(collection[i]);\n }\n } else {\n for (let i = start; i > end; i += step) {\n result.push(collection[i]);\n }\n }\n return result;\n }\n};\nvar TreeInterpreterInstance = new TreeInterpreter();\nvar TreeInterpreter_default = TreeInterpreterInstance;\n\n// src/index.ts\nvar TYPE_ANY = 1 /* TYPE_ANY */;\nvar TYPE_ARRAY = 3 /* TYPE_ARRAY */;\nvar TYPE_ARRAY_ARRAY = 11 /* TYPE_ARRAY_ARRAY */;\nvar TYPE_ARRAY_NUMBER = 8 /* TYPE_ARRAY_NUMBER */;\nvar TYPE_ARRAY_OBJECT = 10 /* TYPE_ARRAY_OBJECT */;\nvar TYPE_ARRAY_STRING = 9 /* TYPE_ARRAY_STRING */;\nvar TYPE_BOOLEAN = 5 /* TYPE_BOOLEAN */;\nvar TYPE_EXPREF = 6 /* TYPE_EXPREF */;\nvar TYPE_NULL = 7 /* TYPE_NULL */;\nvar TYPE_NUMBER = 0 /* TYPE_NUMBER */;\nvar TYPE_OBJECT = 4 /* TYPE_OBJECT */;\nvar TYPE_STRING = 2 /* TYPE_STRING */;\nfunction compile(expression, options) {\n const nodeTree = Parser_default.parse(expression, options);\n return nodeTree;\n}\nfunction tokenize(expression, options) {\n return Lexer_default.tokenize(expression, options);\n}\nvar registerFunction = (functionName, customFunction, signature, options) => {\n TreeInterpreter_default.runtime.registerFunction(functionName, customFunction, signature, options);\n};\nvar register = (name, customFunction, signature, options) => {\n return TreeInterpreter_default.runtime.register(name, customFunction, signature, options);\n};\nvar unregisterFunction = (name) => {\n return TreeInterpreter_default.runtime.unregister(name);\n};\nvar isRegistered = (name) => {\n return TreeInterpreter_default.runtime.isRegistered(name);\n};\nvar getRegisteredFunctions = () => {\n return TreeInterpreter_default.runtime.getRegistered();\n};\nvar getCustomFunctions = () => {\n return TreeInterpreter_default.runtime.getCustomFunctions();\n};\nvar clearCustomFunctions = () => {\n TreeInterpreter_default.runtime.clearCustomFunctions();\n};\nfunction search(data, expression, options) {\n const nodeTree = Parser_default.parse(expression, options);\n return TreeInterpreter_default.search(nodeTree, data);\n}\nfunction Scope() {\n return new ScopeChain();\n}\nvar TreeInterpreter2 = TreeInterpreter_default;\nvar jmespath = {\n compile,\n registerFunction,\n register,\n unregisterFunction,\n isRegistered,\n getRegisteredFunctions,\n getCustomFunctions,\n clearCustomFunctions,\n search,\n tokenize,\n TreeInterpreter: TreeInterpreter2,\n TYPE_ANY,\n TYPE_ARRAY_NUMBER,\n TYPE_ARRAY_STRING,\n TYPE_ARRAY,\n TYPE_BOOLEAN,\n TYPE_EXPREF,\n TYPE_NULL,\n TYPE_NUMBER,\n TYPE_OBJECT,\n TYPE_STRING\n};\n\nexport { Scope, TYPE_ANY, TYPE_ARRAY, TYPE_ARRAY_ARRAY, TYPE_ARRAY_NUMBER, TYPE_ARRAY_OBJECT, TYPE_ARRAY_STRING, TYPE_BOOLEAN, TYPE_EXPREF, TYPE_NULL, TYPE_NUMBER, TYPE_OBJECT, TYPE_STRING, TreeInterpreter2 as TreeInterpreter, clearCustomFunctions, compile, jmespath as default, getCustomFunctions, getRegisteredFunctions, isRegistered, jmespath, register, registerFunction, search, tokenize, unregisterFunction };\n//# sourceMappingURL=index.mjs.map\n//# sourceMappingURL=index.mjs.map",
|
|
83
|
+
"/*! js-yaml 4.2.0 https://github.com/nodeca/js-yaml @license MIT */\n//#region \\0rolldown/runtime.js\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {\n\t\tkey = keys[i];\n\t\tif (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n\t\t\tget: ((k) => from[k]).bind(null, key),\n\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t});\n\t}\n\treturn to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", {\n\tvalue: mod,\n\tenumerable: true\n}) : target, mod));\n//#endregion\n//#region lib/common.js\nvar require_common = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tfunction isNothing(subject) {\n\t\treturn typeof subject === \"undefined\" || subject === null;\n\t}\n\tfunction isObject(subject) {\n\t\treturn typeof subject === \"object\" && subject !== null;\n\t}\n\tfunction toArray(sequence) {\n\t\tif (Array.isArray(sequence)) return sequence;\n\t\telse if (isNothing(sequence)) return [];\n\t\treturn [sequence];\n\t}\n\tfunction extend(target, source) {\n\t\tif (source) {\n\t\t\tconst sourceKeys = Object.keys(source);\n\t\t\tfor (let index = 0, length = sourceKeys.length; index < length; index += 1) {\n\t\t\t\tconst key = sourceKeys[index];\n\t\t\t\ttarget[key] = source[key];\n\t\t\t}\n\t\t}\n\t\treturn target;\n\t}\n\tfunction repeat(string, count) {\n\t\tlet result = \"\";\n\t\tfor (let cycle = 0; cycle < count; cycle += 1) result += string;\n\t\treturn result;\n\t}\n\tfunction isNegativeZero(number) {\n\t\treturn number === 0 && Number.NEGATIVE_INFINITY === 1 / number;\n\t}\n\tmodule.exports.isNothing = isNothing;\n\tmodule.exports.isObject = isObject;\n\tmodule.exports.toArray = toArray;\n\tmodule.exports.repeat = repeat;\n\tmodule.exports.isNegativeZero = isNegativeZero;\n\tmodule.exports.extend = extend;\n}));\n//#endregion\n//#region lib/exception.js\nvar require_exception = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tfunction formatError(exception, compact) {\n\t\tlet where = \"\";\n\t\tconst message = exception.reason || \"(unknown reason)\";\n\t\tif (!exception.mark) return message;\n\t\tif (exception.mark.name) where += \"in \\\"\" + exception.mark.name + \"\\\" \";\n\t\twhere += \"(\" + (exception.mark.line + 1) + \":\" + (exception.mark.column + 1) + \")\";\n\t\tif (!compact && exception.mark.snippet) where += \"\\n\\n\" + exception.mark.snippet;\n\t\treturn message + \" \" + where;\n\t}\n\tfunction YAMLException(reason, mark) {\n\t\tError.call(this);\n\t\tthis.name = \"YAMLException\";\n\t\tthis.reason = reason;\n\t\tthis.mark = mark;\n\t\tthis.message = formatError(this, false);\n\t\tif (Error.captureStackTrace) Error.captureStackTrace(this, this.constructor);\n\t\telse this.stack = (/* @__PURE__ */ new Error()).stack || \"\";\n\t}\n\tYAMLException.prototype = Object.create(Error.prototype);\n\tYAMLException.prototype.constructor = YAMLException;\n\tYAMLException.prototype.toString = function toString(compact) {\n\t\treturn this.name + \": \" + formatError(this, compact);\n\t};\n\tmodule.exports = YAMLException;\n}));\n//#endregion\n//#region lib/snippet.js\nvar require_snippet = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar common = require_common();\n\tfunction getLine(buffer, lineStart, lineEnd, position, maxLineLength) {\n\t\tlet head = \"\";\n\t\tlet tail = \"\";\n\t\tconst maxHalfLength = Math.floor(maxLineLength / 2) - 1;\n\t\tif (position - lineStart > maxHalfLength) {\n\t\t\thead = \" ... \";\n\t\t\tlineStart = position - maxHalfLength + head.length;\n\t\t}\n\t\tif (lineEnd - position > maxHalfLength) {\n\t\t\ttail = \" ...\";\n\t\t\tlineEnd = position + maxHalfLength - tail.length;\n\t\t}\n\t\treturn {\n\t\t\tstr: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, \"→\") + tail,\n\t\t\tpos: position - lineStart + head.length\n\t\t};\n\t}\n\tfunction padStart(string, max) {\n\t\treturn common.repeat(\" \", max - string.length) + string;\n\t}\n\tfunction makeSnippet(mark, options) {\n\t\toptions = Object.create(options || null);\n\t\tif (!mark.buffer) return null;\n\t\tif (!options.maxLength) options.maxLength = 79;\n\t\tif (typeof options.indent !== \"number\") options.indent = 1;\n\t\tif (typeof options.linesBefore !== \"number\") options.linesBefore = 3;\n\t\tif (typeof options.linesAfter !== \"number\") options.linesAfter = 2;\n\t\tconst re = /\\r?\\n|\\r|\\0/g;\n\t\tconst lineStarts = [0];\n\t\tconst lineEnds = [];\n\t\tlet match;\n\t\tlet foundLineNo = -1;\n\t\twhile (match = re.exec(mark.buffer)) {\n\t\t\tlineEnds.push(match.index);\n\t\t\tlineStarts.push(match.index + match[0].length);\n\t\t\tif (mark.position <= match.index && foundLineNo < 0) foundLineNo = lineStarts.length - 2;\n\t\t}\n\t\tif (foundLineNo < 0) foundLineNo = lineStarts.length - 1;\n\t\tlet result = \"\";\n\t\tconst lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length;\n\t\tconst maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);\n\t\tfor (let i = 1; i <= options.linesBefore; i++) {\n\t\t\tif (foundLineNo - i < 0) break;\n\t\t\tconst line = getLine(mark.buffer, lineStarts[foundLineNo - i], lineEnds[foundLineNo - i], mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]), maxLineLength);\n\t\t\tresult = common.repeat(\" \", options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + \" | \" + line.str + \"\\n\" + result;\n\t\t}\n\t\tconst line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength);\n\t\tresult += common.repeat(\" \", options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + \" | \" + line.str + \"\\n\";\n\t\tresult += common.repeat(\"-\", options.indent + lineNoLength + 3 + line.pos) + \"^\\n\";\n\t\tfor (let i = 1; i <= options.linesAfter; i++) {\n\t\t\tif (foundLineNo + i >= lineEnds.length) break;\n\t\t\tconst line = getLine(mark.buffer, lineStarts[foundLineNo + i], lineEnds[foundLineNo + i], mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]), maxLineLength);\n\t\t\tresult += common.repeat(\" \", options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) + \" | \" + line.str + \"\\n\";\n\t\t}\n\t\treturn result.replace(/\\n$/, \"\");\n\t}\n\tmodule.exports = makeSnippet;\n}));\n//#endregion\n//#region lib/type.js\nvar require_type = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar YAMLException = require_exception();\n\tvar TYPE_CONSTRUCTOR_OPTIONS = [\n\t\t\"kind\",\n\t\t\"multi\",\n\t\t\"resolve\",\n\t\t\"construct\",\n\t\t\"instanceOf\",\n\t\t\"predicate\",\n\t\t\"represent\",\n\t\t\"representName\",\n\t\t\"defaultStyle\",\n\t\t\"styleAliases\"\n\t];\n\tvar YAML_NODE_KINDS = [\n\t\t\"scalar\",\n\t\t\"sequence\",\n\t\t\"mapping\"\n\t];\n\tfunction compileStyleAliases(map) {\n\t\tconst result = {};\n\t\tif (map !== null) Object.keys(map).forEach(function(style) {\n\t\t\tmap[style].forEach(function(alias) {\n\t\t\t\tresult[String(alias)] = style;\n\t\t\t});\n\t\t});\n\t\treturn result;\n\t}\n\tfunction Type(tag, options) {\n\t\toptions = options || {};\n\t\tObject.keys(options).forEach(function(name) {\n\t\t\tif (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) throw new YAMLException(\"Unknown option \\\"\" + name + \"\\\" is met in definition of \\\"\" + tag + \"\\\" YAML type.\");\n\t\t});\n\t\tthis.options = options;\n\t\tthis.tag = tag;\n\t\tthis.kind = options[\"kind\"] || null;\n\t\tthis.resolve = options[\"resolve\"] || function() {\n\t\t\treturn true;\n\t\t};\n\t\tthis.construct = options[\"construct\"] || function(data) {\n\t\t\treturn data;\n\t\t};\n\t\tthis.instanceOf = options[\"instanceOf\"] || null;\n\t\tthis.predicate = options[\"predicate\"] || null;\n\t\tthis.represent = options[\"represent\"] || null;\n\t\tthis.representName = options[\"representName\"] || null;\n\t\tthis.defaultStyle = options[\"defaultStyle\"] || null;\n\t\tthis.multi = options[\"multi\"] || false;\n\t\tthis.styleAliases = compileStyleAliases(options[\"styleAliases\"] || null);\n\t\tif (YAML_NODE_KINDS.indexOf(this.kind) === -1) throw new YAMLException(\"Unknown kind \\\"\" + this.kind + \"\\\" is specified for \\\"\" + tag + \"\\\" YAML type.\");\n\t}\n\tmodule.exports = Type;\n}));\n//#endregion\n//#region lib/schema.js\nvar require_schema = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar YAMLException = require_exception();\n\tvar Type = require_type();\n\tfunction compileList(schema, name) {\n\t\tconst result = [];\n\t\tschema[name].forEach(function(currentType) {\n\t\t\tlet newIndex = result.length;\n\t\t\tresult.forEach(function(previousType, previousIndex) {\n\t\t\t\tif (previousType.tag === currentType.tag && previousType.kind === currentType.kind && previousType.multi === currentType.multi) newIndex = previousIndex;\n\t\t\t});\n\t\t\tresult[newIndex] = currentType;\n\t\t});\n\t\treturn result;\n\t}\n\tfunction compileMap() {\n\t\tconst result = {\n\t\t\tscalar: {},\n\t\t\tsequence: {},\n\t\t\tmapping: {},\n\t\t\tfallback: {},\n\t\t\tmulti: {\n\t\t\t\tscalar: [],\n\t\t\t\tsequence: [],\n\t\t\t\tmapping: [],\n\t\t\t\tfallback: []\n\t\t\t}\n\t\t};\n\t\tfunction collectType(type) {\n\t\t\tif (type.multi) {\n\t\t\t\tresult.multi[type.kind].push(type);\n\t\t\t\tresult.multi[\"fallback\"].push(type);\n\t\t\t} else result[type.kind][type.tag] = result[\"fallback\"][type.tag] = type;\n\t\t}\n\t\tfor (let index = 0, length = arguments.length; index < length; index += 1) arguments[index].forEach(collectType);\n\t\treturn result;\n\t}\n\tfunction Schema(definition) {\n\t\treturn this.extend(definition);\n\t}\n\tSchema.prototype.extend = function extend(definition) {\n\t\tlet implicit = [];\n\t\tlet explicit = [];\n\t\tif (definition instanceof Type) explicit.push(definition);\n\t\telse if (Array.isArray(definition)) explicit = explicit.concat(definition);\n\t\telse if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {\n\t\t\tif (definition.implicit) implicit = implicit.concat(definition.implicit);\n\t\t\tif (definition.explicit) explicit = explicit.concat(definition.explicit);\n\t\t} else throw new YAMLException(\"Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })\");\n\t\timplicit.forEach(function(type) {\n\t\t\tif (!(type instanceof Type)) throw new YAMLException(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");\n\t\t\tif (type.loadKind && type.loadKind !== \"scalar\") throw new YAMLException(\"There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.\");\n\t\t\tif (type.multi) throw new YAMLException(\"There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.\");\n\t\t});\n\t\texplicit.forEach(function(type) {\n\t\t\tif (!(type instanceof Type)) throw new YAMLException(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");\n\t\t});\n\t\tconst result = Object.create(Schema.prototype);\n\t\tresult.implicit = (this.implicit || []).concat(implicit);\n\t\tresult.explicit = (this.explicit || []).concat(explicit);\n\t\tresult.compiledImplicit = compileList(result, \"implicit\");\n\t\tresult.compiledExplicit = compileList(result, \"explicit\");\n\t\tresult.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit);\n\t\treturn result;\n\t};\n\tmodule.exports = Schema;\n}));\n//#endregion\n//#region lib/type/str.js\nvar require_str = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tmodule.exports = new (require_type())(\"tag:yaml.org,2002:str\", {\n\t\tkind: \"scalar\",\n\t\tconstruct: function(data) {\n\t\t\treturn data !== null ? data : \"\";\n\t\t}\n\t});\n}));\n//#endregion\n//#region lib/type/seq.js\nvar require_seq = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tmodule.exports = new (require_type())(\"tag:yaml.org,2002:seq\", {\n\t\tkind: \"sequence\",\n\t\tconstruct: function(data) {\n\t\t\treturn data !== null ? data : [];\n\t\t}\n\t});\n}));\n//#endregion\n//#region lib/type/map.js\nvar require_map = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tmodule.exports = new (require_type())(\"tag:yaml.org,2002:map\", {\n\t\tkind: \"mapping\",\n\t\tconstruct: function(data) {\n\t\t\treturn data !== null ? data : {};\n\t\t}\n\t});\n}));\n//#endregion\n//#region lib/schema/failsafe.js\nvar require_failsafe = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tmodule.exports = new (require_schema())({ explicit: [\n\t\trequire_str(),\n\t\trequire_seq(),\n\t\trequire_map()\n\t] });\n}));\n//#endregion\n//#region lib/type/null.js\nvar require_null = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar Type = require_type();\n\tfunction resolveYamlNull(data) {\n\t\tif (data === null) return true;\n\t\tconst max = data.length;\n\t\treturn max === 1 && data === \"~\" || max === 4 && (data === \"null\" || data === \"Null\" || data === \"NULL\");\n\t}\n\tfunction constructYamlNull() {\n\t\treturn null;\n\t}\n\tfunction isNull(object) {\n\t\treturn object === null;\n\t}\n\tmodule.exports = new Type(\"tag:yaml.org,2002:null\", {\n\t\tkind: \"scalar\",\n\t\tresolve: resolveYamlNull,\n\t\tconstruct: constructYamlNull,\n\t\tpredicate: isNull,\n\t\trepresent: {\n\t\t\tcanonical: function() {\n\t\t\t\treturn \"~\";\n\t\t\t},\n\t\t\tlowercase: function() {\n\t\t\t\treturn \"null\";\n\t\t\t},\n\t\t\tuppercase: function() {\n\t\t\t\treturn \"NULL\";\n\t\t\t},\n\t\t\tcamelcase: function() {\n\t\t\t\treturn \"Null\";\n\t\t\t},\n\t\t\tempty: function() {\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t},\n\t\tdefaultStyle: \"lowercase\"\n\t});\n}));\n//#endregion\n//#region lib/type/bool.js\nvar require_bool = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar Type = require_type();\n\tfunction resolveYamlBoolean(data) {\n\t\tif (data === null) return false;\n\t\tconst max = data.length;\n\t\treturn max === 4 && (data === \"true\" || data === \"True\" || data === \"TRUE\") || max === 5 && (data === \"false\" || data === \"False\" || data === \"FALSE\");\n\t}\n\tfunction constructYamlBoolean(data) {\n\t\treturn data === \"true\" || data === \"True\" || data === \"TRUE\";\n\t}\n\tfunction isBoolean(object) {\n\t\treturn Object.prototype.toString.call(object) === \"[object Boolean]\";\n\t}\n\tmodule.exports = new Type(\"tag:yaml.org,2002:bool\", {\n\t\tkind: \"scalar\",\n\t\tresolve: resolveYamlBoolean,\n\t\tconstruct: constructYamlBoolean,\n\t\tpredicate: isBoolean,\n\t\trepresent: {\n\t\t\tlowercase: function(object) {\n\t\t\t\treturn object ? \"true\" : \"false\";\n\t\t\t},\n\t\t\tuppercase: function(object) {\n\t\t\t\treturn object ? \"TRUE\" : \"FALSE\";\n\t\t\t},\n\t\t\tcamelcase: function(object) {\n\t\t\t\treturn object ? \"True\" : \"False\";\n\t\t\t}\n\t\t},\n\t\tdefaultStyle: \"lowercase\"\n\t});\n}));\n//#endregion\n//#region lib/type/int.js\nvar require_int = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar common = require_common();\n\tvar Type = require_type();\n\tfunction isHexCode(c) {\n\t\treturn c >= 48 && c <= 57 || c >= 65 && c <= 70 || c >= 97 && c <= 102;\n\t}\n\tfunction isOctCode(c) {\n\t\treturn c >= 48 && c <= 55;\n\t}\n\tfunction isDecCode(c) {\n\t\treturn c >= 48 && c <= 57;\n\t}\n\tfunction resolveYamlInteger(data) {\n\t\tif (data === null) return false;\n\t\tconst max = data.length;\n\t\tlet index = 0;\n\t\tlet hasDigits = false;\n\t\tif (!max) return false;\n\t\tlet ch = data[index];\n\t\tif (ch === \"-\" || ch === \"+\") ch = data[++index];\n\t\tif (ch === \"0\") {\n\t\t\tif (index + 1 === max) return true;\n\t\t\tch = data[++index];\n\t\t\tif (ch === \"b\") {\n\t\t\t\tindex++;\n\t\t\t\tfor (; index < max; index++) {\n\t\t\t\t\tch = data[index];\n\t\t\t\t\tif (ch !== \"0\" && ch !== \"1\") return false;\n\t\t\t\t\thasDigits = true;\n\t\t\t\t}\n\t\t\t\treturn hasDigits && Number.isFinite(parseYamlInteger(data));\n\t\t\t}\n\t\t\tif (ch === \"x\") {\n\t\t\t\tindex++;\n\t\t\t\tfor (; index < max; index++) {\n\t\t\t\t\tif (!isHexCode(data.charCodeAt(index))) return false;\n\t\t\t\t\thasDigits = true;\n\t\t\t\t}\n\t\t\t\treturn hasDigits && Number.isFinite(parseYamlInteger(data));\n\t\t\t}\n\t\t\tif (ch === \"o\") {\n\t\t\t\tindex++;\n\t\t\t\tfor (; index < max; index++) {\n\t\t\t\t\tif (!isOctCode(data.charCodeAt(index))) return false;\n\t\t\t\t\thasDigits = true;\n\t\t\t\t}\n\t\t\t\treturn hasDigits && Number.isFinite(parseYamlInteger(data));\n\t\t\t}\n\t\t}\n\t\tfor (; index < max; index++) {\n\t\t\tif (!isDecCode(data.charCodeAt(index))) return false;\n\t\t\thasDigits = true;\n\t\t}\n\t\tif (!hasDigits) return false;\n\t\treturn Number.isFinite(parseYamlInteger(data));\n\t}\n\tfunction parseYamlInteger(data) {\n\t\tlet value = data;\n\t\tlet sign = 1;\n\t\tlet ch = value[0];\n\t\tif (ch === \"-\" || ch === \"+\") {\n\t\t\tif (ch === \"-\") sign = -1;\n\t\t\tvalue = value.slice(1);\n\t\t\tch = value[0];\n\t\t}\n\t\tif (value === \"0\") return 0;\n\t\tif (ch === \"0\") {\n\t\t\tif (value[1] === \"b\") return sign * parseInt(value.slice(2), 2);\n\t\t\tif (value[1] === \"x\") return sign * parseInt(value.slice(2), 16);\n\t\t\tif (value[1] === \"o\") return sign * parseInt(value.slice(2), 8);\n\t\t}\n\t\treturn sign * parseInt(value, 10);\n\t}\n\tfunction constructYamlInteger(data) {\n\t\treturn parseYamlInteger(data);\n\t}\n\tfunction isInteger(object) {\n\t\treturn Object.prototype.toString.call(object) === \"[object Number]\" && object % 1 === 0 && !common.isNegativeZero(object);\n\t}\n\tmodule.exports = new Type(\"tag:yaml.org,2002:int\", {\n\t\tkind: \"scalar\",\n\t\tresolve: resolveYamlInteger,\n\t\tconstruct: constructYamlInteger,\n\t\tpredicate: isInteger,\n\t\trepresent: {\n\t\t\tbinary: function(obj) {\n\t\t\t\treturn obj >= 0 ? \"0b\" + obj.toString(2) : \"-0b\" + obj.toString(2).slice(1);\n\t\t\t},\n\t\t\toctal: function(obj) {\n\t\t\t\treturn obj >= 0 ? \"0o\" + obj.toString(8) : \"-0o\" + obj.toString(8).slice(1);\n\t\t\t},\n\t\t\tdecimal: function(obj) {\n\t\t\t\treturn obj.toString(10);\n\t\t\t},\n\t\t\thexadecimal: function(obj) {\n\t\t\t\treturn obj >= 0 ? \"0x\" + obj.toString(16).toUpperCase() : \"-0x\" + obj.toString(16).toUpperCase().slice(1);\n\t\t\t}\n\t\t},\n\t\tdefaultStyle: \"decimal\",\n\t\tstyleAliases: {\n\t\t\tbinary: [2, \"bin\"],\n\t\t\toctal: [8, \"oct\"],\n\t\t\tdecimal: [10, \"dec\"],\n\t\t\thexadecimal: [16, \"hex\"]\n\t\t}\n\t});\n}));\n//#endregion\n//#region lib/type/float.js\nvar require_float = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar common = require_common();\n\tvar Type = require_type();\n\tvar YAML_FLOAT_PATTERN = /* @__PURE__ */ new RegExp(\"^(?:[-+]?(?:[0-9]+)(?:\\\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?|\\\\.[0-9]+(?:[eE][-+]?[0-9]+)?|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))$\");\n\tvar YAML_FLOAT_SPECIAL_PATTERN = /* @__PURE__ */ new RegExp(\"^(?:[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))$\");\n\tfunction resolveYamlFloat(data) {\n\t\tif (data === null) return false;\n\t\tif (!YAML_FLOAT_PATTERN.test(data)) return false;\n\t\tif (Number.isFinite(parseFloat(data, 10))) return true;\n\t\treturn YAML_FLOAT_SPECIAL_PATTERN.test(data);\n\t}\n\tfunction constructYamlFloat(data) {\n\t\tlet value = data.toLowerCase();\n\t\tconst sign = value[0] === \"-\" ? -1 : 1;\n\t\tif (\"+-\".indexOf(value[0]) >= 0) value = value.slice(1);\n\t\tif (value === \".inf\") return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\t\telse if (value === \".nan\") return NaN;\n\t\treturn sign * parseFloat(value, 10);\n\t}\n\tvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\tfunction representYamlFloat(object, style) {\n\t\tif (isNaN(object)) switch (style) {\n\t\t\tcase \"lowercase\": return \".nan\";\n\t\t\tcase \"uppercase\": return \".NAN\";\n\t\t\tcase \"camelcase\": return \".NaN\";\n\t\t}\n\t\telse if (Number.POSITIVE_INFINITY === object) switch (style) {\n\t\t\tcase \"lowercase\": return \".inf\";\n\t\t\tcase \"uppercase\": return \".INF\";\n\t\t\tcase \"camelcase\": return \".Inf\";\n\t\t}\n\t\telse if (Number.NEGATIVE_INFINITY === object) switch (style) {\n\t\t\tcase \"lowercase\": return \"-.inf\";\n\t\t\tcase \"uppercase\": return \"-.INF\";\n\t\t\tcase \"camelcase\": return \"-.Inf\";\n\t\t}\n\t\telse if (common.isNegativeZero(object)) return \"-0.0\";\n\t\tconst res = object.toString(10);\n\t\treturn SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace(\"e\", \".e\") : res;\n\t}\n\tfunction isFloat(object) {\n\t\treturn Object.prototype.toString.call(object) === \"[object Number]\" && (object % 1 !== 0 || common.isNegativeZero(object));\n\t}\n\tmodule.exports = new Type(\"tag:yaml.org,2002:float\", {\n\t\tkind: \"scalar\",\n\t\tresolve: resolveYamlFloat,\n\t\tconstruct: constructYamlFloat,\n\t\tpredicate: isFloat,\n\t\trepresent: representYamlFloat,\n\t\tdefaultStyle: \"lowercase\"\n\t});\n}));\n//#endregion\n//#region lib/schema/json.js\nvar require_json = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tmodule.exports = require_failsafe().extend({ implicit: [\n\t\trequire_null(),\n\t\trequire_bool(),\n\t\trequire_int(),\n\t\trequire_float()\n\t] });\n}));\n//#endregion\n//#region lib/schema/core.js\nvar require_core = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tmodule.exports = require_json();\n}));\n//#endregion\n//#region lib/type/timestamp.js\nvar require_timestamp = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar Type = require_type();\n\tvar YAML_DATE_REGEXP = /* @__PURE__ */ new RegExp(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$\");\n\tvar YAML_TIMESTAMP_REGEXP = /* @__PURE__ */ new RegExp(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\\\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\\\.([0-9]*))?(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$\");\n\tfunction resolveYamlTimestamp(data) {\n\t\tif (data === null) return false;\n\t\tif (YAML_DATE_REGEXP.exec(data) !== null) return true;\n\t\tif (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n\t\treturn false;\n\t}\n\tfunction constructYamlTimestamp(data) {\n\t\tlet fraction = 0;\n\t\tlet delta = null;\n\t\tlet match = YAML_DATE_REGEXP.exec(data);\n\t\tif (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\t\tif (match === null) throw new Error(\"Date resolve error\");\n\t\tconst year = +match[1];\n\t\tconst month = +match[2] - 1;\n\t\tconst day = +match[3];\n\t\tif (!match[4]) return new Date(Date.UTC(year, month, day));\n\t\tconst hour = +match[4];\n\t\tconst minute = +match[5];\n\t\tconst second = +match[6];\n\t\tif (match[7]) {\n\t\t\tfraction = match[7].slice(0, 3);\n\t\t\twhile (fraction.length < 3) fraction += \"0\";\n\t\t\tfraction = +fraction;\n\t\t}\n\t\tif (match[9]) {\n\t\t\tconst tzHour = +match[10];\n\t\t\tconst tzMinute = +(match[11] || 0);\n\t\t\tdelta = (tzHour * 60 + tzMinute) * 6e4;\n\t\t\tif (match[9] === \"-\") delta = -delta;\n\t\t}\n\t\tconst date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\t\tif (delta) date.setTime(date.getTime() - delta);\n\t\treturn date;\n\t}\n\tfunction representYamlTimestamp(object) {\n\t\treturn object.toISOString();\n\t}\n\tmodule.exports = new Type(\"tag:yaml.org,2002:timestamp\", {\n\t\tkind: \"scalar\",\n\t\tresolve: resolveYamlTimestamp,\n\t\tconstruct: constructYamlTimestamp,\n\t\tinstanceOf: Date,\n\t\trepresent: representYamlTimestamp\n\t});\n}));\n//#endregion\n//#region lib/type/merge.js\nvar require_merge = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar Type = require_type();\n\tfunction resolveYamlMerge(data) {\n\t\treturn data === \"<<\" || data === null;\n\t}\n\tmodule.exports = new Type(\"tag:yaml.org,2002:merge\", {\n\t\tkind: \"scalar\",\n\t\tresolve: resolveYamlMerge\n\t});\n}));\n//#endregion\n//#region lib/type/binary.js\nvar require_binary = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar Type = require_type();\n\tvar BASE64_MAP = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r\";\n\tfunction resolveYamlBinary(data) {\n\t\tif (data === null) return false;\n\t\tlet bitlen = 0;\n\t\tconst max = data.length;\n\t\tconst map = BASE64_MAP;\n\t\tfor (let idx = 0; idx < max; idx++) {\n\t\t\tconst code = map.indexOf(data.charAt(idx));\n\t\t\tif (code > 64) continue;\n\t\t\tif (code < 0) return false;\n\t\t\tbitlen += 6;\n\t\t}\n\t\treturn bitlen % 8 === 0;\n\t}\n\tfunction constructYamlBinary(data) {\n\t\tconst input = data.replace(/[\\r\\n=]/g, \"\");\n\t\tconst max = input.length;\n\t\tconst map = BASE64_MAP;\n\t\tlet bits = 0;\n\t\tconst result = [];\n\t\tfor (let idx = 0; idx < max; idx++) {\n\t\t\tif (idx % 4 === 0 && idx) {\n\t\t\t\tresult.push(bits >> 16 & 255);\n\t\t\t\tresult.push(bits >> 8 & 255);\n\t\t\t\tresult.push(bits & 255);\n\t\t\t}\n\t\t\tbits = bits << 6 | map.indexOf(input.charAt(idx));\n\t\t}\n\t\tconst tailbits = max % 4 * 6;\n\t\tif (tailbits === 0) {\n\t\t\tresult.push(bits >> 16 & 255);\n\t\t\tresult.push(bits >> 8 & 255);\n\t\t\tresult.push(bits & 255);\n\t\t} else if (tailbits === 18) {\n\t\t\tresult.push(bits >> 10 & 255);\n\t\t\tresult.push(bits >> 2 & 255);\n\t\t} else if (tailbits === 12) result.push(bits >> 4 & 255);\n\t\treturn new Uint8Array(result);\n\t}\n\tfunction representYamlBinary(object) {\n\t\tlet result = \"\";\n\t\tlet bits = 0;\n\t\tconst max = object.length;\n\t\tconst map = BASE64_MAP;\n\t\tfor (let idx = 0; idx < max; idx++) {\n\t\t\tif (idx % 3 === 0 && idx) {\n\t\t\t\tresult += map[bits >> 18 & 63];\n\t\t\t\tresult += map[bits >> 12 & 63];\n\t\t\t\tresult += map[bits >> 6 & 63];\n\t\t\t\tresult += map[bits & 63];\n\t\t\t}\n\t\t\tbits = (bits << 8) + object[idx];\n\t\t}\n\t\tconst tail = max % 3;\n\t\tif (tail === 0) {\n\t\t\tresult += map[bits >> 18 & 63];\n\t\t\tresult += map[bits >> 12 & 63];\n\t\t\tresult += map[bits >> 6 & 63];\n\t\t\tresult += map[bits & 63];\n\t\t} else if (tail === 2) {\n\t\t\tresult += map[bits >> 10 & 63];\n\t\t\tresult += map[bits >> 4 & 63];\n\t\t\tresult += map[bits << 2 & 63];\n\t\t\tresult += map[64];\n\t\t} else if (tail === 1) {\n\t\t\tresult += map[bits >> 2 & 63];\n\t\t\tresult += map[bits << 4 & 63];\n\t\t\tresult += map[64];\n\t\t\tresult += map[64];\n\t\t}\n\t\treturn result;\n\t}\n\tfunction isBinary(obj) {\n\t\treturn Object.prototype.toString.call(obj) === \"[object Uint8Array]\";\n\t}\n\tmodule.exports = new Type(\"tag:yaml.org,2002:binary\", {\n\t\tkind: \"scalar\",\n\t\tresolve: resolveYamlBinary,\n\t\tconstruct: constructYamlBinary,\n\t\tpredicate: isBinary,\n\t\trepresent: representYamlBinary\n\t});\n}));\n//#endregion\n//#region lib/type/omap.js\nvar require_omap = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar Type = require_type();\n\tvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\tvar _toString = Object.prototype.toString;\n\tfunction resolveYamlOmap(data) {\n\t\tif (data === null) return true;\n\t\tconst objectKeys = [];\n\t\tconst object = data;\n\t\tfor (let index = 0, length = object.length; index < length; index += 1) {\n\t\t\tconst pair = object[index];\n\t\t\tlet pairHasKey = false;\n\t\t\tif (_toString.call(pair) !== \"[object Object]\") return false;\n\t\t\tlet pairKey;\n\t\t\tfor (pairKey in pair) if (_hasOwnProperty.call(pair, pairKey)) if (!pairHasKey) pairHasKey = true;\n\t\t\telse return false;\n\t\t\tif (!pairHasKey) return false;\n\t\t\tif (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n\t\t\telse return false;\n\t\t}\n\t\treturn true;\n\t}\n\tfunction constructYamlOmap(data) {\n\t\treturn data !== null ? data : [];\n\t}\n\tmodule.exports = new Type(\"tag:yaml.org,2002:omap\", {\n\t\tkind: \"sequence\",\n\t\tresolve: resolveYamlOmap,\n\t\tconstruct: constructYamlOmap\n\t});\n}));\n//#endregion\n//#region lib/type/pairs.js\nvar require_pairs = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar Type = require_type();\n\tvar _toString = Object.prototype.toString;\n\tfunction resolveYamlPairs(data) {\n\t\tif (data === null) return true;\n\t\tconst object = data;\n\t\tconst result = new Array(object.length);\n\t\tfor (let index = 0, length = object.length; index < length; index += 1) {\n\t\t\tconst pair = object[index];\n\t\t\tif (_toString.call(pair) !== \"[object Object]\") return false;\n\t\t\tconst keys = Object.keys(pair);\n\t\t\tif (keys.length !== 1) return false;\n\t\t\tresult[index] = [keys[0], pair[keys[0]]];\n\t\t}\n\t\treturn true;\n\t}\n\tfunction constructYamlPairs(data) {\n\t\tif (data === null) return [];\n\t\tconst object = data;\n\t\tconst result = new Array(object.length);\n\t\tfor (let index = 0, length = object.length; index < length; index += 1) {\n\t\t\tconst pair = object[index];\n\t\t\tconst keys = Object.keys(pair);\n\t\t\tresult[index] = [keys[0], pair[keys[0]]];\n\t\t}\n\t\treturn result;\n\t}\n\tmodule.exports = new Type(\"tag:yaml.org,2002:pairs\", {\n\t\tkind: \"sequence\",\n\t\tresolve: resolveYamlPairs,\n\t\tconstruct: constructYamlPairs\n\t});\n}));\n//#endregion\n//#region lib/type/set.js\nvar require_set = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar Type = require_type();\n\tvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\tfunction resolveYamlSet(data) {\n\t\tif (data === null) return true;\n\t\tconst object = data;\n\t\tfor (const key in object) if (_hasOwnProperty.call(object, key)) {\n\t\t\tif (object[key] !== null) return false;\n\t\t}\n\t\treturn true;\n\t}\n\tfunction constructYamlSet(data) {\n\t\treturn data !== null ? data : {};\n\t}\n\tmodule.exports = new Type(\"tag:yaml.org,2002:set\", {\n\t\tkind: \"mapping\",\n\t\tresolve: resolveYamlSet,\n\t\tconstruct: constructYamlSet\n\t});\n}));\n//#endregion\n//#region lib/schema/default.js\nvar require_default = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tmodule.exports = require_core().extend({\n\t\timplicit: [require_timestamp(), require_merge()],\n\t\texplicit: [\n\t\t\trequire_binary(),\n\t\t\trequire_omap(),\n\t\t\trequire_pairs(),\n\t\t\trequire_set()\n\t\t]\n\t});\n}));\n//#endregion\n//#region lib/loader.js\nvar require_loader = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar common = require_common();\n\tvar YAMLException = require_exception();\n\tvar makeSnippet = require_snippet();\n\tvar DEFAULT_SCHEMA = require_default();\n\tvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\tvar CONTEXT_FLOW_IN = 1;\n\tvar CONTEXT_FLOW_OUT = 2;\n\tvar CONTEXT_BLOCK_IN = 3;\n\tvar CONTEXT_BLOCK_OUT = 4;\n\tvar CHOMPING_CLIP = 1;\n\tvar CHOMPING_STRIP = 2;\n\tvar CHOMPING_KEEP = 3;\n\tvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n\tvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\n\tvar PATTERN_FLOW_INDICATORS = /[,\\[\\]{}]/;\n\tvar PATTERN_TAG_HANDLE = /^(?:!|!!|![0-9A-Za-z-]+!)$/;\n\tvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]{}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;/?:@&=+$,_.!~*'()\\[\\]])*$/i;\n\tfunction _class(obj) {\n\t\treturn Object.prototype.toString.call(obj);\n\t}\n\tfunction isEol(c) {\n\t\treturn c === 10 || c === 13;\n\t}\n\tfunction isWhiteSpace(c) {\n\t\treturn c === 9 || c === 32;\n\t}\n\tfunction isWsOrEol(c) {\n\t\treturn c === 9 || c === 32 || c === 10 || c === 13;\n\t}\n\tfunction isFlowIndicator(c) {\n\t\treturn c === 44 || c === 91 || c === 93 || c === 123 || c === 125;\n\t}\n\tfunction fromHexCode(c) {\n\t\tif (c >= 48 && c <= 57) return c - 48;\n\t\tconst lc = c | 32;\n\t\tif (lc >= 97 && lc <= 102) return lc - 97 + 10;\n\t\treturn -1;\n\t}\n\tfunction escapedHexLen(c) {\n\t\tif (c === 120) return 2;\n\t\tif (c === 117) return 4;\n\t\tif (c === 85) return 8;\n\t\treturn 0;\n\t}\n\tfunction fromDecimalCode(c) {\n\t\tif (c >= 48 && c <= 57) return c - 48;\n\t\treturn -1;\n\t}\n\tfunction simpleEscapeSequence(c) {\n\t\tswitch (c) {\n\t\t\tcase 48: return \"\\0\";\n\t\t\tcase 97: return \"\\x07\";\n\t\t\tcase 98: return \"\\b\";\n\t\t\tcase 116: return \"\t\";\n\t\t\tcase 9: return \"\t\";\n\t\t\tcase 110: return \"\\n\";\n\t\t\tcase 118: return \"\\v\";\n\t\t\tcase 102: return \"\\f\";\n\t\t\tcase 114: return \"\\r\";\n\t\t\tcase 101: return \"\\x1B\";\n\t\t\tcase 32: return \" \";\n\t\t\tcase 34: return \"\\\"\";\n\t\t\tcase 47: return \"/\";\n\t\t\tcase 92: return \"\\\\\";\n\t\t\tcase 78: return \"
\";\n\t\t\tcase 95: return \"\\xA0\";\n\t\t\tcase 76: return \"\\u2028\";\n\t\t\tcase 80: return \"\\u2029\";\n\t\t\tdefault: return \"\";\n\t\t}\n\t}\n\tfunction charFromCodepoint(c) {\n\t\tif (c <= 65535) return String.fromCharCode(c);\n\t\treturn String.fromCharCode((c - 65536 >> 10) + 55296, (c - 65536 & 1023) + 56320);\n\t}\n\tfunction setProperty(object, key, value) {\n\t\tif (key === \"__proto__\") Object.defineProperty(object, key, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\twritable: true,\n\t\t\tvalue\n\t\t});\n\t\telse object[key] = value;\n\t}\n\tvar simpleEscapeCheck = new Array(256);\n\tvar simpleEscapeMap = new Array(256);\n\tfor (let i = 0; i < 256; i++) {\n\t\tsimpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n\t\tsimpleEscapeMap[i] = simpleEscapeSequence(i);\n\t}\n\tfunction State(input, options) {\n\t\tthis.input = input;\n\t\tthis.filename = options[\"filename\"] || null;\n\t\tthis.schema = options[\"schema\"] || DEFAULT_SCHEMA;\n\t\tthis.onWarning = options[\"onWarning\"] || null;\n\t\tthis.legacy = options[\"legacy\"] || false;\n\t\tthis.json = options[\"json\"] || false;\n\t\tthis.listener = options[\"listener\"] || null;\n\t\tthis.maxDepth = typeof options[\"maxDepth\"] === \"number\" ? options[\"maxDepth\"] : 100;\n\t\tthis.maxMergeSeqLength = typeof options[\"maxMergeSeqLength\"] === \"number\" ? options[\"maxMergeSeqLength\"] : 20;\n\t\tthis.implicitTypes = this.schema.compiledImplicit;\n\t\tthis.typeMap = this.schema.compiledTypeMap;\n\t\tthis.length = input.length;\n\t\tthis.position = 0;\n\t\tthis.line = 0;\n\t\tthis.lineStart = 0;\n\t\tthis.lineIndent = 0;\n\t\tthis.depth = 0;\n\t\tthis.firstTabInLine = -1;\n\t\tthis.documents = [];\n\t\tthis.anchorMapTransactions = [];\n\t}\n\tfunction generateError(state, message) {\n\t\tconst mark = {\n\t\t\tname: state.filename,\n\t\t\tbuffer: state.input.slice(0, -1),\n\t\t\tposition: state.position,\n\t\t\tline: state.line,\n\t\t\tcolumn: state.position - state.lineStart\n\t\t};\n\t\tmark.snippet = makeSnippet(mark);\n\t\treturn new YAMLException(message, mark);\n\t}\n\tfunction throwError(state, message) {\n\t\tthrow generateError(state, message);\n\t}\n\tfunction throwWarning(state, message) {\n\t\tif (state.onWarning) state.onWarning.call(null, generateError(state, message));\n\t}\n\tfunction storeAnchor(state, name, value) {\n\t\tconst transactions = state.anchorMapTransactions;\n\t\tif (transactions.length !== 0) {\n\t\t\tconst transaction = transactions[transactions.length - 1];\n\t\t\tif (!_hasOwnProperty.call(transaction, name)) transaction[name] = {\n\t\t\t\texisted: _hasOwnProperty.call(state.anchorMap, name),\n\t\t\t\tvalue: state.anchorMap[name]\n\t\t\t};\n\t\t}\n\t\tstate.anchorMap[name] = value;\n\t}\n\tfunction beginAnchorTransaction(state) {\n\t\tstate.anchorMapTransactions.push(Object.create(null));\n\t}\n\tfunction commitAnchorTransaction(state) {\n\t\tconst transaction = state.anchorMapTransactions.pop();\n\t\tconst transactions = state.anchorMapTransactions;\n\t\tif (transactions.length === 0) return;\n\t\tconst parent = transactions[transactions.length - 1];\n\t\tconst names = Object.keys(transaction);\n\t\tfor (let index = 0, length = names.length; index < length; index += 1) {\n\t\t\tconst name = names[index];\n\t\t\tif (!_hasOwnProperty.call(parent, name)) parent[name] = transaction[name];\n\t\t}\n\t}\n\tfunction rollbackAnchorTransaction(state) {\n\t\tconst transaction = state.anchorMapTransactions.pop();\n\t\tconst names = Object.keys(transaction);\n\t\tfor (let index = names.length - 1; index >= 0; index -= 1) {\n\t\t\tconst entry = transaction[names[index]];\n\t\t\tif (entry.existed) state.anchorMap[names[index]] = entry.value;\n\t\t\telse delete state.anchorMap[names[index]];\n\t\t}\n\t}\n\tfunction snapshotState(state) {\n\t\treturn {\n\t\t\tposition: state.position,\n\t\t\tline: state.line,\n\t\t\tlineStart: state.lineStart,\n\t\t\tlineIndent: state.lineIndent,\n\t\t\tfirstTabInLine: state.firstTabInLine,\n\t\t\ttag: state.tag,\n\t\t\tanchor: state.anchor,\n\t\t\tkind: state.kind,\n\t\t\tresult: state.result\n\t\t};\n\t}\n\tfunction restoreState(state, snapshot) {\n\t\tstate.position = snapshot.position;\n\t\tstate.line = snapshot.line;\n\t\tstate.lineStart = snapshot.lineStart;\n\t\tstate.lineIndent = snapshot.lineIndent;\n\t\tstate.firstTabInLine = snapshot.firstTabInLine;\n\t\tstate.tag = snapshot.tag;\n\t\tstate.anchor = snapshot.anchor;\n\t\tstate.kind = snapshot.kind;\n\t\tstate.result = snapshot.result;\n\t}\n\tvar directiveHandlers = {\n\t\tYAML: function handleYamlDirective(state, name, args) {\n\t\t\tif (state.version !== null) throwError(state, \"duplication of %YAML directive\");\n\t\t\tif (args.length !== 1) throwError(state, \"YAML directive accepts exactly one argument\");\n\t\t\tconst match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\t\t\tif (match === null) throwError(state, \"ill-formed argument of the YAML directive\");\n\t\t\tconst major = parseInt(match[1], 10);\n\t\t\tconst minor = parseInt(match[2], 10);\n\t\t\tif (major !== 1) throwError(state, \"unacceptable YAML version of the document\");\n\t\t\tstate.version = args[0];\n\t\t\tstate.checkLineBreaks = minor < 2;\n\t\t\tif (minor !== 1 && minor !== 2) throwWarning(state, \"unsupported YAML version of the document\");\n\t\t},\n\t\tTAG: function handleTagDirective(state, name, args) {\n\t\t\tlet prefix;\n\t\t\tif (args.length !== 2) throwError(state, \"TAG directive accepts exactly two arguments\");\n\t\t\tconst handle = args[0];\n\t\t\tprefix = args[1];\n\t\t\tif (!PATTERN_TAG_HANDLE.test(handle)) throwError(state, \"ill-formed tag handle (first argument) of the TAG directive\");\n\t\t\tif (_hasOwnProperty.call(state.tagMap, handle)) throwError(state, \"there is a previously declared suffix for \\\"\" + handle + \"\\\" tag handle\");\n\t\t\tif (!PATTERN_TAG_URI.test(prefix)) throwError(state, \"ill-formed tag prefix (second argument) of the TAG directive\");\n\t\t\ttry {\n\t\t\t\tprefix = decodeURIComponent(prefix);\n\t\t\t} catch (err) {\n\t\t\t\tthrowError(state, \"tag prefix is malformed: \" + prefix);\n\t\t\t}\n\t\t\tstate.tagMap[handle] = prefix;\n\t\t}\n\t};\n\tfunction captureSegment(state, start, end, checkJson) {\n\t\tif (start < end) {\n\t\t\tconst _result = state.input.slice(start, end);\n\t\t\tif (checkJson) for (let _position = 0, _length = _result.length; _position < _length; _position += 1) {\n\t\t\t\tconst _character = _result.charCodeAt(_position);\n\t\t\t\tif (!(_character === 9 || _character >= 32 && _character <= 1114111)) throwError(state, \"expected valid JSON character\");\n\t\t\t}\n\t\t\telse if (PATTERN_NON_PRINTABLE.test(_result)) throwError(state, \"the stream contains non-printable characters\");\n\t\t\tstate.result += _result;\n\t\t}\n\t}\n\tfunction mergeMappings(state, destination, source, overridableKeys) {\n\t\tif (!common.isObject(source)) throwError(state, \"cannot merge mappings; the provided source object is unacceptable\");\n\t\tconst sourceKeys = Object.keys(source);\n\t\tfor (let index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n\t\t\tconst key = sourceKeys[index];\n\t\t\tif (!_hasOwnProperty.call(destination, key)) {\n\t\t\t\tsetProperty(destination, key, source[key]);\n\t\t\t\toverridableKeys[key] = true;\n\t\t\t}\n\t\t}\n\t}\n\tfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startLineStart, startPos) {\n\t\tif (Array.isArray(keyNode)) {\n\t\t\tkeyNode = Array.prototype.slice.call(keyNode);\n\t\t\tfor (let index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n\t\t\t\tif (Array.isArray(keyNode[index])) throwError(state, \"nested arrays are not supported inside keys\");\n\t\t\t\tif (typeof keyNode === \"object\" && _class(keyNode[index]) === \"[object Object]\") keyNode[index] = \"[object Object]\";\n\t\t\t}\n\t\t}\n\t\tif (typeof keyNode === \"object\" && _class(keyNode) === \"[object Object]\") keyNode = \"[object Object]\";\n\t\tkeyNode = String(keyNode);\n\t\tif (_result === null) _result = {};\n\t\tif (keyTag === \"tag:yaml.org,2002:merge\") if (Array.isArray(valueNode)) {\n\t\t\tif (valueNode.length > state.maxMergeSeqLength) throwError(state, \"merge sequence length exceeded maxMergeSeqLength (\" + state.maxMergeSeqLength + \")\");\n\t\t\tconst seen = /* @__PURE__ */ new Set();\n\t\t\tfor (let index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n\t\t\t\tconst src = valueNode[index];\n\t\t\t\tif (seen.has(src)) continue;\n\t\t\t\tseen.add(src);\n\t\t\t\tmergeMappings(state, _result, src, overridableKeys);\n\t\t\t}\n\t\t} else mergeMappings(state, _result, valueNode, overridableKeys);\n\t\telse {\n\t\t\tif (!state.json && !_hasOwnProperty.call(overridableKeys, keyNode) && _hasOwnProperty.call(_result, keyNode)) {\n\t\t\t\tstate.line = startLine || state.line;\n\t\t\t\tstate.lineStart = startLineStart || state.lineStart;\n\t\t\t\tstate.position = startPos || state.position;\n\t\t\t\tthrowError(state, \"duplicated mapping key\");\n\t\t\t}\n\t\t\tsetProperty(_result, keyNode, valueNode);\n\t\t\tdelete overridableKeys[keyNode];\n\t\t}\n\t\treturn _result;\n\t}\n\tfunction readLineBreak(state) {\n\t\tconst ch = state.input.charCodeAt(state.position);\n\t\tif (ch === 10) state.position++;\n\t\telse if (ch === 13) {\n\t\t\tstate.position++;\n\t\t\tif (state.input.charCodeAt(state.position) === 10) state.position++;\n\t\t} else throwError(state, \"a line break is expected\");\n\t\tstate.line += 1;\n\t\tstate.lineStart = state.position;\n\t\tstate.firstTabInLine = -1;\n\t}\n\tfunction skipSeparationSpace(state, allowComments, checkIndent) {\n\t\tlet lineBreaks = 0;\n\t\tlet ch = state.input.charCodeAt(state.position);\n\t\twhile (ch !== 0) {\n\t\t\twhile (isWhiteSpace(ch)) {\n\t\t\t\tif (ch === 9 && state.firstTabInLine === -1) state.firstTabInLine = state.position;\n\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\t}\n\t\t\tif (allowComments && ch === 35) do\n\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\twhile (ch !== 10 && ch !== 13 && ch !== 0);\n\t\t\tif (isEol(ch)) {\n\t\t\t\treadLineBreak(state);\n\t\t\t\tch = state.input.charCodeAt(state.position);\n\t\t\t\tlineBreaks++;\n\t\t\t\tstate.lineIndent = 0;\n\t\t\t\twhile (ch === 32) {\n\t\t\t\t\tstate.lineIndent++;\n\t\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\t\t}\n\t\t\t} else break;\n\t\t}\n\t\tif (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) throwWarning(state, \"deficient indentation\");\n\t\treturn lineBreaks;\n\t}\n\tfunction testDocumentSeparator(state) {\n\t\tlet _position = state.position;\n\t\tlet ch = state.input.charCodeAt(_position);\n\t\tif ((ch === 45 || ch === 46) && ch === state.input.charCodeAt(_position + 1) && ch === state.input.charCodeAt(_position + 2)) {\n\t\t\t_position += 3;\n\t\t\tch = state.input.charCodeAt(_position);\n\t\t\tif (ch === 0 || isWsOrEol(ch)) return true;\n\t\t}\n\t\treturn false;\n\t}\n\tfunction writeFoldedLines(state, count) {\n\t\tif (count === 1) state.result += \" \";\n\t\telse if (count > 1) state.result += common.repeat(\"\\n\", count - 1);\n\t}\n\tfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n\t\tlet captureStart;\n\t\tlet captureEnd;\n\t\tlet hasPendingContent;\n\t\tlet _line;\n\t\tlet _lineStart;\n\t\tlet _lineIndent;\n\t\tconst _kind = state.kind;\n\t\tconst _result = state.result;\n\t\tlet ch = state.input.charCodeAt(state.position);\n\t\tif (isWsOrEol(ch) || isFlowIndicator(ch) || ch === 35 || ch === 38 || ch === 42 || ch === 33 || ch === 124 || ch === 62 || ch === 39 || ch === 34 || ch === 37 || ch === 64 || ch === 96) return false;\n\t\tif (ch === 63 || ch === 45) {\n\t\t\tconst following = state.input.charCodeAt(state.position + 1);\n\t\t\tif (isWsOrEol(following) || withinFlowCollection && isFlowIndicator(following)) return false;\n\t\t}\n\t\tstate.kind = \"scalar\";\n\t\tstate.result = \"\";\n\t\tcaptureStart = captureEnd = state.position;\n\t\thasPendingContent = false;\n\t\twhile (ch !== 0) {\n\t\t\tif (ch === 58) {\n\t\t\t\tconst following = state.input.charCodeAt(state.position + 1);\n\t\t\t\tif (isWsOrEol(following) || withinFlowCollection && isFlowIndicator(following)) break;\n\t\t\t} else if (ch === 35) {\n\t\t\t\tif (isWsOrEol(state.input.charCodeAt(state.position - 1))) break;\n\t\t\t} else if (state.position === state.lineStart && testDocumentSeparator(state) || withinFlowCollection && isFlowIndicator(ch)) break;\n\t\t\telse if (isEol(ch)) {\n\t\t\t\t_line = state.line;\n\t\t\t\t_lineStart = state.lineStart;\n\t\t\t\t_lineIndent = state.lineIndent;\n\t\t\t\tskipSeparationSpace(state, false, -1);\n\t\t\t\tif (state.lineIndent >= nodeIndent) {\n\t\t\t\t\thasPendingContent = true;\n\t\t\t\t\tch = state.input.charCodeAt(state.position);\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tstate.position = captureEnd;\n\t\t\t\t\tstate.line = _line;\n\t\t\t\t\tstate.lineStart = _lineStart;\n\t\t\t\t\tstate.lineIndent = _lineIndent;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (hasPendingContent) {\n\t\t\t\tcaptureSegment(state, captureStart, captureEnd, false);\n\t\t\t\twriteFoldedLines(state, state.line - _line);\n\t\t\t\tcaptureStart = captureEnd = state.position;\n\t\t\t\thasPendingContent = false;\n\t\t\t}\n\t\t\tif (!isWhiteSpace(ch)) captureEnd = state.position + 1;\n\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t}\n\t\tcaptureSegment(state, captureStart, captureEnd, false);\n\t\tif (state.result) return true;\n\t\tstate.kind = _kind;\n\t\tstate.result = _result;\n\t\treturn false;\n\t}\n\tfunction readSingleQuotedScalar(state, nodeIndent) {\n\t\tlet captureStart;\n\t\tlet captureEnd;\n\t\tlet ch = state.input.charCodeAt(state.position);\n\t\tif (ch !== 39) return false;\n\t\tstate.kind = \"scalar\";\n\t\tstate.result = \"\";\n\t\tstate.position++;\n\t\tcaptureStart = captureEnd = state.position;\n\t\twhile ((ch = state.input.charCodeAt(state.position)) !== 0) if (ch === 39) {\n\t\t\tcaptureSegment(state, captureStart, state.position, true);\n\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\tif (ch === 39) {\n\t\t\t\tcaptureStart = state.position;\n\t\t\t\tstate.position++;\n\t\t\t\tcaptureEnd = state.position;\n\t\t\t} else return true;\n\t\t} else if (isEol(ch)) {\n\t\t\tcaptureSegment(state, captureStart, captureEnd, true);\n\t\t\twriteFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n\t\t\tcaptureStart = captureEnd = state.position;\n\t\t} else if (state.position === state.lineStart && testDocumentSeparator(state)) throwError(state, \"unexpected end of the document within a single quoted scalar\");\n\t\telse {\n\t\t\tstate.position++;\n\t\t\tif (!isWhiteSpace(ch)) captureEnd = state.position;\n\t\t}\n\t\tthrowError(state, \"unexpected end of the stream within a single quoted scalar\");\n\t}\n\tfunction readDoubleQuotedScalar(state, nodeIndent) {\n\t\tlet captureStart;\n\t\tlet captureEnd;\n\t\tlet tmp;\n\t\tlet ch = state.input.charCodeAt(state.position);\n\t\tif (ch !== 34) return false;\n\t\tstate.kind = \"scalar\";\n\t\tstate.result = \"\";\n\t\tstate.position++;\n\t\tcaptureStart = captureEnd = state.position;\n\t\twhile ((ch = state.input.charCodeAt(state.position)) !== 0) if (ch === 34) {\n\t\t\tcaptureSegment(state, captureStart, state.position, true);\n\t\t\tstate.position++;\n\t\t\treturn true;\n\t\t} else if (ch === 92) {\n\t\t\tcaptureSegment(state, captureStart, state.position, true);\n\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\tif (isEol(ch)) skipSeparationSpace(state, false, nodeIndent);\n\t\t\telse if (ch < 256 && simpleEscapeCheck[ch]) {\n\t\t\t\tstate.result += simpleEscapeMap[ch];\n\t\t\t\tstate.position++;\n\t\t\t} else if ((tmp = escapedHexLen(ch)) > 0) {\n\t\t\t\tlet hexLength = tmp;\n\t\t\t\tlet hexResult = 0;\n\t\t\t\tfor (; hexLength > 0; hexLength--) {\n\t\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\t\t\tif ((tmp = fromHexCode(ch)) >= 0) hexResult = (hexResult << 4) + tmp;\n\t\t\t\t\telse throwError(state, \"expected hexadecimal character\");\n\t\t\t\t}\n\t\t\t\tstate.result += charFromCodepoint(hexResult);\n\t\t\t\tstate.position++;\n\t\t\t} else throwError(state, \"unknown escape sequence\");\n\t\t\tcaptureStart = captureEnd = state.position;\n\t\t} else if (isEol(ch)) {\n\t\t\tcaptureSegment(state, captureStart, captureEnd, true);\n\t\t\twriteFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n\t\t\tcaptureStart = captureEnd = state.position;\n\t\t} else if (state.position === state.lineStart && testDocumentSeparator(state)) throwError(state, \"unexpected end of the document within a double quoted scalar\");\n\t\telse {\n\t\t\tstate.position++;\n\t\t\tif (!isWhiteSpace(ch)) captureEnd = state.position;\n\t\t}\n\t\tthrowError(state, \"unexpected end of the stream within a double quoted scalar\");\n\t}\n\tfunction readFlowCollection(state, nodeIndent) {\n\t\tlet readNext = true;\n\t\tlet _line;\n\t\tlet _lineStart;\n\t\tlet _pos;\n\t\tconst _tag = state.tag;\n\t\tlet _result;\n\t\tconst _anchor = state.anchor;\n\t\tlet terminator;\n\t\tlet isPair;\n\t\tlet isExplicitPair;\n\t\tlet isMapping;\n\t\tconst overridableKeys = Object.create(null);\n\t\tlet keyNode;\n\t\tlet keyTag;\n\t\tlet valueNode;\n\t\tlet ch = state.input.charCodeAt(state.position);\n\t\tif (ch === 91) {\n\t\t\tterminator = 93;\n\t\t\tisMapping = false;\n\t\t\t_result = [];\n\t\t} else if (ch === 123) {\n\t\t\tterminator = 125;\n\t\t\tisMapping = true;\n\t\t\t_result = {};\n\t\t} else return false;\n\t\tif (state.anchor !== null) storeAnchor(state, state.anchor, _result);\n\t\tch = state.input.charCodeAt(++state.position);\n\t\twhile (ch !== 0) {\n\t\t\tskipSeparationSpace(state, true, nodeIndent);\n\t\t\tch = state.input.charCodeAt(state.position);\n\t\t\tif (ch === terminator) {\n\t\t\t\tstate.position++;\n\t\t\t\tstate.tag = _tag;\n\t\t\t\tstate.anchor = _anchor;\n\t\t\t\tstate.kind = isMapping ? \"mapping\" : \"sequence\";\n\t\t\t\tstate.result = _result;\n\t\t\t\treturn true;\n\t\t\t} else if (!readNext) throwError(state, \"missed comma between flow collection entries\");\n\t\t\telse if (ch === 44) throwError(state, \"expected the node content, but found ','\");\n\t\t\tkeyTag = keyNode = valueNode = null;\n\t\t\tisPair = isExplicitPair = false;\n\t\t\tif (ch === 63) {\n\t\t\t\tif (isWsOrEol(state.input.charCodeAt(state.position + 1))) {\n\t\t\t\t\tisPair = isExplicitPair = true;\n\t\t\t\t\tstate.position++;\n\t\t\t\t\tskipSeparationSpace(state, true, nodeIndent);\n\t\t\t\t}\n\t\t\t}\n\t\t\t_line = state.line;\n\t\t\t_lineStart = state.lineStart;\n\t\t\t_pos = state.position;\n\t\t\tcomposeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n\t\t\tkeyTag = state.tag;\n\t\t\tkeyNode = state.result;\n\t\t\tskipSeparationSpace(state, true, nodeIndent);\n\t\t\tch = state.input.charCodeAt(state.position);\n\t\t\tif ((isExplicitPair || state.line === _line) && ch === 58) {\n\t\t\t\tisPair = true;\n\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\t\tskipSeparationSpace(state, true, nodeIndent);\n\t\t\t\tcomposeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n\t\t\t\tvalueNode = state.result;\n\t\t\t}\n\t\t\tif (isMapping) storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);\n\t\t\telse if (isPair) _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));\n\t\t\telse _result.push(keyNode);\n\t\t\tskipSeparationSpace(state, true, nodeIndent);\n\t\t\tch = state.input.charCodeAt(state.position);\n\t\t\tif (ch === 44) {\n\t\t\t\treadNext = true;\n\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\t} else readNext = false;\n\t\t}\n\t\tthrowError(state, \"unexpected end of the stream within a flow collection\");\n\t}\n\tfunction readBlockScalar(state, nodeIndent) {\n\t\tlet folding;\n\t\tlet chomping = CHOMPING_CLIP;\n\t\tlet didReadContent = false;\n\t\tlet detectedIndent = false;\n\t\tlet textIndent = nodeIndent;\n\t\tlet emptyLines = 0;\n\t\tlet atMoreIndented = false;\n\t\tlet tmp;\n\t\tlet ch = state.input.charCodeAt(state.position);\n\t\tif (ch === 124) folding = false;\n\t\telse if (ch === 62) folding = true;\n\t\telse return false;\n\t\tstate.kind = \"scalar\";\n\t\tstate.result = \"\";\n\t\twhile (ch !== 0) {\n\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\tif (ch === 43 || ch === 45) if (CHOMPING_CLIP === chomping) chomping = ch === 43 ? CHOMPING_KEEP : CHOMPING_STRIP;\n\t\t\telse throwError(state, \"repeat of a chomping mode identifier\");\n\t\t\telse if ((tmp = fromDecimalCode(ch)) >= 0) if (tmp === 0) throwError(state, \"bad explicit indentation width of a block scalar; it cannot be less than one\");\n\t\t\telse if (!detectedIndent) {\n\t\t\t\ttextIndent = nodeIndent + tmp - 1;\n\t\t\t\tdetectedIndent = true;\n\t\t\t} else throwError(state, \"repeat of an indentation width identifier\");\n\t\t\telse break;\n\t\t}\n\t\tif (isWhiteSpace(ch)) {\n\t\t\tdo\n\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\twhile (isWhiteSpace(ch));\n\t\t\tif (ch === 35) do\n\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\twhile (!isEol(ch) && ch !== 0);\n\t\t}\n\t\twhile (ch !== 0) {\n\t\t\treadLineBreak(state);\n\t\t\tstate.lineIndent = 0;\n\t\t\tch = state.input.charCodeAt(state.position);\n\t\t\twhile ((!detectedIndent || state.lineIndent < textIndent) && ch === 32) {\n\t\t\t\tstate.lineIndent++;\n\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\t}\n\t\t\tif (!detectedIndent && state.lineIndent > textIndent) textIndent = state.lineIndent;\n\t\t\tif (isEol(ch)) {\n\t\t\t\temptyLines++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!detectedIndent && textIndent === 0) throwError(state, \"missing indentation for block scalar\");\n\t\t\tif (state.lineIndent < textIndent) {\n\t\t\t\tif (chomping === CHOMPING_KEEP) state.result += common.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n\t\t\t\telse if (chomping === CHOMPING_CLIP) {\n\t\t\t\t\tif (didReadContent) state.result += \"\\n\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (folding) if (isWhiteSpace(ch)) {\n\t\t\t\tatMoreIndented = true;\n\t\t\t\tstate.result += common.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n\t\t\t} else if (atMoreIndented) {\n\t\t\t\tatMoreIndented = false;\n\t\t\t\tstate.result += common.repeat(\"\\n\", emptyLines + 1);\n\t\t\t} else if (emptyLines === 0) {\n\t\t\t\tif (didReadContent) state.result += \" \";\n\t\t\t} else state.result += common.repeat(\"\\n\", emptyLines);\n\t\t\telse state.result += common.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n\t\t\tdidReadContent = true;\n\t\t\tdetectedIndent = true;\n\t\t\temptyLines = 0;\n\t\t\tconst captureStart = state.position;\n\t\t\twhile (!isEol(ch) && ch !== 0) ch = state.input.charCodeAt(++state.position);\n\t\t\tcaptureSegment(state, captureStart, state.position, false);\n\t\t}\n\t\treturn true;\n\t}\n\tfunction readBlockSequence(state, nodeIndent) {\n\t\tconst _tag = state.tag;\n\t\tconst _anchor = state.anchor;\n\t\tconst _result = [];\n\t\tlet detected = false;\n\t\tif (state.firstTabInLine !== -1) return false;\n\t\tif (state.anchor !== null) storeAnchor(state, state.anchor, _result);\n\t\tlet ch = state.input.charCodeAt(state.position);\n\t\twhile (ch !== 0) {\n\t\t\tif (state.firstTabInLine !== -1) {\n\t\t\t\tstate.position = state.firstTabInLine;\n\t\t\t\tthrowError(state, \"tab characters must not be used in indentation\");\n\t\t\t}\n\t\t\tif (ch !== 45) break;\n\t\t\tif (!isWsOrEol(state.input.charCodeAt(state.position + 1))) break;\n\t\t\tdetected = true;\n\t\t\tstate.position++;\n\t\t\tif (skipSeparationSpace(state, true, -1)) {\n\t\t\t\tif (state.lineIndent <= nodeIndent) {\n\t\t\t\t\t_result.push(null);\n\t\t\t\t\tch = state.input.charCodeAt(state.position);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst _line = state.line;\n\t\t\tcomposeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n\t\t\t_result.push(state.result);\n\t\t\tskipSeparationSpace(state, true, -1);\n\t\t\tch = state.input.charCodeAt(state.position);\n\t\t\tif ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) throwError(state, \"bad indentation of a sequence entry\");\n\t\t\telse if (state.lineIndent < nodeIndent) break;\n\t\t}\n\t\tif (detected) {\n\t\t\tstate.tag = _tag;\n\t\t\tstate.anchor = _anchor;\n\t\t\tstate.kind = \"sequence\";\n\t\t\tstate.result = _result;\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tfunction readBlockMapping(state, nodeIndent, flowIndent) {\n\t\tlet allowCompact;\n\t\tlet _keyLine;\n\t\tlet _keyLineStart;\n\t\tlet _keyPos;\n\t\tconst _tag = state.tag;\n\t\tconst _anchor = state.anchor;\n\t\tconst _result = {};\n\t\tconst overridableKeys = Object.create(null);\n\t\tlet keyTag = null;\n\t\tlet keyNode = null;\n\t\tlet valueNode = null;\n\t\tlet atExplicitKey = false;\n\t\tlet detected = false;\n\t\tif (state.firstTabInLine !== -1) return false;\n\t\tif (state.anchor !== null) storeAnchor(state, state.anchor, _result);\n\t\tlet ch = state.input.charCodeAt(state.position);\n\t\twhile (ch !== 0) {\n\t\t\tif (!atExplicitKey && state.firstTabInLine !== -1) {\n\t\t\t\tstate.position = state.firstTabInLine;\n\t\t\t\tthrowError(state, \"tab characters must not be used in indentation\");\n\t\t\t}\n\t\t\tconst following = state.input.charCodeAt(state.position + 1);\n\t\t\tconst _line = state.line;\n\t\t\tif ((ch === 63 || ch === 58) && isWsOrEol(following)) {\n\t\t\t\tif (ch === 63) {\n\t\t\t\t\tif (atExplicitKey) {\n\t\t\t\t\t\tstoreMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n\t\t\t\t\t\tkeyTag = keyNode = valueNode = null;\n\t\t\t\t\t}\n\t\t\t\t\tdetected = true;\n\t\t\t\t\tatExplicitKey = true;\n\t\t\t\t\tallowCompact = true;\n\t\t\t\t} else if (atExplicitKey) {\n\t\t\t\t\tatExplicitKey = false;\n\t\t\t\t\tallowCompact = true;\n\t\t\t\t} else throwError(state, \"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line\");\n\t\t\t\tstate.position += 1;\n\t\t\t\tch = following;\n\t\t\t} else {\n\t\t\t\t_keyLine = state.line;\n\t\t\t\t_keyLineStart = state.lineStart;\n\t\t\t\t_keyPos = state.position;\n\t\t\t\tif (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) break;\n\t\t\t\tif (state.line === _line) {\n\t\t\t\t\tch = state.input.charCodeAt(state.position);\n\t\t\t\t\twhile (isWhiteSpace(ch)) ch = state.input.charCodeAt(++state.position);\n\t\t\t\t\tif (ch === 58) {\n\t\t\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\t\t\t\tif (!isWsOrEol(ch)) throwError(state, \"a whitespace character is expected after the key-value separator within a block mapping\");\n\t\t\t\t\t\tif (atExplicitKey) {\n\t\t\t\t\t\t\tstoreMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n\t\t\t\t\t\t\tkeyTag = keyNode = valueNode = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdetected = true;\n\t\t\t\t\t\tatExplicitKey = false;\n\t\t\t\t\t\tallowCompact = false;\n\t\t\t\t\t\tkeyTag = state.tag;\n\t\t\t\t\t\tkeyNode = state.result;\n\t\t\t\t\t} else if (detected) throwError(state, \"can not read an implicit mapping pair; a colon is missed\");\n\t\t\t\t\telse {\n\t\t\t\t\t\tstate.tag = _tag;\n\t\t\t\t\t\tstate.anchor = _anchor;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t} else if (detected) throwError(state, \"can not read a block mapping entry; a multiline key may not be an implicit key\");\n\t\t\t\telse {\n\t\t\t\t\tstate.tag = _tag;\n\t\t\t\t\tstate.anchor = _anchor;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (state.line === _line || state.lineIndent > nodeIndent) {\n\t\t\t\tif (atExplicitKey) {\n\t\t\t\t\t_keyLine = state.line;\n\t\t\t\t\t_keyLineStart = state.lineStart;\n\t\t\t\t\t_keyPos = state.position;\n\t\t\t\t}\n\t\t\t\tif (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) if (atExplicitKey) keyNode = state.result;\n\t\t\t\telse valueNode = state.result;\n\t\t\t\tif (!atExplicitKey) {\n\t\t\t\t\tstoreMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);\n\t\t\t\t\tkeyTag = keyNode = valueNode = null;\n\t\t\t\t}\n\t\t\t\tskipSeparationSpace(state, true, -1);\n\t\t\t\tch = state.input.charCodeAt(state.position);\n\t\t\t}\n\t\t\tif ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) throwError(state, \"bad indentation of a mapping entry\");\n\t\t\telse if (state.lineIndent < nodeIndent) break;\n\t\t}\n\t\tif (atExplicitKey) storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n\t\tif (detected) {\n\t\t\tstate.tag = _tag;\n\t\t\tstate.anchor = _anchor;\n\t\t\tstate.kind = \"mapping\";\n\t\t\tstate.result = _result;\n\t\t}\n\t\treturn detected;\n\t}\n\tfunction readTagProperty(state) {\n\t\tlet isVerbatim = false;\n\t\tlet isNamed = false;\n\t\tlet tagHandle;\n\t\tlet tagName;\n\t\tlet ch = state.input.charCodeAt(state.position);\n\t\tif (ch !== 33) return false;\n\t\tif (state.tag !== null) throwError(state, \"duplication of a tag property\");\n\t\tch = state.input.charCodeAt(++state.position);\n\t\tif (ch === 60) {\n\t\t\tisVerbatim = true;\n\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t} else if (ch === 33) {\n\t\t\tisNamed = true;\n\t\t\ttagHandle = \"!!\";\n\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t} else tagHandle = \"!\";\n\t\tlet _position = state.position;\n\t\tif (isVerbatim) {\n\t\t\tdo\n\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\twhile (ch !== 0 && ch !== 62);\n\t\t\tif (state.position < state.length) {\n\t\t\t\ttagName = state.input.slice(_position, state.position);\n\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\t} else throwError(state, \"unexpected end of the stream within a verbatim tag\");\n\t\t} else {\n\t\t\twhile (ch !== 0 && !isWsOrEol(ch)) {\n\t\t\t\tif (ch === 33) if (!isNamed) {\n\t\t\t\t\ttagHandle = state.input.slice(_position - 1, state.position + 1);\n\t\t\t\t\tif (!PATTERN_TAG_HANDLE.test(tagHandle)) throwError(state, \"named tag handle cannot contain such characters\");\n\t\t\t\t\tisNamed = true;\n\t\t\t\t\t_position = state.position + 1;\n\t\t\t\t} else throwError(state, \"tag suffix cannot contain exclamation marks\");\n\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\t}\n\t\t\ttagName = state.input.slice(_position, state.position);\n\t\t\tif (PATTERN_FLOW_INDICATORS.test(tagName)) throwError(state, \"tag suffix cannot contain flow indicator characters\");\n\t\t}\n\t\tif (tagName && !PATTERN_TAG_URI.test(tagName)) throwError(state, \"tag name cannot contain such characters: \" + tagName);\n\t\ttry {\n\t\t\ttagName = decodeURIComponent(tagName);\n\t\t} catch (err) {\n\t\t\tthrowError(state, \"tag name is malformed: \" + tagName);\n\t\t}\n\t\tif (isVerbatim) state.tag = tagName;\n\t\telse if (_hasOwnProperty.call(state.tagMap, tagHandle)) state.tag = state.tagMap[tagHandle] + tagName;\n\t\telse if (tagHandle === \"!\") state.tag = \"!\" + tagName;\n\t\telse if (tagHandle === \"!!\") state.tag = \"tag:yaml.org,2002:\" + tagName;\n\t\telse throwError(state, \"undeclared tag handle \\\"\" + tagHandle + \"\\\"\");\n\t\treturn true;\n\t}\n\tfunction readAnchorProperty(state) {\n\t\tlet ch = state.input.charCodeAt(state.position);\n\t\tif (ch !== 38) return false;\n\t\tif (state.anchor !== null) throwError(state, \"duplication of an anchor property\");\n\t\tch = state.input.charCodeAt(++state.position);\n\t\tconst _position = state.position;\n\t\twhile (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) ch = state.input.charCodeAt(++state.position);\n\t\tif (state.position === _position) throwError(state, \"name of an anchor node must contain at least one character\");\n\t\tstate.anchor = state.input.slice(_position, state.position);\n\t\treturn true;\n\t}\n\tfunction readAlias(state) {\n\t\tlet ch = state.input.charCodeAt(state.position);\n\t\tif (ch !== 42) return false;\n\t\tch = state.input.charCodeAt(++state.position);\n\t\tconst _position = state.position;\n\t\twhile (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) ch = state.input.charCodeAt(++state.position);\n\t\tif (state.position === _position) throwError(state, \"name of an alias node must contain at least one character\");\n\t\tconst alias = state.input.slice(_position, state.position);\n\t\tif (!_hasOwnProperty.call(state.anchorMap, alias)) throwError(state, \"unidentified alias \\\"\" + alias + \"\\\"\");\n\t\tstate.result = state.anchorMap[alias];\n\t\tskipSeparationSpace(state, true, -1);\n\t\treturn true;\n\t}\n\tfunction tryReadBlockMappingFromProperty(state, propertyStart, nodeIndent, flowIndent) {\n\t\tconst fallbackState = snapshotState(state);\n\t\tbeginAnchorTransaction(state);\n\t\trestoreState(state, propertyStart);\n\t\tstate.tag = null;\n\t\tstate.anchor = null;\n\t\tstate.kind = null;\n\t\tstate.result = null;\n\t\tif (readBlockMapping(state, nodeIndent, flowIndent) && state.kind === \"mapping\") {\n\t\t\tcommitAnchorTransaction(state);\n\t\t\treturn true;\n\t\t}\n\t\trollbackAnchorTransaction(state);\n\t\trestoreState(state, fallbackState);\n\t\treturn false;\n\t}\n\tfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n\t\tlet allowBlockScalars;\n\t\tlet allowBlockCollections;\n\t\tlet indentStatus = 1;\n\t\tlet atNewLine = false;\n\t\tlet hasContent = false;\n\t\tlet propertyStart = null;\n\t\tlet type;\n\t\tlet flowIndent;\n\t\tlet blockIndent;\n\t\tif (state.depth >= state.maxDepth) throwError(state, \"nesting exceeded maxDepth (\" + state.maxDepth + \")\");\n\t\tstate.depth += 1;\n\t\tif (state.listener !== null) state.listener(\"open\", state);\n\t\tstate.tag = null;\n\t\tstate.anchor = null;\n\t\tstate.kind = null;\n\t\tstate.result = null;\n\t\tconst allowBlockStyles = allowBlockScalars = allowBlockCollections = CONTEXT_BLOCK_OUT === nodeContext || CONTEXT_BLOCK_IN === nodeContext;\n\t\tif (allowToSeek) {\n\t\t\tif (skipSeparationSpace(state, true, -1)) {\n\t\t\t\tatNewLine = true;\n\t\t\t\tif (state.lineIndent > parentIndent) indentStatus = 1;\n\t\t\t\telse if (state.lineIndent === parentIndent) indentStatus = 0;\n\t\t\t\telse if (state.lineIndent < parentIndent) indentStatus = -1;\n\t\t\t}\n\t\t}\n\t\tif (indentStatus === 1) while (true) {\n\t\t\tconst ch = state.input.charCodeAt(state.position);\n\t\t\tconst propertyState = snapshotState(state);\n\t\t\tif (atNewLine && (ch === 33 && state.tag !== null || ch === 38 && state.anchor !== null)) break;\n\t\t\tif (!readTagProperty(state) && !readAnchorProperty(state)) break;\n\t\t\tif (propertyStart === null) propertyStart = propertyState;\n\t\t\tif (skipSeparationSpace(state, true, -1)) {\n\t\t\t\tatNewLine = true;\n\t\t\t\tallowBlockCollections = allowBlockStyles;\n\t\t\t\tif (state.lineIndent > parentIndent) indentStatus = 1;\n\t\t\t\telse if (state.lineIndent === parentIndent) indentStatus = 0;\n\t\t\t\telse if (state.lineIndent < parentIndent) indentStatus = -1;\n\t\t\t} else allowBlockCollections = false;\n\t\t}\n\t\tif (allowBlockCollections) allowBlockCollections = atNewLine || allowCompact;\n\t\tif (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n\t\t\tif (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) flowIndent = parentIndent;\n\t\t\telse flowIndent = parentIndent + 1;\n\t\t\tblockIndent = state.position - state.lineStart;\n\t\t\tif (indentStatus === 1) if (allowBlockCollections && (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent)) || readFlowCollection(state, flowIndent)) hasContent = true;\n\t\t\telse {\n\t\t\t\tconst ch = state.input.charCodeAt(state.position);\n\t\t\t\tif (propertyStart !== null && allowBlockStyles && !allowBlockCollections && ch !== 124 && ch !== 62 && tryReadBlockMappingFromProperty(state, propertyStart, propertyStart.position - propertyStart.lineStart, flowIndent)) hasContent = true;\n\t\t\t\telse if (allowBlockScalars && readBlockScalar(state, flowIndent) || readSingleQuotedScalar(state, flowIndent) || readDoubleQuotedScalar(state, flowIndent)) hasContent = true;\n\t\t\t\telse if (readAlias(state)) {\n\t\t\t\t\thasContent = true;\n\t\t\t\t\tif (state.tag !== null || state.anchor !== null) throwError(state, \"alias node should not have any properties\");\n\t\t\t\t} else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n\t\t\t\t\thasContent = true;\n\t\t\t\t\tif (state.tag === null) state.tag = \"?\";\n\t\t\t\t}\n\t\t\t\tif (state.anchor !== null) storeAnchor(state, state.anchor, state.result);\n\t\t\t}\n\t\t\telse if (indentStatus === 0) hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n\t\t}\n\t\tif (state.tag === null) {\n\t\t\tif (state.anchor !== null) storeAnchor(state, state.anchor, state.result);\n\t\t} else if (state.tag === \"?\") {\n\t\t\tif (state.result !== null && state.kind !== \"scalar\") throwError(state, \"unacceptable node kind for !<?> tag; it should be \\\"scalar\\\", not \\\"\" + state.kind + \"\\\"\");\n\t\t\tfor (let typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n\t\t\t\ttype = state.implicitTypes[typeIndex];\n\t\t\t\tif (type.resolve(state.result)) {\n\t\t\t\t\tstate.result = type.construct(state.result);\n\t\t\t\t\tstate.tag = type.tag;\n\t\t\t\t\tif (state.anchor !== null) storeAnchor(state, state.anchor, state.result);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (state.tag !== \"!\") {\n\t\t\tif (_hasOwnProperty.call(state.typeMap[state.kind || \"fallback\"], state.tag)) type = state.typeMap[state.kind || \"fallback\"][state.tag];\n\t\t\telse {\n\t\t\t\ttype = null;\n\t\t\t\tconst typeList = state.typeMap.multi[state.kind || \"fallback\"];\n\t\t\t\tfor (let typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n\t\t\t\t\ttype = typeList[typeIndex];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!type) throwError(state, \"unknown tag !<\" + state.tag + \">\");\n\t\t\tif (state.result !== null && type.kind !== state.kind) throwError(state, \"unacceptable node kind for !<\" + state.tag + \"> tag; it should be \\\"\" + type.kind + \"\\\", not \\\"\" + state.kind + \"\\\"\");\n\t\t\tif (!type.resolve(state.result, state.tag)) throwError(state, \"cannot resolve a node with !<\" + state.tag + \"> explicit tag\");\n\t\t\telse {\n\t\t\t\tstate.result = type.construct(state.result, state.tag);\n\t\t\t\tif (state.anchor !== null) storeAnchor(state, state.anchor, state.result);\n\t\t\t}\n\t\t}\n\t\tif (state.listener !== null) state.listener(\"close\", state);\n\t\tstate.depth -= 1;\n\t\treturn state.tag !== null || state.anchor !== null || hasContent;\n\t}\n\tfunction readDocument(state) {\n\t\tconst documentStart = state.position;\n\t\tlet hasDirectives = false;\n\t\tlet ch;\n\t\tstate.version = null;\n\t\tstate.checkLineBreaks = state.legacy;\n\t\tstate.tagMap = Object.create(null);\n\t\tstate.anchorMap = Object.create(null);\n\t\twhile ((ch = state.input.charCodeAt(state.position)) !== 0) {\n\t\t\tskipSeparationSpace(state, true, -1);\n\t\t\tch = state.input.charCodeAt(state.position);\n\t\t\tif (state.lineIndent > 0 || ch !== 37) break;\n\t\t\thasDirectives = true;\n\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\tlet _position = state.position;\n\t\t\twhile (ch !== 0 && !isWsOrEol(ch)) ch = state.input.charCodeAt(++state.position);\n\t\t\tconst directiveName = state.input.slice(_position, state.position);\n\t\t\tconst directiveArgs = [];\n\t\t\tif (directiveName.length < 1) throwError(state, \"directive name must not be less than one character in length\");\n\t\t\twhile (ch !== 0) {\n\t\t\t\twhile (isWhiteSpace(ch)) ch = state.input.charCodeAt(++state.position);\n\t\t\t\tif (ch === 35) {\n\t\t\t\t\tdo\n\t\t\t\t\t\tch = state.input.charCodeAt(++state.position);\n\t\t\t\t\twhile (ch !== 0 && !isEol(ch));\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (isEol(ch)) break;\n\t\t\t\t_position = state.position;\n\t\t\t\twhile (ch !== 0 && !isWsOrEol(ch)) ch = state.input.charCodeAt(++state.position);\n\t\t\t\tdirectiveArgs.push(state.input.slice(_position, state.position));\n\t\t\t}\n\t\t\tif (ch !== 0) readLineBreak(state);\n\t\t\tif (_hasOwnProperty.call(directiveHandlers, directiveName)) directiveHandlers[directiveName](state, directiveName, directiveArgs);\n\t\t\telse throwWarning(state, \"unknown document directive \\\"\" + directiveName + \"\\\"\");\n\t\t}\n\t\tskipSeparationSpace(state, true, -1);\n\t\tif (state.lineIndent === 0 && state.input.charCodeAt(state.position) === 45 && state.input.charCodeAt(state.position + 1) === 45 && state.input.charCodeAt(state.position + 2) === 45) {\n\t\t\tstate.position += 3;\n\t\t\tskipSeparationSpace(state, true, -1);\n\t\t} else if (hasDirectives) throwError(state, \"directives end mark is expected\");\n\t\tcomposeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n\t\tskipSeparationSpace(state, true, -1);\n\t\tif (state.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) throwWarning(state, \"non-ASCII line breaks are interpreted as content\");\n\t\tstate.documents.push(state.result);\n\t\tif (state.position === state.lineStart && testDocumentSeparator(state)) {\n\t\t\tif (state.input.charCodeAt(state.position) === 46) {\n\t\t\t\tstate.position += 3;\n\t\t\t\tskipSeparationSpace(state, true, -1);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (state.position < state.length - 1) throwError(state, \"end of the stream or a document separator is expected\");\n\t}\n\tfunction loadDocuments(input, options) {\n\t\tinput = String(input);\n\t\toptions = options || {};\n\t\tif (input.length !== 0) {\n\t\t\tif (input.charCodeAt(input.length - 1) !== 10 && input.charCodeAt(input.length - 1) !== 13) input += \"\\n\";\n\t\t\tif (input.charCodeAt(0) === 65279) input = input.slice(1);\n\t\t}\n\t\tconst state = new State(input, options);\n\t\tconst nullpos = input.indexOf(\"\\0\");\n\t\tif (nullpos !== -1) {\n\t\t\tstate.position = nullpos;\n\t\t\tthrowError(state, \"null byte is not allowed in input\");\n\t\t}\n\t\tstate.input += \"\\0\";\n\t\twhile (state.input.charCodeAt(state.position) === 32) {\n\t\t\tstate.lineIndent += 1;\n\t\t\tstate.position += 1;\n\t\t}\n\t\twhile (state.position < state.length - 1) readDocument(state);\n\t\treturn state.documents;\n\t}\n\tfunction loadAll(input, iterator, options) {\n\t\tif (iterator !== null && typeof iterator === \"object\" && typeof options === \"undefined\") {\n\t\t\toptions = iterator;\n\t\t\titerator = null;\n\t\t}\n\t\tconst documents = loadDocuments(input, options);\n\t\tif (typeof iterator !== \"function\") return documents;\n\t\tfor (let index = 0, length = documents.length; index < length; index += 1) iterator(documents[index]);\n\t}\n\tfunction load(input, options) {\n\t\tconst documents = loadDocuments(input, options);\n\t\tif (documents.length === 0) return;\n\t\telse if (documents.length === 1) return documents[0];\n\t\tthrow new YAMLException(\"expected a single document in the stream, but found more\");\n\t}\n\tmodule.exports.loadAll = loadAll;\n\tmodule.exports.load = load;\n}));\n//#endregion\n//#region lib/dumper.js\nvar require_dumper = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar common = require_common();\n\tvar YAMLException = require_exception();\n\tvar DEFAULT_SCHEMA = require_default();\n\tvar _toString = Object.prototype.toString;\n\tvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\tvar CHAR_BOM = 65279;\n\tvar CHAR_TAB = 9;\n\tvar CHAR_LINE_FEED = 10;\n\tvar CHAR_CARRIAGE_RETURN = 13;\n\tvar CHAR_SPACE = 32;\n\tvar CHAR_EXCLAMATION = 33;\n\tvar CHAR_DOUBLE_QUOTE = 34;\n\tvar CHAR_SHARP = 35;\n\tvar CHAR_PERCENT = 37;\n\tvar CHAR_AMPERSAND = 38;\n\tvar CHAR_SINGLE_QUOTE = 39;\n\tvar CHAR_ASTERISK = 42;\n\tvar CHAR_COMMA = 44;\n\tvar CHAR_MINUS = 45;\n\tvar CHAR_COLON = 58;\n\tvar CHAR_EQUALS = 61;\n\tvar CHAR_GREATER_THAN = 62;\n\tvar CHAR_QUESTION = 63;\n\tvar CHAR_COMMERCIAL_AT = 64;\n\tvar CHAR_LEFT_SQUARE_BRACKET = 91;\n\tvar CHAR_RIGHT_SQUARE_BRACKET = 93;\n\tvar CHAR_GRAVE_ACCENT = 96;\n\tvar CHAR_LEFT_CURLY_BRACKET = 123;\n\tvar CHAR_VERTICAL_LINE = 124;\n\tvar CHAR_RIGHT_CURLY_BRACKET = 125;\n\tvar ESCAPE_SEQUENCES = {};\n\tESCAPE_SEQUENCES[0] = \"\\\\0\";\n\tESCAPE_SEQUENCES[7] = \"\\\\a\";\n\tESCAPE_SEQUENCES[8] = \"\\\\b\";\n\tESCAPE_SEQUENCES[9] = \"\\\\t\";\n\tESCAPE_SEQUENCES[10] = \"\\\\n\";\n\tESCAPE_SEQUENCES[11] = \"\\\\v\";\n\tESCAPE_SEQUENCES[12] = \"\\\\f\";\n\tESCAPE_SEQUENCES[13] = \"\\\\r\";\n\tESCAPE_SEQUENCES[27] = \"\\\\e\";\n\tESCAPE_SEQUENCES[34] = \"\\\\\\\"\";\n\tESCAPE_SEQUENCES[92] = \"\\\\\\\\\";\n\tESCAPE_SEQUENCES[133] = \"\\\\N\";\n\tESCAPE_SEQUENCES[160] = \"\\\\_\";\n\tESCAPE_SEQUENCES[8232] = \"\\\\L\";\n\tESCAPE_SEQUENCES[8233] = \"\\\\P\";\n\tvar DEPRECATED_BOOLEANS_SYNTAX = [\n\t\t\"y\",\n\t\t\"Y\",\n\t\t\"yes\",\n\t\t\"Yes\",\n\t\t\"YES\",\n\t\t\"on\",\n\t\t\"On\",\n\t\t\"ON\",\n\t\t\"n\",\n\t\t\"N\",\n\t\t\"no\",\n\t\t\"No\",\n\t\t\"NO\",\n\t\t\"off\",\n\t\t\"Off\",\n\t\t\"OFF\"\n\t];\n\tvar DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\\.[0-9_]*)?$/;\n\tfunction compileStyleMap(schema, map) {\n\t\tif (map === null) return {};\n\t\tconst result = {};\n\t\tconst keys = Object.keys(map);\n\t\tfor (let index = 0, length = keys.length; index < length; index += 1) {\n\t\t\tlet tag = keys[index];\n\t\t\tlet style = String(map[tag]);\n\t\t\tif (tag.slice(0, 2) === \"!!\") tag = \"tag:yaml.org,2002:\" + tag.slice(2);\n\t\t\tconst type = schema.compiledTypeMap[\"fallback\"][tag];\n\t\t\tif (type && _hasOwnProperty.call(type.styleAliases, style)) style = type.styleAliases[style];\n\t\t\tresult[tag] = style;\n\t\t}\n\t\treturn result;\n\t}\n\tfunction encodeHex(character) {\n\t\tlet handle;\n\t\tlet length;\n\t\tconst string = character.toString(16).toUpperCase();\n\t\tif (character <= 255) {\n\t\t\thandle = \"x\";\n\t\t\tlength = 2;\n\t\t} else if (character <= 65535) {\n\t\t\thandle = \"u\";\n\t\t\tlength = 4;\n\t\t} else if (character <= 4294967295) {\n\t\t\thandle = \"U\";\n\t\t\tlength = 8;\n\t\t} else throw new YAMLException(\"code point within a string may not be greater than 0xFFFFFFFF\");\n\t\treturn \"\\\\\" + handle + common.repeat(\"0\", length - string.length) + string;\n\t}\n\tvar QUOTING_TYPE_SINGLE = 1;\n\tvar QUOTING_TYPE_DOUBLE = 2;\n\tfunction State(options) {\n\t\tthis.schema = options[\"schema\"] || DEFAULT_SCHEMA;\n\t\tthis.indent = Math.max(1, options[\"indent\"] || 2);\n\t\tthis.noArrayIndent = options[\"noArrayIndent\"] || false;\n\t\tthis.skipInvalid = options[\"skipInvalid\"] || false;\n\t\tthis.flowLevel = common.isNothing(options[\"flowLevel\"]) ? -1 : options[\"flowLevel\"];\n\t\tthis.styleMap = compileStyleMap(this.schema, options[\"styles\"] || null);\n\t\tthis.sortKeys = options[\"sortKeys\"] || false;\n\t\tthis.lineWidth = options[\"lineWidth\"] || 80;\n\t\tthis.noRefs = options[\"noRefs\"] || false;\n\t\tthis.noCompatMode = options[\"noCompatMode\"] || false;\n\t\tthis.condenseFlow = options[\"condenseFlow\"] || false;\n\t\tthis.quotingType = options[\"quotingType\"] === \"\\\"\" ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE;\n\t\tthis.forceQuotes = options[\"forceQuotes\"] || false;\n\t\tthis.replacer = typeof options[\"replacer\"] === \"function\" ? options[\"replacer\"] : null;\n\t\tthis.implicitTypes = this.schema.compiledImplicit;\n\t\tthis.explicitTypes = this.schema.compiledExplicit;\n\t\tthis.tag = null;\n\t\tthis.result = \"\";\n\t\tthis.duplicates = [];\n\t\tthis.usedDuplicates = null;\n\t}\n\tfunction indentString(string, spaces) {\n\t\tconst ind = common.repeat(\" \", spaces);\n\t\tlet position = 0;\n\t\tlet result = \"\";\n\t\tconst length = string.length;\n\t\twhile (position < length) {\n\t\t\tlet line;\n\t\t\tconst next = string.indexOf(\"\\n\", position);\n\t\t\tif (next === -1) {\n\t\t\t\tline = string.slice(position);\n\t\t\t\tposition = length;\n\t\t\t} else {\n\t\t\t\tline = string.slice(position, next + 1);\n\t\t\t\tposition = next + 1;\n\t\t\t}\n\t\t\tif (line.length && line !== \"\\n\") result += ind;\n\t\t\tresult += line;\n\t\t}\n\t\treturn result;\n\t}\n\tfunction generateNextLine(state, level) {\n\t\treturn \"\\n\" + common.repeat(\" \", state.indent * level);\n\t}\n\tfunction testImplicitResolving(state, str) {\n\t\tfor (let index = 0, length = state.implicitTypes.length; index < length; index += 1) if (state.implicitTypes[index].resolve(str)) return true;\n\t\treturn false;\n\t}\n\tfunction isWhitespace(c) {\n\t\treturn c === CHAR_SPACE || c === CHAR_TAB;\n\t}\n\tfunction isPrintable(c) {\n\t\treturn c >= 32 && c <= 126 || c >= 161 && c <= 55295 && c !== 8232 && c !== 8233 || c >= 57344 && c <= 65533 && c !== CHAR_BOM || c >= 65536 && c <= 1114111;\n\t}\n\tfunction isNsCharOrWhitespace(c) {\n\t\treturn isPrintable(c) && c !== CHAR_BOM && c !== CHAR_CARRIAGE_RETURN && c !== CHAR_LINE_FEED;\n\t}\n\tfunction isPlainSafe(c, prev, inblock) {\n\t\tconst cIsNsCharOrWhitespace = isNsCharOrWhitespace(c);\n\t\tconst cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c);\n\t\treturn (inblock ? cIsNsCharOrWhitespace : cIsNsCharOrWhitespace && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET) && c !== CHAR_SHARP && !(prev === CHAR_COLON && !cIsNsChar) || isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP || prev === CHAR_COLON && cIsNsChar;\n\t}\n\tfunction isPlainSafeFirst(c) {\n\t\treturn isPrintable(c) && c !== CHAR_BOM && !isWhitespace(c) && c !== CHAR_MINUS && c !== CHAR_QUESTION && c !== CHAR_COLON && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET && c !== CHAR_SHARP && c !== CHAR_AMPERSAND && c !== CHAR_ASTERISK && c !== CHAR_EXCLAMATION && c !== CHAR_VERTICAL_LINE && c !== CHAR_EQUALS && c !== CHAR_GREATER_THAN && c !== CHAR_SINGLE_QUOTE && c !== CHAR_DOUBLE_QUOTE && c !== CHAR_PERCENT && c !== CHAR_COMMERCIAL_AT && c !== CHAR_GRAVE_ACCENT;\n\t}\n\tfunction isPlainSafeLast(c) {\n\t\treturn !isWhitespace(c) && c !== CHAR_COLON;\n\t}\n\tfunction codePointAt(string, pos) {\n\t\tconst first = string.charCodeAt(pos);\n\t\tlet second;\n\t\tif (first >= 55296 && first <= 56319 && pos + 1 < string.length) {\n\t\t\tsecond = string.charCodeAt(pos + 1);\n\t\t\tif (second >= 56320 && second <= 57343) return (first - 55296) * 1024 + second - 56320 + 65536;\n\t\t}\n\t\treturn first;\n\t}\n\tfunction needIndentIndicator(string) {\n\t\treturn /^\\n* /.test(string);\n\t}\n\tvar STYLE_PLAIN = 1;\n\tvar STYLE_SINGLE = 2;\n\tvar STYLE_LITERAL = 3;\n\tvar STYLE_FOLDED = 4;\n\tvar STYLE_DOUBLE = 5;\n\tfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType, quotingType, forceQuotes, inblock) {\n\t\tlet i;\n\t\tlet char = 0;\n\t\tlet prevChar = null;\n\t\tlet hasLineBreak = false;\n\t\tlet hasFoldableLine = false;\n\t\tconst shouldTrackWidth = lineWidth !== -1;\n\t\tlet previousLineBreak = -1;\n\t\tlet plain = isPlainSafeFirst(codePointAt(string, 0)) && isPlainSafeLast(codePointAt(string, string.length - 1));\n\t\tif (singleLineOnly || forceQuotes) for (i = 0; i < string.length; char >= 65536 ? i += 2 : i++) {\n\t\t\tchar = codePointAt(string, i);\n\t\t\tif (!isPrintable(char)) return STYLE_DOUBLE;\n\t\t\tplain = plain && isPlainSafe(char, prevChar, inblock);\n\t\t\tprevChar = char;\n\t\t}\n\t\telse {\n\t\t\tfor (i = 0; i < string.length; char >= 65536 ? i += 2 : i++) {\n\t\t\t\tchar = codePointAt(string, i);\n\t\t\t\tif (char === CHAR_LINE_FEED) {\n\t\t\t\t\thasLineBreak = true;\n\t\t\t\t\tif (shouldTrackWidth) {\n\t\t\t\t\t\thasFoldableLine = hasFoldableLine || i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== \" \";\n\t\t\t\t\t\tpreviousLineBreak = i;\n\t\t\t\t\t}\n\t\t\t\t} else if (!isPrintable(char)) return STYLE_DOUBLE;\n\t\t\t\tplain = plain && isPlainSafe(char, prevChar, inblock);\n\t\t\t\tprevChar = char;\n\t\t\t}\n\t\t\thasFoldableLine = hasFoldableLine || shouldTrackWidth && i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== \" \";\n\t\t}\n\t\tif (!hasLineBreak && !hasFoldableLine) {\n\t\t\tif (plain && !forceQuotes && !testAmbiguousType(string)) return STYLE_PLAIN;\n\t\t\treturn quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n\t\t}\n\t\tif (indentPerLevel > 9 && needIndentIndicator(string)) return STYLE_DOUBLE;\n\t\tif (!forceQuotes) return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n\t\treturn quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n\t}\n\tfunction writeScalar(state, string, level, iskey, inblock) {\n\t\tstate.dump = function() {\n\t\t\tif (string.length === 0) return state.quotingType === QUOTING_TYPE_DOUBLE ? \"\\\"\\\"\" : \"''\";\n\t\t\tif (!state.noCompatMode) {\n\t\t\t\tif (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) return state.quotingType === QUOTING_TYPE_DOUBLE ? \"\\\"\" + string + \"\\\"\" : \"'\" + string + \"'\";\n\t\t\t}\n\t\t\tconst indent = state.indent * Math.max(1, level);\n\t\t\tconst lineWidth = state.lineWidth === -1 ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\t\t\tconst singleLineOnly = iskey || state.flowLevel > -1 && level >= state.flowLevel;\n\t\t\tfunction testAmbiguity(string) {\n\t\t\t\treturn testImplicitResolving(state, string);\n\t\t\t}\n\t\t\tswitch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) {\n\t\t\t\tcase STYLE_PLAIN: return string;\n\t\t\t\tcase STYLE_SINGLE: return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n\t\t\t\tcase STYLE_LITERAL: return \"|\" + blockHeader(string, state.indent) + dropEndingNewline(indentString(string, indent));\n\t\t\t\tcase STYLE_FOLDED: return \">\" + blockHeader(string, state.indent) + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n\t\t\t\tcase STYLE_DOUBLE: return \"\\\"\" + escapeString(string, lineWidth) + \"\\\"\";\n\t\t\t\tdefault: throw new YAMLException(\"impossible error: invalid scalar style\");\n\t\t\t}\n\t\t}();\n\t}\n\tfunction blockHeader(string, indentPerLevel) {\n\t\tconst indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : \"\";\n\t\tconst clip = string[string.length - 1] === \"\\n\";\n\t\treturn indentIndicator + (clip && (string[string.length - 2] === \"\\n\" || string === \"\\n\") ? \"+\" : clip ? \"\" : \"-\") + \"\\n\";\n\t}\n\tfunction dropEndingNewline(string) {\n\t\treturn string[string.length - 1] === \"\\n\" ? string.slice(0, -1) : string;\n\t}\n\tfunction foldString(string, width) {\n\t\tconst lineRe = /(\\n+)([^\\n]*)/g;\n\t\tlet result = function() {\n\t\t\tlet nextLF = string.indexOf(\"\\n\");\n\t\t\tnextLF = nextLF !== -1 ? nextLF : string.length;\n\t\t\tlineRe.lastIndex = nextLF;\n\t\t\treturn foldLine(string.slice(0, nextLF), width);\n\t\t}();\n\t\tlet prevMoreIndented = string[0] === \"\\n\" || string[0] === \" \";\n\t\tlet moreIndented;\n\t\tlet match;\n\t\twhile (match = lineRe.exec(string)) {\n\t\t\tconst prefix = match[1];\n\t\t\tconst line = match[2];\n\t\t\tmoreIndented = line[0] === \" \";\n\t\t\tresult += prefix + (!prevMoreIndented && !moreIndented && line !== \"\" ? \"\\n\" : \"\") + foldLine(line, width);\n\t\t\tprevMoreIndented = moreIndented;\n\t\t}\n\t\treturn result;\n\t}\n\tfunction foldLine(line, width) {\n\t\tif (line === \"\" || line[0] === \" \") return line;\n\t\tconst breakRe = / [^ ]/g;\n\t\tlet match;\n\t\tlet start = 0;\n\t\tlet end;\n\t\tlet curr = 0;\n\t\tlet next = 0;\n\t\tlet result = \"\";\n\t\twhile (match = breakRe.exec(line)) {\n\t\t\tnext = match.index;\n\t\t\tif (next - start > width) {\n\t\t\t\tend = curr > start ? curr : next;\n\t\t\t\tresult += \"\\n\" + line.slice(start, end);\n\t\t\t\tstart = end + 1;\n\t\t\t}\n\t\t\tcurr = next;\n\t\t}\n\t\tresult += \"\\n\";\n\t\tif (line.length - start > width && curr > start) result += line.slice(start, curr) + \"\\n\" + line.slice(curr + 1);\n\t\telse result += line.slice(start);\n\t\treturn result.slice(1);\n\t}\n\tfunction escapeString(string) {\n\t\tlet result = \"\";\n\t\tlet char = 0;\n\t\tfor (let i = 0; i < string.length; char >= 65536 ? i += 2 : i++) {\n\t\t\tchar = codePointAt(string, i);\n\t\t\tconst escapeSeq = ESCAPE_SEQUENCES[char];\n\t\t\tif (!escapeSeq && isPrintable(char)) {\n\t\t\t\tresult += string[i];\n\t\t\t\tif (char >= 65536) result += string[i + 1];\n\t\t\t} else result += escapeSeq || encodeHex(char);\n\t\t}\n\t\treturn result;\n\t}\n\tfunction writeFlowSequence(state, level, object) {\n\t\tlet _result = \"\";\n\t\tconst _tag = state.tag;\n\t\tfor (let index = 0, length = object.length; index < length; index += 1) {\n\t\t\tlet value = object[index];\n\t\t\tif (state.replacer) value = state.replacer.call(object, String(index), value);\n\t\t\tif (writeNode(state, level, value, false, false) || typeof value === \"undefined\" && writeNode(state, level, null, false, false)) {\n\t\t\t\tif (_result !== \"\") _result += \",\" + (!state.condenseFlow ? \" \" : \"\");\n\t\t\t\t_result += state.dump;\n\t\t\t}\n\t\t}\n\t\tstate.tag = _tag;\n\t\tstate.dump = \"[\" + _result + \"]\";\n\t}\n\tfunction writeBlockSequence(state, level, object, compact) {\n\t\tlet _result = \"\";\n\t\tconst _tag = state.tag;\n\t\tfor (let index = 0, length = object.length; index < length; index += 1) {\n\t\t\tlet value = object[index];\n\t\t\tif (state.replacer) value = state.replacer.call(object, String(index), value);\n\t\t\tif (writeNode(state, level + 1, value, true, true, false, true) || typeof value === \"undefined\" && writeNode(state, level + 1, null, true, true, false, true)) {\n\t\t\t\tif (!compact || _result !== \"\") _result += generateNextLine(state, level);\n\t\t\t\tif (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) _result += \"-\";\n\t\t\t\telse _result += \"- \";\n\t\t\t\t_result += state.dump;\n\t\t\t}\n\t\t}\n\t\tstate.tag = _tag;\n\t\tstate.dump = _result || \"[]\";\n\t}\n\tfunction writeFlowMapping(state, level, object) {\n\t\tlet _result = \"\";\n\t\tconst _tag = state.tag;\n\t\tconst objectKeyList = Object.keys(object);\n\t\tfor (let index = 0, length = objectKeyList.length; index < length; index += 1) {\n\t\t\tlet pairBuffer = \"\";\n\t\t\tif (_result !== \"\") pairBuffer += \", \";\n\t\t\tif (state.condenseFlow) pairBuffer += \"\\\"\";\n\t\t\tconst objectKey = objectKeyList[index];\n\t\t\tlet objectValue = object[objectKey];\n\t\t\tif (state.replacer) objectValue = state.replacer.call(object, objectKey, objectValue);\n\t\t\tif (!writeNode(state, level, objectKey, false, false)) continue;\n\t\t\tif (state.dump.length > 1024) pairBuffer += \"? \";\n\t\t\tpairBuffer += state.dump + (state.condenseFlow ? \"\\\"\" : \"\") + \":\" + (state.condenseFlow ? \"\" : \" \");\n\t\t\tif (!writeNode(state, level, objectValue, false, false)) continue;\n\t\t\tpairBuffer += state.dump;\n\t\t\t_result += pairBuffer;\n\t\t}\n\t\tstate.tag = _tag;\n\t\tstate.dump = \"{\" + _result + \"}\";\n\t}\n\tfunction writeBlockMapping(state, level, object, compact) {\n\t\tlet _result = \"\";\n\t\tconst _tag = state.tag;\n\t\tconst objectKeyList = Object.keys(object);\n\t\tif (state.sortKeys === true) objectKeyList.sort();\n\t\telse if (typeof state.sortKeys === \"function\") objectKeyList.sort(state.sortKeys);\n\t\telse if (state.sortKeys) throw new YAMLException(\"sortKeys must be a boolean or a function\");\n\t\tfor (let index = 0, length = objectKeyList.length; index < length; index += 1) {\n\t\t\tlet pairBuffer = \"\";\n\t\t\tif (!compact || _result !== \"\") pairBuffer += generateNextLine(state, level);\n\t\t\tconst objectKey = objectKeyList[index];\n\t\t\tlet objectValue = object[objectKey];\n\t\t\tif (state.replacer) objectValue = state.replacer.call(object, objectKey, objectValue);\n\t\t\tif (!writeNode(state, level + 1, objectKey, true, true, true)) continue;\n\t\t\tconst explicitPair = state.tag !== null && state.tag !== \"?\" || state.dump && state.dump.length > 1024;\n\t\t\tif (explicitPair) if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) pairBuffer += \"?\";\n\t\t\telse pairBuffer += \"? \";\n\t\t\tpairBuffer += state.dump;\n\t\t\tif (explicitPair) pairBuffer += generateNextLine(state, level);\n\t\t\tif (!writeNode(state, level + 1, objectValue, true, explicitPair)) continue;\n\t\t\tif (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) pairBuffer += \":\";\n\t\t\telse pairBuffer += \": \";\n\t\t\tpairBuffer += state.dump;\n\t\t\t_result += pairBuffer;\n\t\t}\n\t\tstate.tag = _tag;\n\t\tstate.dump = _result || \"{}\";\n\t}\n\tfunction detectType(state, object, explicit) {\n\t\tconst typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\t\tfor (let index = 0, length = typeList.length; index < length; index += 1) {\n\t\t\tconst type = typeList[index];\n\t\t\tif ((type.instanceOf || type.predicate) && (!type.instanceOf || typeof object === \"object\" && object instanceof type.instanceOf) && (!type.predicate || type.predicate(object))) {\n\t\t\t\tif (explicit) if (type.multi && type.representName) state.tag = type.representName(object);\n\t\t\t\telse state.tag = type.tag;\n\t\t\t\telse state.tag = \"?\";\n\t\t\t\tif (type.represent) {\n\t\t\t\t\tconst style = state.styleMap[type.tag] || type.defaultStyle;\n\t\t\t\t\tlet _result;\n\t\t\t\t\tif (_toString.call(type.represent) === \"[object Function]\") _result = type.represent(object, style);\n\t\t\t\t\telse if (_hasOwnProperty.call(type.represent, style)) _result = type.represent[style](object, style);\n\t\t\t\t\telse throw new YAMLException(\"!<\" + type.tag + \"> tag resolver accepts not \\\"\" + style + \"\\\" style\");\n\t\t\t\t\tstate.dump = _result;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tfunction writeNode(state, level, object, block, compact, iskey, isblockseq) {\n\t\tstate.tag = null;\n\t\tstate.dump = object;\n\t\tif (!detectType(state, object, false)) detectType(state, object, true);\n\t\tconst type = _toString.call(state.dump);\n\t\tconst inblock = block;\n\t\tif (block) block = state.flowLevel < 0 || state.flowLevel > level;\n\t\tconst objectOrArray = type === \"[object Object]\" || type === \"[object Array]\";\n\t\tlet duplicateIndex;\n\t\tlet duplicate;\n\t\tif (objectOrArray) {\n\t\t\tduplicateIndex = state.duplicates.indexOf(object);\n\t\t\tduplicate = duplicateIndex !== -1;\n\t\t}\n\t\tif (state.tag !== null && state.tag !== \"?\" || duplicate || state.indent !== 2 && level > 0) compact = false;\n\t\tif (duplicate && state.usedDuplicates[duplicateIndex]) state.dump = \"*ref_\" + duplicateIndex;\n\t\telse {\n\t\t\tif (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) state.usedDuplicates[duplicateIndex] = true;\n\t\t\tif (type === \"[object Object]\") if (block && Object.keys(state.dump).length !== 0) {\n\t\t\t\twriteBlockMapping(state, level, state.dump, compact);\n\t\t\t\tif (duplicate) state.dump = \"&ref_\" + duplicateIndex + state.dump;\n\t\t\t} else {\n\t\t\t\twriteFlowMapping(state, level, state.dump);\n\t\t\t\tif (duplicate) state.dump = \"&ref_\" + duplicateIndex + \" \" + state.dump;\n\t\t\t}\n\t\t\telse if (type === \"[object Array]\") if (block && state.dump.length !== 0) {\n\t\t\t\tif (state.noArrayIndent && !isblockseq && level > 0) writeBlockSequence(state, level - 1, state.dump, compact);\n\t\t\t\telse writeBlockSequence(state, level, state.dump, compact);\n\t\t\t\tif (duplicate) state.dump = \"&ref_\" + duplicateIndex + state.dump;\n\t\t\t} else {\n\t\t\t\twriteFlowSequence(state, level, state.dump);\n\t\t\t\tif (duplicate) state.dump = \"&ref_\" + duplicateIndex + \" \" + state.dump;\n\t\t\t}\n\t\t\telse if (type === \"[object String]\") {\n\t\t\t\tif (state.tag !== \"?\") writeScalar(state, state.dump, level, iskey, inblock);\n\t\t\t} else if (type === \"[object Undefined]\") return false;\n\t\t\telse {\n\t\t\t\tif (state.skipInvalid) return false;\n\t\t\t\tthrow new YAMLException(\"unacceptable kind of an object to dump \" + type);\n\t\t\t}\n\t\t\tif (state.tag !== null && state.tag !== \"?\") {\n\t\t\t\tlet tagStr = encodeURI(state.tag[0] === \"!\" ? state.tag.slice(1) : state.tag).replace(/!/g, \"%21\");\n\t\t\t\tif (state.tag[0] === \"!\") tagStr = \"!\" + tagStr;\n\t\t\t\telse if (tagStr.slice(0, 18) === \"tag:yaml.org,2002:\") tagStr = \"!!\" + tagStr.slice(18);\n\t\t\t\telse tagStr = \"!<\" + tagStr + \">\";\n\t\t\t\tstate.dump = tagStr + \" \" + state.dump;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\tfunction getDuplicateReferences(object, state) {\n\t\tconst objects = [];\n\t\tconst duplicatesIndexes = [];\n\t\tinspectNode(object, objects, duplicatesIndexes);\n\t\tconst length = duplicatesIndexes.length;\n\t\tfor (let index = 0; index < length; index += 1) state.duplicates.push(objects[duplicatesIndexes[index]]);\n\t\tstate.usedDuplicates = new Array(length);\n\t}\n\tfunction inspectNode(object, objects, duplicatesIndexes) {\n\t\tif (object !== null && typeof object === \"object\") {\n\t\t\tconst index = objects.indexOf(object);\n\t\t\tif (index !== -1) {\n\t\t\t\tif (duplicatesIndexes.indexOf(index) === -1) duplicatesIndexes.push(index);\n\t\t\t} else {\n\t\t\t\tobjects.push(object);\n\t\t\t\tif (Array.isArray(object)) for (let i = 0, length = object.length; i < length; i += 1) inspectNode(object[i], objects, duplicatesIndexes);\n\t\t\t\telse {\n\t\t\t\t\tconst objectKeyList = Object.keys(object);\n\t\t\t\t\tfor (let i = 0, length = objectKeyList.length; i < length; i += 1) inspectNode(object[objectKeyList[i]], objects, duplicatesIndexes);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction dump(input, options) {\n\t\toptions = options || {};\n\t\tconst state = new State(options);\n\t\tif (!state.noRefs) getDuplicateReferences(input, state);\n\t\tlet value = input;\n\t\tif (state.replacer) value = state.replacer.call({ \"\": value }, \"\", value);\n\t\tif (writeNode(state, 0, value, true, true)) return state.dump + \"\\n\";\n\t\treturn \"\";\n\t}\n\tmodule.exports.dump = dump;\n}));\n//#endregion\n//#region lib/index_vite_proxy.tmp.mjs\nvar import_js_yaml = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar loader = require_loader();\n\tvar dumper = require_dumper();\n\tfunction renamed(from, to) {\n\t\treturn function() {\n\t\t\tthrow new Error(\"Function yaml.\" + from + \" is removed in js-yaml 4. Use yaml.\" + to + \" instead, which is now safe by default.\");\n\t\t};\n\t}\n\tmodule.exports.Type = require_type();\n\tmodule.exports.Schema = require_schema();\n\tmodule.exports.FAILSAFE_SCHEMA = require_failsafe();\n\tmodule.exports.JSON_SCHEMA = require_json();\n\tmodule.exports.CORE_SCHEMA = require_core();\n\tmodule.exports.DEFAULT_SCHEMA = require_default();\n\tmodule.exports.load = loader.load;\n\tmodule.exports.loadAll = loader.loadAll;\n\tmodule.exports.dump = dumper.dump;\n\tmodule.exports.YAMLException = require_exception();\n\tmodule.exports.types = {\n\t\tbinary: require_binary(),\n\t\tfloat: require_float(),\n\t\tmap: require_map(),\n\t\tnull: require_null(),\n\t\tpairs: require_pairs(),\n\t\tset: require_set(),\n\t\ttimestamp: require_timestamp(),\n\t\tbool: require_bool(),\n\t\tint: require_int(),\n\t\tmerge: require_merge(),\n\t\tomap: require_omap(),\n\t\tseq: require_seq(),\n\t\tstr: require_str()\n\t};\n\tmodule.exports.safeLoad = renamed(\"safeLoad\", \"load\");\n\tmodule.exports.safeLoadAll = renamed(\"safeLoadAll\", \"loadAll\");\n\tmodule.exports.safeDump = renamed(\"safeDump\", \"dump\");\n})))(), 1);\nvar { Type, Schema, FAILSAFE_SCHEMA, JSON_SCHEMA, CORE_SCHEMA, DEFAULT_SCHEMA, load, loadAll, dump, YAMLException, types, safeLoad, safeLoadAll, safeDump } = import_js_yaml.default;\nvar index_vite_proxy_tmp_default = import_js_yaml.default;\n//#endregion\nexport { CORE_SCHEMA, DEFAULT_SCHEMA, FAILSAFE_SCHEMA, JSON_SCHEMA, Schema, Type, YAMLException, index_vite_proxy_tmp_default as default, dump, load, loadAll, safeDump, safeLoad, safeLoadAll, types };\n\n//# sourceMappingURL=js-yaml.mjs.map",
|
|
84
|
+
"/**\n * Shared logger for packages that don't have access to CliContext.\n * Writes through the OutputSink abstraction so output is correctly\n * routed in CLI, MCP, and browser contexts.\n *\n * By default, all messages are written to stderr via the sink.\n * When a log file is configured (via --log-file), messages are\n * appended to that file instead.\n *\n * Routing (default / stderr mode):\n * all levels → writeErr (stderr), respecting the level threshold\n *\n * Routing (file mode, enabled via --log-file):\n * all levels → file, respecting the level threshold\n */\n\nimport { getFileSystem } from \"@uipath/filesystem\";\n\nimport { catchError } from \"./catch-error\";\nimport { getOutputSink, setGlobalSink } from \"./output-context\";\nimport type { OutputSink } from \"./output-sink\";\nimport { singleton } from \"./singleton\";\n\nconst logFilePathSlot = singleton<string>(\"logFilePath\");\n\nexport function setGlobalLogFilePath(path: string): void {\n logFilePathSlot.set(path);\n}\n\nexport function getGlobalLogFilePath(): string {\n return logFilePathSlot.get(\"\") as string;\n}\n\nexport enum LogLevel {\n DEBUG = 0,\n INFO = 1,\n WARN = 2,\n ERROR = 3,\n}\n\nexport const DEFAULT_LOG_LEVEL = LogLevel.ERROR;\n\nexport interface LoggerConfig {\n /** Log level threshold. Messages below this level are suppressed. */\n level?: LogLevel;\n /** Output sink to set as the process-wide default. */\n sink?: OutputSink;\n /** Set to false to disable file logging. Defaults to false. */\n fileLogging?: boolean;\n /** Path to a log file. When set, enables file logging to this path. */\n logFile?: string;\n}\n\nclass SimpleLogger {\n /** Brand marker for cross-bundle duck-type detection. */\n readonly __brand = \"SimpleLogger\" as const;\n\n private level: LogLevel;\n private logFilePath: string;\n private fileLoggingEnabled: boolean;\n // Chains for async file I/O. `flushFile()` awaits both so tests can\n // read the log file synchronously after logging.\n private pendingWrites: Promise<void> = Promise.resolve();\n private pendingInit: Promise<void> = Promise.resolve();\n\n constructor() {\n this.level = SimpleLogger.resolveLevel();\n this.logFilePath = \"\";\n this.fileLoggingEnabled = false;\n }\n\n static getInstance(): SimpleLogger {\n return loggerSingleton.getOrInit(\n () => new SimpleLogger(),\n (v) =>\n \"__brand\" in v &&\n (v as Record<string, unknown>).__brand === \"SimpleLogger\",\n );\n }\n\n /** Reset the singleton — intended for testing only. */\n static resetInstance(): void {\n loggerSingleton.clear();\n }\n\n private static readonly isNode =\n typeof process !== \"undefined\" && !!process.versions?.node;\n\n private static resolveLevel(): LogLevel {\n if (SimpleLogger.isNode) {\n const explicitLevel = SimpleLogger.parseLevel(\n process.env?.UIP_LOG_LEVEL ?? \"\",\n );\n if (explicitLevel !== undefined) return explicitLevel;\n\n // Only accept DEBUG=true or DEBUG=1; arbitrary npm debug patterns\n // (e.g. DEBUG=express:*) should not activate uip debug output.\n const debugVal = process.env?.DEBUG;\n if (debugVal === \"true\" || debugVal === \"1\") {\n return LogLevel.DEBUG;\n }\n\n return DEFAULT_LOG_LEVEL;\n }\n\n // Browser: check localStorage.debug (same convention as the `debug` npm package).\n // Accessing localStorage in Node ≥ 25 emits a noisy warning, so this is browser-only.\n const [localStorageError, hasDebug] = catchError(\n () =>\n typeof localStorage !== \"undefined\" &&\n !!localStorage.getItem(\"debug\"),\n );\n // localStorage may throw in private browsing or sandboxed iframes\n if (!localStorageError && hasDebug) {\n return LogLevel.DEBUG;\n }\n\n return DEFAULT_LOG_LEVEL;\n }\n\n private static parseLevel(value: string): LogLevel | undefined {\n switch (value.toLowerCase()) {\n case \"debug\":\n return LogLevel.DEBUG;\n case \"info\":\n return LogLevel.INFO;\n case \"warn\":\n return LogLevel.WARN;\n case \"error\":\n return LogLevel.ERROR;\n default:\n return undefined;\n }\n }\n\n private format(message: string, args: unknown[]): string {\n if (args.length === 0) return `${message}\\n`;\n return `${message} ${args.map(String).join(\" \")}\\n`;\n }\n\n /** Check if file logging is active (local or cross-bundle via globalThis). */\n private isFileLoggingActive(): boolean {\n return this.fileLoggingEnabled || !!getGlobalLogFilePath();\n }\n\n private writeToFile(formatted: string): void {\n const path = this.logFilePath || getGlobalLogFilePath();\n if (!path) return;\n const timestamp = new Date().toISOString();\n // Wait for setLogFile's truncate before any appendFile, or\n // LightningFS (no O_APPEND) can race and drop early writes.\n // Errors ignored to match the prior appendFileSync behaviour.\n this.pendingWrites = Promise.all([\n this.pendingWrites,\n this.pendingInit,\n ]).then(() =>\n getFileSystem()\n .appendFile(path, `${timestamp} ${formatted}`)\n .catch(() => {}),\n );\n }\n\n debug(message: string, ...args: unknown[]): void {\n if (this.level > LogLevel.DEBUG) return;\n const formatted = this.format(`[DEBUG] ${message}`, args);\n if (this.isFileLoggingActive()) {\n this.writeToFile(formatted);\n } else {\n getOutputSink().writeErr(formatted);\n }\n }\n\n info(message: string, ...args: unknown[]): void {\n if (this.level > LogLevel.INFO) return;\n const formatted = this.format(message, args);\n if (this.isFileLoggingActive()) {\n this.writeToFile(formatted);\n } else {\n getOutputSink().writeErr(formatted);\n }\n }\n\n warn(message: string, ...args: unknown[]): void {\n if (this.level > LogLevel.WARN) return;\n const formatted = this.format(`[WARN] ${message}`, args);\n if (this.isFileLoggingActive()) {\n this.writeToFile(formatted);\n } else {\n getOutputSink().writeErr(formatted);\n }\n }\n\n error(message: string, ...args: unknown[]): void {\n if (this.level > LogLevel.ERROR) return;\n const formatted = this.format(`[ERROR] ${message}`, args);\n if (this.isFileLoggingActive()) {\n this.writeToFile(formatted);\n } else {\n getOutputSink().writeErr(formatted);\n }\n }\n\n /**\n * Get the current log level.\n */\n getLevel(): LogLevel {\n return this.level;\n }\n\n /**\n * Set the log level dynamically\n */\n setLevel(level: LogLevel): void {\n this.level = level;\n }\n\n /**\n * Enable or disable file logging.\n */\n setFileLogging(enabled: boolean): void {\n this.fileLoggingEnabled = enabled;\n if (!enabled) {\n this.logFilePath = \"\";\n setGlobalLogFilePath(\"\");\n }\n }\n\n /**\n * Set a log file path and enable file logging.\n */\n setLogFile(path: string): void {\n this.logFilePath = path;\n setGlobalLogFilePath(path);\n if (!path) return;\n // Optimistically enable; flipped back if the async init fails.\n this.fileLoggingEnabled = true;\n const fs = getFileSystem();\n this.pendingInit = (async () => {\n const [error] = await catchError(\n (async () => {\n await fs.mkdir(fs.path.dirname(path));\n await fs.writeFile(path, \"\");\n })(),\n );\n if (error) this.fileLoggingEnabled = false;\n })();\n }\n\n /** Drain pending async file I/O. For tests that read synchronously after logging. */\n async flushFile(): Promise<void> {\n await this.pendingInit;\n await this.pendingWrites;\n }\n\n /**\n * Get the path to the current log file (empty string if no --log-file was provided).\n */\n getLogFilePath(): string {\n return this.logFilePath || getGlobalLogFilePath();\n }\n\n /**\n * Log handler compatible with the SDK's LogHandler type.\n * Accepts a LogMessage-shaped object and routes it through SimpleLogger.\n *\n * Usage: pass `logger.handleLog` as the `logHandler` option to\n * `createNodeSolutionPackager` or `createNodeProjectPackager`.\n */\n handleLog = (logMessage: {\n message: string;\n logLevel: string;\n source?: string;\n sourceTarget?: string;\n }): void => {\n const parts: string[] = [];\n if (logMessage.source) {\n parts.push(`[${logMessage.source}]`);\n }\n if (logMessage.sourceTarget) {\n parts.push(`[${logMessage.sourceTarget}]`);\n }\n parts.push(logMessage.message);\n const msg = parts.join(\" \");\n\n switch (logMessage.logLevel) {\n case \"Debug\":\n this.debug(msg);\n break;\n case \"Information\":\n this.info(msg);\n break;\n case \"Warning\":\n this.warn(msg);\n break;\n case \"Error\":\n this.error(msg);\n break;\n default:\n this.info(msg);\n break;\n }\n };\n}\n\nconst loggerSingleton = singleton(SimpleLogger);\n\n// Singleton instance\nexport const logger = SimpleLogger.getInstance();\n\n/** Reset the logger singleton — intended for testing only. */\nexport function resetLoggerInstance(): void {\n SimpleLogger.resetInstance();\n}\n\n/**\n * Get the path to the current log file.\n */\nexport function getLogFilePath(): string {\n return logger.getLogFilePath();\n}\n\n/**\n * Configure the logger and output sink in one call.\n *\n * @example\n * // CLI entry point\n * configureLogger({ sink: new TerminalSink() });\n *\n * // Browser entry point\n * configureLogger({ sink: new BrowserSink() });\n *\n * // MCP — errors still surface via writeErr\n * configureLogger({ level: LogLevel.ERROR, sink: new BufferSink() });\n */\nexport function configureLogger(config: LoggerConfig): void {\n if (config.level !== undefined) {\n logger.setLevel(config.level);\n }\n if (config.sink !== undefined) {\n setGlobalSink(config.sink);\n }\n if (config.fileLogging !== undefined) {\n logger.setFileLogging(config.fileLogging);\n }\n if (config.logFile !== undefined) {\n logger.setLogFile(config.logFile);\n }\n}\n",
|
|
85
|
+
"/**\n * Process-wide output format & filter context.\n *\n * Stores the current OutputFormat and JMESPath filter expression so that\n * OutputFormatter functions can apply them automatically without every\n * command having to thread these values through.\n */\n\nimport type { OutputFormat } from \"./formatter\";\nimport { singleton } from \"./singleton\";\n\nconst formatSlot = singleton<OutputFormat>(\"OutputFormat\");\nconst formatExplicitSlot = singleton<boolean>(\"OutputFormatExplicit\");\nconst filterSlot = singleton<string | undefined>(\"OutputFilter\");\n\n/**\n * Set the process-wide output format.\n * Called once at CLI startup (from extractFormatFromArgs for early use via --output)\n * and updated by the preAction hook with the Commander-resolved value.\n */\nexport function setOutputFormat(format: OutputFormat): void {\n formatSlot.set(format);\n}\n\n/**\n * Get the current output format, defaulting to \"json\" if not set.\n */\nexport function getOutputFormat(): OutputFormat {\n return formatSlot.get(\"json\") as OutputFormat;\n}\n\n/**\n * Record whether `--output` was passed explicitly. Lets command handlers\n * distinguish \"user asked for json\" from \"json by default\" without\n * re-scanning argv themselves.\n */\nexport function setOutputFormatExplicit(explicit: boolean): void {\n formatExplicitSlot.set(explicit);\n}\n\n/**\n * True when `--output` was passed explicitly on the command line.\n * Defaults to false (i.e. resolved value is the default).\n */\nexport function getOutputFormatExplicit(): boolean {\n return formatExplicitSlot.get(false) ?? false;\n}\n\n/**\n * Set the process-wide output filter expression.\n * Called once at CLI startup after parsing the global --output-filter option.\n */\nexport function setOutputFilter(filter: string | undefined): void {\n filterSlot.set(filter);\n}\n\n/**\n * Get the current output filter expression, if any.\n */\nexport function getOutputFilter(): string | undefined {\n return filterSlot.get();\n}\n",
|
|
86
|
+
"export const CommonTelemetryEvents = {\n Error: \"uip.error\",\n} as const;\n",
|
|
87
|
+
"import { execFileSync } from \"node:child_process\";\n\nimport { catchError } from \"./catch-error\";\n\n/**\n * Read a value from the Windows registry.\n * reg utility always exist.\n * Returns an empty string on non-Windows platforms or when the key/value is missing.\n */\nexport function readRegistryValue(keyPath: string, valueName: string): string {\n if (process.platform !== \"win32\") {\n return \"\";\n }\n const [error, output] = catchError(() =>\n execFileSync(\"reg\", [\"query\", keyPath, \"/v\", valueName], {\n encoding: \"utf-8\",\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n }),\n );\n if (error) {\n return \"\";\n }\n const match = output.match(new RegExp(`${valueName}\\\\s+REG_SZ\\\\s+(.+)`));\n return match?.[1]?.trim() ?? \"\";\n}\n",
|
|
88
|
+
"import { logger } from \"../logger.js\";\nimport { readRegistryValue } from \"../registry.js\";\nimport type { ITelemetryProvider } from \"./telemetry-provider.js\";\nimport type { TelemetryProperties } from \"./telemetry-service.js\";\n\n/**\n * Telemetry provider that enriches all events with analyticsUniqueId\n * from the Windows registry and forwards them to the shared logger.\n */\nexport class LoggerTelemetryProvider implements ITelemetryProvider {\n private readonly analyticsUniqueId: string;\n\n constructor() {\n this.analyticsUniqueId = readRegistryValue(\n \"HKCU\\\\Software\\\\UiPath\",\n \"AnalyticsUniqueId\",\n );\n }\n\n private enrich(properties?: TelemetryProperties): TelemetryProperties {\n return {\n ...properties,\n ...(this.analyticsUniqueId\n ? { analyticsUniqueId: this.analyticsUniqueId }\n : {}),\n };\n }\n\n async trackEvent(\n eventName: string,\n properties?: TelemetryProperties,\n ): Promise<void> {\n logger.debug(\n formatMessage(\"Event\", eventName, this.enrich(properties)),\n );\n }\n\n async trackException(\n error: Error,\n properties?: TelemetryProperties,\n ): Promise<void> {\n logger.error(\n formatMessage(\n \"Exception\",\n error.message,\n this.enrich({\n ...properties,\n stack: error.stack,\n }),\n ),\n );\n }\n\n async trackRequest(\n name: string,\n duration: number,\n success: boolean,\n properties?: TelemetryProperties,\n ): Promise<void> {\n logger.debug(\n formatMessage(\n \"Request\",\n name,\n this.enrich({\n ...properties,\n duration: `${duration}ms`,\n success,\n }),\n ),\n );\n }\n\n async trackDependency(\n name: string,\n type: string,\n duration: number,\n success: boolean,\n properties?: TelemetryProperties,\n ): Promise<void> {\n logger.debug(\n formatMessage(\n \"Dependency\",\n name,\n this.enrich({\n ...properties,\n type,\n duration: `${duration}ms`,\n success,\n }),\n ),\n );\n }\n}\n\nfunction formatMessage(\n category: string,\n name: string,\n properties?: TelemetryProperties,\n): string {\n let message = `[Telemetry] [${category}] ${name}`;\n\n if (properties && Object.keys(properties).length > 0) {\n const propsStr = Object.entries(properties)\n .filter(([_, value]) => value !== undefined)\n .map(([key, value]) => `${key}=${value}`)\n .join(\", \");\n\n if (propsStr) {\n message += ` | ${propsStr}`;\n }\n }\n\n return message;\n}\n",
|
|
89
|
+
"import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { IContextStorage } from \"./context-storage.js\";\n\n/**\n * Node.js implementation of context storage using AsyncLocalStorage.\n * This provides proper async context propagation in Node.js environments.\n * @template TContext - The type of context to store\n */\nexport class NodeContextStorage<TContext = unknown>\n implements IContextStorage<TContext>\n{\n private readonly storage = new AsyncLocalStorage<TContext>();\n\n run<T>(context: TContext, fn: () => T): T {\n return this.storage.run(context, fn);\n }\n\n getContext(): TContext | undefined {\n return this.storage.getStore();\n }\n}\n",
|
|
90
|
+
"import type { IContextStorage } from \"./context-storage.js\";\nimport { getGlobalTelemetryProperties } from \"./global-telemetry-properties.js\";\nimport type { ITelemetryProvider } from \"./telemetry-provider.js\";\n\n/**\n * Properties that can be attached to telemetry events\n */\nexport interface TelemetryProperties {\n [key: string]: string | number | boolean | undefined;\n}\n\n/**\n * Telemetry correlation context for tracking parent-child relationships\n */\nexport interface TelemetryContext {\n /**\n * Operation ID - unique identifier for the entire operation tree\n */\n operationId: string;\n\n /**\n * Parent ID - identifier of the parent operation (for correlation)\n */\n parentId?: string;\n\n /**\n * Current operation ID - identifier for this specific operation\n */\n id: string;\n}\n\n/**\n * Interface for tracking telemetry events.\n *\n * @remarks\n * Telemetry context (operationId, parentId) is managed automatically using IContextStorage.\n * You don't need to pass context around - it's stored and retrieved automatically.\n *\n * Once a `trackRequest` is called, all subsequent telemetry operations (trackEvent,\n * trackException, trackDependencyOperation) within the same async execution context\n * will automatically include the operationId for correlation. This enables full\n * distributed tracing and operation correlation across the entire request tree.\n */\nexport interface ITelemetryService {\n /**\n * Sets the operation ID for telemetry correlation.\n * @param operationId - The operation ID to set, or undefined to clear it\n *\n * @remarks\n * This method allows setting a custom operation ID that will be used by trackRequest\n * if provided. If not set, trackRequest will generate a new operation ID automatically.\n */\n setOperationId(operationId: string | undefined): void;\n\n /**\n * Replaces the telemetry provider at runtime.\n * @param provider - The new telemetry provider to use\n *\n * @remarks\n * Useful for switching between providers (e.g. AppInsights vs Console) without\n * recreating the service. Default properties and operation context are preserved.\n */\n setProvider(provider: ITelemetryProvider): void;\n\n /**\n * Sets default properties that will be included in all telemetry entries.\n * @param properties - The default properties to set. Pass undefined to clear.\n *\n * @remarks\n * These properties are merged into every telemetry call (trackEvent, trackException,\n * trackRequest, trackDependencyOperation). Per-call properties take precedence\n * over default properties when there are key conflicts.\n */\n setDefaultProperties(properties?: TelemetryProperties): void;\n\n /**\n * Track a telemetry event\n * @param name - The name of the event\n * @param properties - Optional properties to attach to the event\n *\n * @remarks\n * If called within a trackRequest block, automatically includes operationId for correlation.\n */\n trackEvent(name: string, properties?: TelemetryProperties): void;\n\n /**\n * Track an exception\n * @param error - The error to track\n * @param properties - Optional properties to attach to the exception\n *\n * @remarks\n * If called within a trackRequest block, automatically includes operationId for correlation.\n */\n trackException(error: Error, properties?: TelemetryProperties): void;\n\n /**\n * Track a request operation (top-level operation in the dependency tree).\n * Use this for main entry point.\n *\n * @template T The return type of the function\n * @param name The request name (e.g., 'PackSolution')\n * @param fn The async function to execute and track\n * @param properties Base properties to include in telemetry\n * @returns A promise that resolves to the function result\n *\n * @remarks\n * Creates a new operation ID and tracks this as a request in Application Insights.\n * All nested trackDependencyOperation calls will be automatically correlated to this request.\n */\n trackRequest<T>(\n name: string,\n fn: () => Promise<T>,\n properties?: TelemetryProperties,\n ): Promise<T>;\n\n /**\n * Track a dependency operation (child operation in the dependency tree).\n * Use this for operations that are part of a larger request.\n *\n * @template T The return type of the function\n * @param name The dependency name\n * @param type The dependency type\n * @param fn The async function to execute and track\n * @param properties Base properties to include in telemetry\n * @returns A promise that resolves to the function result\n *\n * @remarks\n * Tracks this operation as a dependency in Application Insights, automatically correlated\n * to the parent request using the context from IContextStorage.\n */\n trackDependencyOperation<T>(\n name: string,\n type: string,\n fn: () => Promise<T>,\n properties?: TelemetryProperties,\n ): Promise<T>;\n}\n\n/**\n * TelemetryService implementation that manages context storage and orchestrates telemetry operations.\n * This service handles all common logic:\n * - Context creation and correlation (operationId, id, parentId)\n * - Duration measurement\n * - Error handling and success/failure tracking\n * - Context propagation via storage\n *\n * ITelemetryProvider implementations are simple adapters that receive pre-measured data.\n */\nexport class TelemetryService implements ITelemetryService {\n private operationId?: string;\n private defaultProperties?: TelemetryProperties;\n\n constructor(\n private telemetryProvider: ITelemetryProvider,\n private readonly contextStorage: IContextStorage<TelemetryContext>,\n ) {}\n\n /**\n * Sets the operation ID for telemetry correlation.\n * @param operationId - The operation ID to set, or undefined to clear it\n */\n setOperationId(operationId: string | undefined): void {\n this.operationId = operationId;\n }\n\n setProvider(provider: ITelemetryProvider): void {\n this.telemetryProvider = provider;\n }\n\n setDefaultProperties(properties?: TelemetryProperties): void {\n // Merge, don't replace — base properties are contributed by multiple\n // callers at different startup stages (e.g. the detected `agent` in\n // telemetryInit, then the authenticated user/tenant/org once auth\n // context is resolved). Replacing would let the later caller clobber\n // the earlier one. Passing `undefined` explicitly clears them, per the\n // ITelemetryService contract.\n this.defaultProperties =\n properties === undefined\n ? undefined\n : { ...this.defaultProperties, ...properties };\n }\n\n trackEvent(name: string, properties?: TelemetryProperties): void {\n const context = this.getCurrentContext();\n const enrichedProperties = this.enrichPropertiesWithContext(\n properties,\n context,\n );\n // Fire and forget - don't await to avoid blocking\n void this.telemetryProvider.trackEvent(name, enrichedProperties);\n }\n\n trackException(error: Error, properties?: TelemetryProperties): void {\n const context = this.getCurrentContext();\n const enrichedProperties = this.enrichPropertiesWithContext(\n properties,\n context,\n );\n // Fire and forget - don't await to avoid blocking\n void this.telemetryProvider.trackException(error, enrichedProperties);\n }\n\n async trackRequest<T>(\n name: string,\n fn: () => Promise<T>,\n properties?: TelemetryProperties,\n ): Promise<T> {\n const context: TelemetryContext = {\n operationId: this.operationId ?? this.generateId(),\n id: this.generateId(),\n };\n\n const startTime = performance.now();\n\n try {\n // Store context in storage and execute user function\n const result = await this.contextStorage.run(context, fn);\n const durationMs = performance.now() - startTime;\n\n // Track successful request with measured duration\n const enrichedProperties = this.enrichPropertiesWithContext(\n properties,\n context,\n );\n await this.telemetryProvider.trackRequest(\n name,\n durationMs,\n true,\n enrichedProperties,\n );\n\n return result;\n } catch (error) {\n const durationMs = performance.now() - startTime;\n const err =\n error instanceof Error ? error : new Error(String(error));\n\n // Track failed request with error details\n const enrichedProperties = this.enrichPropertiesWithContext(\n { ...properties, errorMessage: err.message },\n context,\n );\n await this.telemetryProvider.trackRequest(\n name,\n durationMs,\n false,\n enrichedProperties,\n );\n\n throw error;\n }\n }\n\n async trackDependencyOperation<T>(\n name: string,\n type: string,\n fn: () => Promise<T>,\n properties?: TelemetryProperties,\n ): Promise<T> {\n const parentContext = this.getCurrentContext();\n if (!parentContext) {\n throw new Error(\n \"trackDependencyOperation must be called within a trackRequest block.\",\n );\n }\n\n const childContext: TelemetryContext = {\n operationId: parentContext.operationId,\n parentId: parentContext.id,\n id: this.generateId(),\n };\n\n const startTime = performance.now();\n\n try {\n // Store child context in storage and execute user function\n const result = await this.contextStorage.run(childContext, fn);\n const durationMs = performance.now() - startTime;\n\n // Track successful dependency with measured duration\n const enrichedProperties = this.enrichPropertiesWithContext(\n properties,\n childContext,\n );\n await this.telemetryProvider.trackDependency(\n name,\n type,\n durationMs,\n true,\n enrichedProperties,\n );\n\n return result;\n } catch (error) {\n const durationMs = performance.now() - startTime;\n const err =\n error instanceof Error ? error : new Error(String(error));\n\n // Track failed dependency with error details\n const enrichedProperties = this.enrichPropertiesWithContext(\n { ...properties, errorMessage: err.message },\n childContext,\n );\n await this.telemetryProvider.trackDependency(\n name,\n type,\n durationMs,\n false,\n enrichedProperties,\n );\n\n throw error;\n }\n }\n\n /**\n * Gets the current telemetry context from the context storage.\n * Returns undefined if no context is available (not within a trackRequest block).\n */\n private getCurrentContext(): TelemetryContext | undefined {\n return this.contextStorage.getContext();\n }\n\n /**\n * Enriches properties with the shared base properties, this service's\n * default properties, and context information (operationId, parentId, id).\n *\n * The global base properties (app version, detected agent, authenticated\n * user/tenant/org) are merged here — at the service level — rather than\n * inside a specific provider, so EVERY event carries them regardless of\n * which provider is active (AppInsights, logger fallback, or a tool\n * bundle's early local instance). Precedence, lowest to highest: global\n * base props → per-service defaults → per-call props → correlation context.\n */\n private enrichPropertiesWithContext(\n properties?: TelemetryProperties,\n context?: TelemetryContext,\n ): TelemetryProperties {\n return {\n ...getGlobalTelemetryProperties(),\n ...this.defaultProperties,\n ...properties,\n ...context,\n };\n }\n\n /**\n * Generate a unique ID for telemetry correlation\n */\n private generateId(): string {\n return crypto.randomUUID().replaceAll(\"-\", \"\");\n }\n}\n",
|
|
91
|
+
"import { catchError } from \"../catch-error.js\";\nimport { logger } from \"../logger.js\";\nimport { singleton } from \"../singleton.js\";\nimport { getGlobalTelemetryProperties } from \"./global-telemetry-properties.js\";\nimport type { ITelemetryProvider } from \"./telemetry-provider.js\";\nimport type { TelemetryProperties } from \"./telemetry-service.js\";\n\n// Re-exported for backward compatibility — the global base-property slot now\n// lives in ./global-telemetry-properties.js so TelemetryService can merge it\n// without importing this AppInsights-specific module (avoids a cycle).\nexport {\n getGlobalTelemetryProperties,\n setGlobalTelemetryProperties,\n} from \"./global-telemetry-properties.js\";\n\n// Single shared provider instance. Uses singleton directly because\n// getOrCreateProvider() has custom async/Promise deduplication logic.\nconst providerSlot = singleton<\n | NodeAppInsightsTelemetryProvider\n | Promise<NodeAppInsightsTelemetryProvider | undefined>\n | undefined\n>(\"TelemetryProvider\");\n\nconst APPINSIGHTS_BATCH_INTERVAL_MS = 1_000;\n\n/**\n * AppInsights' trackRequest validates `url` as an absolute URL. The CLI passes\n * operation identifiers like 'ProjectPackager.Tool.Pack' (not http URLs) which\n * causes a TypeError to be thrown to stderr. Wrap in a `urn:` scheme so URL\n * parsing succeeds without changing the displayed name.\n */\nfunction toOperationUrn(name: string): string {\n if (URL.canParse(name)) return name;\n // urn:uip:<name> — RFC 8141 conformant URN\n const sanitized = encodeURIComponent(name).replace(/%2F/g, \"/\");\n return `urn:uip:${sanitized}`;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\";\n}\n\nfunction formatFlushJsonError(error: unknown): string {\n if (error instanceof Error) return error.message;\n if (typeof error === \"string\") return error;\n if (!isRecord(error)) return String(error);\n\n const parts: string[] = [];\n if (error.index !== undefined) {\n parts.push(`index ${String(error.index)}`);\n }\n if (error.statusCode !== undefined) {\n parts.push(`status ${String(error.statusCode)}`);\n }\n if (error.message !== undefined) {\n parts.push(String(error.message));\n }\n\n return parts.length > 0 ? parts.join(\": \") : JSON.stringify(error);\n}\n\nfunction stripAppInsightsDumpStack(response: string): string {\n return response\n .replace(/stack:\\s*(['\"`])[\\s\\S]*?\\1\\s*,?\\s*/g, \"\")\n .replace(/^\\[object Error\\]\\s*/, \"\")\n .trim();\n}\n\nfunction extractAppInsightsDumpMessage(response: string): string | undefined {\n if (!response.startsWith(\"[object Error]\")) return undefined;\n\n const messageMatch = response.match(/\\bmessage:\\s*(['\"`])([\\s\\S]*?)\\1/);\n if (messageMatch?.[2]) return messageMatch[2];\n\n const normalizedDiagnostic = stripAppInsightsDumpStack(response);\n if (normalizedDiagnostic && normalizedDiagnostic !== \"{}\") {\n return normalizedDiagnostic;\n }\n\n const stackLineMatch = response.match(/Error:\\s*[^\\\\\\n\\r']+/);\n return stackLineMatch?.[0] ?? response;\n}\n\nfunction normalizeFlushCallbackError(response: unknown): string | undefined {\n if (response === undefined || response === null) return undefined;\n if (response instanceof Error) return response.message;\n\n const text = String(response).trim();\n if (!text) return undefined;\n if (text.toLowerCase().includes(\"no data to send\")) return undefined;\n\n const [parseError, parsed] = catchError(() => JSON.parse(text) as unknown);\n if (!parseError) {\n const errors = isRecord(parsed) ? parsed.errors : undefined;\n if (Array.isArray(errors) && errors.length > 0) {\n return errors.map(formatFlushJsonError).join(\"; \");\n }\n return undefined;\n }\n\n return extractAppInsightsDumpMessage(text) ?? text;\n}\n\n/** Minimal contract for the ApplicationInsights v2.x TelemetryClient. */\ninterface AppInsightsClient {\n trackEvent(envelope: {\n name: string;\n properties?: Record<string, string>;\n }): void;\n trackException(envelope: {\n exception: Error;\n properties?: Record<string, string>;\n }): void;\n trackRequest(envelope: {\n name: string;\n url: string;\n duration: number;\n resultCode: string;\n success: boolean;\n properties?: Record<string, string>;\n }): void;\n trackDependency(envelope: {\n name: string;\n dependencyTypeName: string;\n duration: number;\n resultCode: string;\n success: boolean;\n properties?: Record<string, string>;\n }): void;\n flush(options?: {\n isAppCrashing?: boolean;\n callback?: (v?: unknown) => void;\n }): void;\n context: {\n tags: Record<string, string>;\n keys: { sessionId: string; applicationVersion: string };\n };\n config?: {\n maxBatchIntervalMs?: number;\n disableStatsbeat?: boolean;\n };\n getStatsbeat?(): { enable(isEnabled: boolean): void } | undefined;\n}\n\nfunction setDefaultAppInsightsEnv(name: string, value: string): void {\n if (process.env[name] === undefined) {\n process.env[name] = value;\n }\n}\n\nfunction configureAppInsightsEnvironment(): void {\n setDefaultAppInsightsEnv(\"APPLICATION_INSIGHTS_DISABLE_WARNING_LOGS\", \"1\");\n setDefaultAppInsightsEnv(\"APPLICATION_INSIGHTS_NO_STATSBEAT\", \"1\");\n setDefaultAppInsightsEnv(\n \"APPLICATION_INSIGHTS_NO_HTTP_AGENT_KEEP_ALIVE\",\n \"1\",\n );\n setDefaultAppInsightsEnv(\"APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL\", \"1\");\n}\n\n/**\n * Dynamically import the `applicationinsights` package.\n * Returns undefined if the package is not installed (e.g. in tool packages\n * that don't ship with AppInsights).\n */\nasync function loadApplicationInsights(): Promise<\n typeof import(\"applicationinsights\") | undefined\n> {\n // Temporarily clear DEBUG so the npm `debug` package (used by\n // applicationinsights transitive deps like require-in-the-middle\n // and @azure/*) does not flood stderr with trace output.\n const savedDebug = process.env.DEBUG;\n delete process.env.DEBUG;\n // Silence the SDK's internal warning logger (e.g. \"Sender Ingestion\n // endpoint could not be reached\") so transport failures don't leak\n // to stderr. The flag is captured at module load, so it must be set\n // before the dynamic import below. Respect an explicit user override.\n configureAppInsightsEnvironment();\n const [error, mod] = await catchError(import(\"applicationinsights\"));\n if (savedDebug !== undefined) {\n process.env.DEBUG = savedDebug;\n }\n if (error) {\n logger.warn(\n `[Telemetry] applicationinsights package not available: ${error.message}. Telemetry will use logger fallback.`,\n );\n return undefined;\n }\n return mod;\n}\n\nfunction configureAppInsightsClient(client: AppInsightsClient): void {\n if (client.config) {\n client.config.maxBatchIntervalMs = Math.min(\n client.config.maxBatchIntervalMs ?? APPINSIGHTS_BATCH_INTERVAL_MS,\n APPINSIGHTS_BATCH_INTERVAL_MS,\n );\n client.config.disableStatsbeat = true;\n }\n\n const [statsbeatError] = catchError(() =>\n client.getStatsbeat?.()?.enable(false),\n );\n if (statsbeatError) {\n logger.debug(\"[AppInsights] failed to disable Statsbeat\");\n }\n}\n\n/**\n * Node.js Application Insights telemetry provider.\n * Uses the `applicationinsights` Node SDK (not the browser SDK).\n *\n * The provider is created asynchronously because `applicationinsights` is\n * loaded via dynamic import — it may not be installed in all packages.\n */\nexport class NodeAppInsightsTelemetryProvider implements ITelemetryProvider {\n private client: AppInsightsClient | undefined;\n private appInsightsModule: typeof import(\"applicationinsights\") | undefined;\n private readonly _sessionId: string;\n private initialized = false;\n\n constructor(private readonly connectionString: string) {\n this._sessionId = crypto.randomUUID();\n }\n\n /**\n * Initialize the provider by dynamically importing applicationinsights.\n * Returns false if the package is not available.\n */\n async initialize(): Promise<boolean> {\n if (this.initialized) return true;\n const mod = await loadApplicationInsights();\n if (!mod) return false;\n this.appInsightsModule = mod;\n logger.debug(\n \"[AppInsights] NodeAppInsightsTelemetryProvider initialized\",\n );\n const client = new mod.TelemetryClient(this.connectionString);\n client.context.tags[client.context.keys.sessionId] = this._sessionId;\n this.client = client as AppInsightsClient;\n configureAppInsightsClient(this.client);\n this.initialized = true;\n return true;\n }\n\n getSessionId(): string {\n return this._sessionId;\n }\n\n /**\n * Set the Application Version context tag (`ai.application.ver`).\n * Must be called after {@link initialize}.\n */\n setApplicationVersion(version: string): void {\n if (!this.client) return;\n this.client.context.tags[this.client.context.keys.applicationVersion] =\n version;\n }\n\n /**\n * Merge global default properties with per-call properties.\n * Per-call properties take precedence over global defaults.\n */\n private mergeProperties(\n properties?: TelemetryProperties,\n ): Record<string, string> | undefined {\n const globalProps = getGlobalTelemetryProperties();\n if (!globalProps && !properties) return undefined;\n return {\n ...globalProps,\n ...properties,\n } as Record<string, string>;\n }\n\n async trackEvent(\n eventName: string,\n properties?: TelemetryProperties,\n ): Promise<void> {\n const client = this.client;\n if (!client) return;\n const merged = this.mergeProperties(properties);\n // applicationinsights may fail if initialization was incomplete\n const [error] = catchError(() =>\n client.trackEvent({\n name: eventName,\n properties: merged,\n }),\n );\n if (error) {\n logger.debug(`[AppInsights] trackEvent failed for: ${eventName}`);\n }\n }\n\n async trackException(\n error: Error,\n properties?: TelemetryProperties,\n ): Promise<void> {\n const client = this.client;\n if (!client) return;\n const merged = this.mergeProperties(properties);\n const [trackError] = catchError(() =>\n client.trackException({\n exception: error,\n properties: merged,\n }),\n );\n if (trackError) {\n logger.debug(\n `[AppInsights] trackException failed for: ${error.message}`,\n );\n }\n }\n\n async trackRequest(\n name: string,\n duration: number,\n success: boolean,\n properties?: TelemetryProperties,\n ): Promise<void> {\n const client = this.client;\n if (!client) return;\n const merged = this.mergeProperties(properties);\n const [trackError] = catchError(() =>\n client.trackRequest({\n name,\n // Wrap the operation name in a urn: scheme so AppInsights URL\n // validation doesn't throw TypeError when name is a dot-separated\n // identifier like 'ProjectPackager.Tool.Pack' (not an http URL).\n url: toOperationUrn(name),\n duration,\n resultCode: success ? \"200\" : \"500\",\n success,\n properties: merged,\n }),\n );\n if (trackError) {\n logger.debug(`[AppInsights] trackRequest failed for: ${name}`);\n }\n }\n\n async trackDependency(\n name: string,\n type: string,\n duration: number,\n success: boolean,\n properties?: TelemetryProperties,\n ): Promise<void> {\n const client = this.client;\n if (!client) return;\n const merged = this.mergeProperties(properties);\n client.trackDependency({\n name,\n dependencyTypeName: type,\n duration,\n resultCode: success ? \"200\" : \"500\",\n success,\n properties: merged,\n });\n }\n\n async flush(): Promise<void> {\n const client = this.client;\n if (!client) {\n logger.debug(\"[AppInsights] flush skipped: no client\");\n return;\n }\n const [error] = await catchError(\n new Promise<void>((resolve, reject) => {\n client.flush({\n callback: (response) => {\n const errorMessage =\n normalizeFlushCallbackError(response);\n if (errorMessage === undefined) {\n resolve();\n return;\n }\n reject(new Error(errorMessage));\n },\n });\n }),\n );\n if (error) {\n logger.warn(\n `[AppInsights] flush error (non-fatal): ${error.message}`,\n );\n }\n }\n\n /**\n * Dispose the Application Insights SDK so its internal channels,\n * keep-alive sockets, and timers are closed — allowing the Node.js\n * event loop to drain and the process to exit naturally.\n *\n * IMPORTANT: The caller must NOT call `process.exit()` after this.\n * On Windows, forcing exit while libuv handles from the preceding\n * `flush()` are still closing triggers\n * `!(handle->flags & UV_HANDLE_CLOSING)` in `uv_async_send`.\n * Instead, set `process.exitCode` and let the loop drain.\n */\n async shutdown(): Promise<void> {\n const client = this.client;\n if (client) {\n const [statsbeatError] = catchError(() =>\n client.getStatsbeat?.()?.enable(false),\n );\n if (statsbeatError) {\n logger.debug(\"[AppInsights] failed to shut down Statsbeat\");\n }\n }\n const appInsights = this.appInsightsModule;\n if (appInsights) {\n const [err] = catchError(() => appInsights.dispose());\n if (err) {\n logger.warn(\n `[AppInsights] shutdown error (non-fatal): ${err.message}`,\n );\n }\n }\n this.client = undefined;\n this.appInsightsModule = undefined;\n this.initialized = false;\n }\n}\n\n/**\n * Get or create the single shared provider instance.\n * The first call creates the provider and stores it on globalThis;\n * subsequent calls (from other bundled copies) return the same instance.\n *\n * Now async — must be awaited. Returns undefined if applicationinsights\n * is not installed. Stores the init promise on globalThis to prevent\n * concurrent callers from creating duplicate providers.\n */\nexport async function getOrCreateProvider(\n connectionString: string,\n): Promise<NodeAppInsightsTelemetryProvider | undefined> {\n const existing = providerSlot.get();\n\n // If a resolved provider already exists, return it immediately.\n // Cannot use instanceof here — each bundle has its own class definition.\n // Use a duck-type check on the flush method instead.\n if (\n existing &&\n typeof existing === \"object\" &&\n \"flush\" in existing &&\n typeof (existing as unknown as Record<string, unknown>).flush ===\n \"function\"\n ) {\n return existing as NodeAppInsightsTelemetryProvider;\n }\n\n // If another caller is already initializing, await the same promise.\n if (existing instanceof Promise) {\n return existing as Promise<\n NodeAppInsightsTelemetryProvider | undefined\n >;\n }\n\n // First caller — store the init promise to prevent duplicate work.\n const initPromise = (async () => {\n const provider = new NodeAppInsightsTelemetryProvider(connectionString);\n const ok = await provider.initialize();\n if (!ok) {\n providerSlot.clear();\n return undefined;\n }\n providerSlot.set(provider);\n return provider;\n })();\n\n providerSlot.set(initPromise);\n return initPromise;\n}\n",
|
|
92
|
+
"import { catchError } from \"../catch-error.js\";\nimport { logger } from \"../logger.js\";\nimport { singleton } from \"../singleton.js\";\nimport { LoggerTelemetryProvider } from \"./logger-telemetry-provider.js\";\nimport type {\n ITelemetryProvider,\n ITelemetryService,\n TelemetryContext,\n} from \"./node.js\";\nimport { NodeContextStorage, TelemetryService } from \"./node.js\";\nimport {\n getOrCreateProvider,\n type NodeAppInsightsTelemetryProvider,\n setGlobalTelemetryProperties,\n} from \"./node-appinsights-telemetry-provider.js\";\nimport { isTelemetryDisabled } from \"./telemetry-config.js\";\n\n// Store the TelemetryService instance on globalThis so tool bundles can\n// reuse the same instance that the CLI initialized (with AppInsights).\nconst telemetryInstanceSlot = singleton<ITelemetryService | undefined>(\n \"TelemetryService\",\n);\n\n// atob() is available in both Node.js (>=16) and browsers — no Buffer import needed.\nconst DEFAULT_AI_CONNECTION_STRING = atob(\n \"SW5zdHJ1bWVudGF0aW9uS2V5PTliZDM3NDgyLTgxMGUtNDQyYS1hYWE2LWQzOGVmNjVjNjY3NDtJbmdlc3Rpb25FbmRwb2ludD1odHRwczovL3dlc3RldXJvcGUtNS5pbi5hcHBsaWNhdGlvbmluc2lnaHRzLmF6dXJlLmNvbS87TGl2ZUVuZHBvaW50PWh0dHBzOi8vd2VzdGV1cm9wZS5saXZlZGlhZ25vc3RpY3MubW9uaXRvci5henVyZS5jb20vO0FwcGxpY2F0aW9uSWQ9MzU2OTdlZjEtOGJkMC00ZjE5LWEyN2MtZDg3Y2NhYzY2ZDJj\",\n);\n\n/**\n * Get the Application Insights connection string.\n * Uses UIPATH_AI_CONNECTION_STRING env var if set, otherwise the default.\n */\nfunction getConnectionString(): string {\n return (\n process.env.UIPATH_AI_CONNECTION_STRING || DEFAULT_AI_CONNECTION_STRING\n );\n}\n\n/**\n * Create or retrieve the shared Node.js Application Insights telemetry provider.\n * Uses globalThis to ensure all bundled copies share a single TelemetryClient.\n * Returns undefined if the applicationinsights package is not installed.\n */\nexport async function createAppInsightsProvider(): Promise<\n NodeAppInsightsTelemetryProvider | undefined\n> {\n return getOrCreateProvider(getConnectionString());\n}\n\n// Re-exported so `@uipath/common`'s public API (via `index.ts`) keeps exposing\n// `isTelemetryDisabled` from here. The implementation lives in the browser-safe\n// `telemetry-config.js` module.\nexport { isTelemetryDisabled } from \"./telemetry-config.js\";\n\ninterface TelemetryProviderResult {\n provider: ITelemetryProvider;\n name: string;\n}\n\ninterface FlushableTelemetryProvider extends ITelemetryProvider {\n flush(): Promise<void>;\n shutdown(): Promise<void>;\n}\n\n// The active provider instance, tracked explicitly for flush/shutdown.\nlet telemetryProviderInstance: ITelemetryProvider | undefined;\nlet telemetryFlushShutdownPromise: Promise<void> | undefined;\n\n/**\n * Create the default telemetry provider (async).\n * Uses Application Insights (Node SDK) by default, falls back to\n * LoggerTelemetryProvider if telemetry is disabled, initialization\n * fails, or the applicationinsights package is not installed.\n *\n * Returns both the provider and its name so callers can log which\n * provider was selected without relying on module-level mutable state.\n */\nexport async function createTelemetryProvider(): Promise<TelemetryProviderResult> {\n telemetryFlushShutdownPromise = undefined;\n if (isTelemetryDisabled()) {\n const fallback = new LoggerTelemetryProvider();\n telemetryProviderInstance = fallback;\n return { provider: fallback, name: \"Disabled\" };\n }\n const [error, provider] = await catchError(createAppInsightsProvider());\n if (error) {\n logger.warn(\n `[Telemetry] AppInsights provider failed: ${error.message}. Falling back to logger.`,\n );\n }\n if (error || !provider) {\n const fallback = new LoggerTelemetryProvider();\n telemetryProviderInstance = fallback;\n return { provider: fallback, name: \"LoggerTelemetryProvider\" };\n }\n telemetryProviderInstance = provider;\n return { provider, name: \"NodeAppInsightsTelemetryProvider\" };\n}\n\n/**\n * Get the shared TelemetryService instance from globalThis.\n * This allows tool bundles (which don't have applicationinsights) to\n * reuse the instance that the CLI already initialized with AppInsights.\n */\nfunction getGlobalTelemetryInstance(): ITelemetryService | undefined {\n const existing = telemetryInstanceSlot.get();\n if (\n existing &&\n typeof existing === \"object\" &&\n \"trackEvent\" in existing &&\n typeof (existing as unknown as Record<string, unknown>).trackEvent ===\n \"function\"\n ) {\n return existing as ITelemetryService;\n }\n return undefined;\n}\n\nfunction setGlobalTelemetryInstance(instance: ITelemetryService): void {\n telemetryInstanceSlot.set(instance);\n}\n\n// Lazy initialization — the TelemetryService and its provider are only\n// created on first method call, avoiding heavy Application Insights\n// setup at import time (which blocks tests and unused code paths).\nlet _localTelemetryInstance: ITelemetryService | undefined;\n\n/**\n * Synchronously get a TelemetryService instance.\n *\n * 1. First checks globalThis — if the CLI already initialized AppInsights,\n * tool bundles reuse that instance without needing applicationinsights.\n * 2. Falls back to a local LoggerTelemetryProvider-based instance.\n *\n * The async `telemetryInit()` (called by CLI) replaces this with the real\n * AppInsights-backed instance.\n */\nfunction getTelemetryInstance(): ITelemetryService {\n // Prefer the global instance (set by CLI via telemetryInit)\n const global = getGlobalTelemetryInstance();\n if (global) return global;\n\n // Local fallback for tool bundles loaded before CLI init,\n // or when running without the CLI (e.g. standalone tool tests).\n if (!_localTelemetryInstance) {\n _localTelemetryInstance = new TelemetryService(\n new LoggerTelemetryProvider(),\n new NodeContextStorage<TelemetryContext>(),\n );\n }\n return _localTelemetryInstance;\n}\n\nexport const telemetry = new Proxy({} as ITelemetryService, {\n get(_, prop) {\n const instance = getTelemetryInstance();\n const value = (instance as unknown as Record<string | symbol, unknown>)[\n prop\n ];\n return typeof value === \"function\" ? value.bind(instance) : value;\n },\n});\n\nexport interface TelemetryInitOptions {\n /** Application version — sets the standard `ai.application.ver` context tag. */\n version?: string;\n /** Custom dimensions added to every telemetry event. */\n defaultProperties?: Record<string, string>;\n}\n\n/**\n * Initialize telemetry with default properties.\n * Call after logger is configured (e.g. after --log-file is processed).\n *\n * This is async — it awaits the dynamic import of applicationinsights.\n * Must be awaited to ensure the correct provider is selected before\n * telemetry events are tracked.\n *\n * The resulting TelemetryService instance is stored on globalThis so that\n * tool bundles (which don't ship applicationinsights) can reuse it.\n */\nexport async function telemetryInit(\n options?: TelemetryInitOptions,\n): Promise<void> {\n const { provider, name: providerName } = await createTelemetryProvider();\n const instance = new TelemetryService(\n provider,\n new NodeContextStorage<TelemetryContext>(),\n );\n // Store on globalThis so tool bundles can find it via the proxy.\n setGlobalTelemetryInstance(instance);\n _localTelemetryInstance = instance;\n\n const isAppInsights = providerName === \"NodeAppInsightsTelemetryProvider\";\n\n if (options?.version && isAppInsights) {\n (provider as NodeAppInsightsTelemetryProvider).setApplicationVersion(\n options.version,\n );\n }\n\n if (options?.defaultProperties) {\n setGlobalTelemetryProperties(options.defaultProperties);\n telemetry.setDefaultProperties(options.defaultProperties);\n }\n if (!isAppInsights) {\n logger.debug(\n `[Telemetry] initialized with fallback provider (${providerName}). applicationinsights package not available.`,\n );\n }\n}\n\nconst FLUSH_SHUTDOWN_TIMEOUT_MS = 1_000;\n\nfunction isFlushableTelemetryProvider(\n provider: ITelemetryProvider | undefined,\n): provider is FlushableTelemetryProvider {\n return (\n provider !== undefined &&\n \"flush\" in provider &&\n typeof (provider as unknown as Record<string, unknown>).flush ===\n \"function\" &&\n \"shutdown\" in provider &&\n typeof (provider as unknown as Record<string, unknown>).shutdown ===\n \"function\"\n );\n}\n\nasync function runWithTimeout(\n operation: Promise<void>,\n timeoutMs: number,\n): Promise<\"done\" | \"timeout\"> {\n let timer: ReturnType<typeof setTimeout> | undefined;\n try {\n const timeout = new Promise<\"timeout\">((resolve) => {\n timer = setTimeout(() => resolve(\"timeout\"), timeoutMs);\n });\n\n return await Promise.race([\n operation.then(() => \"done\" as const),\n timeout,\n ]);\n } finally {\n if (timer) clearTimeout(timer);\n }\n}\n\n/**\n * Flush all buffered telemetry to the cloud.\n * Must be awaited before the process exits to ensure delivery.\n * Capped at FLUSH_SHUTDOWN_TIMEOUT_MS to avoid hanging on slow/unreachable endpoints.\n */\nexport async function telemetryFlushAndShutdown(): Promise<void> {\n if (!isFlushableTelemetryProvider(telemetryProviderInstance)) {\n return;\n }\n if (!telemetryFlushShutdownPromise) {\n const provider = telemetryProviderInstance;\n telemetryFlushShutdownPromise = (async () => {\n const [flushError, flushResult] = await catchError(\n runWithTimeout(provider.flush(), FLUSH_SHUTDOWN_TIMEOUT_MS),\n );\n if (flushError) {\n logger.warn(\n `[Telemetry] flush failed (non-fatal): ${flushError.message}`,\n );\n } else if (flushResult === \"timeout\") {\n logger.warn(\n `[Telemetry] flush timed out after ${FLUSH_SHUTDOWN_TIMEOUT_MS}ms`,\n );\n }\n\n const [shutdownError, shutdownResult] = await catchError(\n runWithTimeout(provider.shutdown(), FLUSH_SHUTDOWN_TIMEOUT_MS),\n );\n if (shutdownError) {\n logger.warn(\n `[Telemetry] shutdown failed (non-fatal): ${shutdownError.message}`,\n );\n } else if (shutdownResult === \"timeout\") {\n logger.warn(\n `[Telemetry] shutdown timed out after ${FLUSH_SHUTDOWN_TIMEOUT_MS}ms`,\n );\n }\n })();\n }\n await telemetryFlushShutdownPromise;\n}\n",
|
|
93
|
+
"import {\n compile as jmespathCompile,\n search as jmespathSearch,\n} from \"@jmespath-community/jmespath\";\nimport * as yaml from \"js-yaml\";\n\nimport { getLogFilePath } from \"./logger\";\nimport { getOutputSink } from \"./output-context\";\nimport { getOutputFilter, getOutputFormat } from \"./output-format-context\";\nimport { CommonTelemetryEvents } from \"./telemetry/telemetry-events.js\";\nimport { telemetry } from \"./telemetry/telemetry-init.js\";\n\nexport type OutputFormat = \"table\" | \"json\" | \"yaml\" | \"plain\";\n\nexport type ResultType =\n | \"Success\"\n | \"Failure\"\n | \"ConfigError\"\n | \"AuthenticationError\"\n | \"ValidationError\"\n | \"TimeoutError\";\n\nexport type FailureResultType = Exclude<ResultType, \"Success\">;\n\nexport const CLI_ERROR_CODES = [\n \"invalid_argument\",\n \"authentication_required\",\n \"permission_denied\",\n \"not_found\",\n \"rate_limited\",\n \"network_error\",\n \"timeout\",\n \"server_error\",\n \"method_not_allowed\",\n \"configuration_error\",\n \"unknown_error\",\n] as const;\n\nexport type CliErrorCode = (typeof CLI_ERROR_CODES)[number];\n\nexport const RETRY_HINTS = [\n \"RetryWillNotFix\",\n \"RetryLater\",\n \"RetryAfter1Second\",\n \"RetryAfter10Seconds\",\n \"RetryAfter30Seconds\",\n \"RetryAfter60Seconds\",\n] as const;\n\nexport type RetryHint = (typeof RETRY_HINTS)[number];\n\n/** Canonical string constants for {@link ResultType} values. */\nexport const RESULTS = {\n Success: \"Success\",\n Failure: \"Failure\",\n ConfigError: \"ConfigError\",\n AuthenticationError: \"AuthenticationError\",\n ValidationError: \"ValidationError\",\n /** Reserved — no code path emits this yet; here so the exit-code contract is stable. */\n TimeoutError: \"TimeoutError\",\n} as const satisfies Record<ResultType, ResultType>;\n\n/**\n * Maps each {@link ResultType} to a numeric process exit code.\n *\n * | Code | Meaning |\n * |------|--------------------------------|\n * | 0 | Success |\n * | 1 | Failure / ConfigError (generic)|\n * | 2 | AuthenticationError |\n * | 3 | ValidationError |\n * | 4 | TimeoutError |\n */\nexport const EXIT_CODES = {\n Success: 0,\n Failure: 1,\n ConfigError: 1,\n AuthenticationError: 2,\n ValidationError: 3,\n TimeoutError: 4,\n} as const satisfies Record<ResultType, number>;\n\n/** Widened record type that accepts interface types (which lack an implicit\n * index signature in TypeScript) while still representing keyed objects. */\nexport type DataRecord =\n | Record<string, unknown>\n | (object & Record<never, never>);\n\nexport class Pagination {\n Returned: number;\n Limit: number;\n Offset: number;\n Total?: number;\n HasMore: boolean;\n\n constructor({\n returned,\n limit,\n offset,\n total,\n }: { returned: number; limit: number; offset: number; total?: number }) {\n this.Returned = returned;\n this.Limit = limit;\n this.Offset = offset;\n this.Total = total;\n this.HasMore =\n total === undefined\n ? returned === limit\n : offset + returned < total;\n }\n}\n\nexport class SuccessOutput {\n Result: \"Success\" = RESULTS.Success;\n Code: string;\n Data: DataRecord | DataRecord[];\n Pagination?: Pagination;\n Instructions?: string;\n Log?: string;\n\n constructor(code: string, data: DataRecord | DataRecord[]) {\n this.Code = code;\n this.Data = data;\n const logPath = getLogFilePath();\n if (logPath) {\n this.Log = logPath;\n }\n }\n}\n\nexport interface ErrorContext {\n httpStatus?: number;\n errorCode?: string;\n requestId?: string;\n retryAfter?: number;\n /** Pipeline stage label (e.g. \"begin-debug-session\", \"create-debug-instance\")\n * identifying *which step* of a multi-stage command failed. Lets agents\n * decide retry vs. report without parsing free-text messages. */\n stage?: string;\n /** Backend endpoint path (e.g. \"/api/v1/debug-instances\") relative to the\n * service root. Combined with {@link method}, uniquely identifies the\n * failing API call. */\n endpoint?: string;\n /** HTTP method of the failing request (e.g. \"POST\", \"GET\"). */\n method?: string;\n /** Distributed-tracing id parsed from the backend error body when present. */\n traceId?: string;\n}\n\nexport class FailureOutput {\n Result: FailureResultType;\n Code?: string;\n ErrorCode?: CliErrorCode;\n Message: string;\n Instructions: string;\n Retry?: RetryHint;\n Context?: ErrorContext;\n Log?: string;\n /**\n * Optional structured payload for failure envelopes that need to carry\n * actionable detail beyond the Message string (e.g. JobKey + JobState\n * + SubState for the `jobs start --wait-for-completion` failure path).\n * Mirrors SuccessOutput.Data so consumers can use a single accessor\n * across success / failure paths.\n */\n Data?: DataRecord | DataRecord[];\n /**\n * Print the error and set the exit code, but don't emit the `uip.error`\n * telemetry event — rate-limits high-frequency identical failures (e.g. a\n * stuck auth-refresh loop). Stripped before the envelope is rendered.\n */\n SuppressTelemetry?: boolean;\n\n constructor(\n result: FailureResultType,\n message: string,\n instructions: string,\n context?: ErrorContext,\n errorCode?: CliErrorCode,\n retry?: RetryHint,\n ) {\n this.Result = result;\n this.Message = message;\n this.Instructions = instructions;\n if (errorCode) {\n this.ErrorCode = errorCode;\n }\n if (retry) {\n this.Retry = retry;\n }\n if (context) {\n this.Context = context;\n }\n const logPath = getLogFilePath();\n if (logPath) {\n this.Log = logPath;\n }\n }\n}\n\nexport type StructuredOutput = SuccessOutput | FailureOutput;\n\n/**\n * Escape every non-ASCII codepoint in a JSON-encoded string as `\\uXXXX`.\n *\n * Why: on Windows, when stdout is piped (not a TTY), Node writes raw UTF-8\n * bytes which PowerShell decodes using `[Console]::OutputEncoding` (cp 437 /\n * Shift_JIS / Windows-1252). Non-ASCII bytes get re-decoded incorrectly,\n * producing mojibake AND structurally invalid JSON (a stray byte from a\n * multi-byte UTF-8 sequence collides with the closing quote). Emitting pure\n * ASCII via `\\uXXXX` escapes — valid JSON per the spec — survives every\n * code page intact; `JSON.parse` / `ConvertFrom-Json` etc. all un-escape\n * correctly. Surrogate pairs (non-BMP codepoints) emit two escapes, which\n * JSON parsers reconstruct.\n *\n * Linux and macOS consumers read pipe bytes as UTF-8 by default, so this\n * escape is only applied on Windows (see `needsAsciiSafeJson`).\n */\nfunction escapeNonAscii(jsonText: string): string {\n return jsonText.replace(/[\\u0080-\\uffff]/g, (c) => {\n const hex = c.charCodeAt(0).toString(16).padStart(4, \"0\");\n return `\\\\u${hex}`;\n });\n}\n\n/**\n * Returns true when JSON output for this sink should be ASCII-escaped to\n * avoid mojibake from consumer-side code-page decoding. Only true on Windows\n * when the sink is non-interactive (piped or redirected).\n */\nfunction needsAsciiSafeJson(sink: {\n capabilities: { isInteractive: boolean };\n}): boolean {\n return process.platform === \"win32\" && !sink.capabilities.isInteractive;\n}\n\nfunction isPlainRecord(value: unknown): value is Record<string, unknown> {\n if (value === null || typeof value !== \"object\") return false;\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\n\n/**\n * Detect a paged-list envelope and return its row collection.\n *\n * A migrated list endpoint forwards its public-API page verbatim as `Data`,\n * e.g. `{ Projects: [...], Total, Offset, Limit }`. For plain/table rendering\n * the rows are the inner array, not the wrapper object — otherwise the wrapper\n * is treated as a single record and stringifies to `[object Object],…`.\n *\n * To stay key-name agnostic and avoid misfiring on single-record or\n * multi-array payloads, this only matches when `value` is a non-null,\n * non-array object with EXACTLY one array-valued property AND at least one\n * scalar sibling — a metadata key beyond the array (the pagination fields, e.g.\n * Total/Offset/Limit; the value may be null, but the key must be present).\n * Requiring a scalar sibling is what distinguishes a paged envelope from an\n * ordinary single record that merely holds one array field (e.g.\n * `{ Errors: [...] }` or `{ PolicyIds: [...] }`), which must NOT be flattened.\n * Anything else returns `null` so the caller keeps its existing behavior.\n * json/yaml never call this.\n */\nfunction extractPagedRows(value: unknown): Record<string, unknown>[] | null {\n if (Array.isArray(value) || !isPlainRecord(value)) return null;\n const entries = Object.values(value);\n if (entries.length === 0) return null;\n\n let rows: unknown[] | null = null;\n let hasScalarSibling = false;\n for (const entry of entries) {\n if (Array.isArray(entry)) {\n if (rows !== null) return null; // more than one array sibling\n rows = entry;\n } else if (entry !== null && typeof entry === \"object\") {\n return null; // a non-array object sibling — not a paged envelope\n } else {\n hasScalarSibling = true; // number / string / boolean / null metadata\n }\n }\n if (rows === null || !hasScalarSibling) return null;\n return rows as Record<string, unknown>[];\n}\n\nfunction toLowerCamelCaseKey(key: string): string {\n if (!key) return key;\n if (/[_\\-\\s]/.test(key)) {\n const [firstPart, ...restParts] = key.split(/[_\\-\\s]+/).filter(Boolean);\n if (!firstPart) return key;\n return [\n toLowerCamelCaseSimpleKey(firstPart),\n ...restParts.map((part) => {\n const normalized = toLowerCamelCaseSimpleKey(part);\n return normalized.charAt(0).toUpperCase() + normalized.slice(1);\n }),\n ].join(\"\");\n }\n return toLowerCamelCaseSimpleKey(key);\n}\n\nfunction toLowerCamelCaseSimpleKey(key: string): string {\n if (/^[A-Z0-9]+$/.test(key)) return key.toLowerCase();\n return key.replace(/^[A-Z]+(?=[A-Z][a-z]|\\d|$)|^[A-Z]/, (match) =>\n match.toLowerCase(),\n );\n}\n\nfunction toPascalCaseKey(key: string): string {\n const lowerCamelKey = toLowerCamelCaseKey(key);\n return lowerCamelKey\n ? lowerCamelKey.charAt(0).toUpperCase() + lowerCamelKey.slice(1)\n : lowerCamelKey;\n}\n\nfunction toPascalCaseData(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(toPascalCaseData);\n if (!isPlainRecord(value)) return value;\n\n const result: Record<string, unknown> = {};\n for (const [key, nestedValue] of Object.entries(value)) {\n result[toPascalCaseKey(key)] = toPascalCaseData(nestedValue);\n }\n return result;\n}\n\nfunction normalizeDataKeys(\n data: DataRecord | DataRecord[],\n): DataRecord | DataRecord[] {\n return toPascalCaseData(data) as DataRecord | DataRecord[];\n}\n\n/**\n * PascalCase the envelope's own top-level keys (`Result`, `Code`, `Data`,\n * `Message`, `Pagination`, …) WITHOUT recursing into the `Data` payload.\n *\n * The caller is the single authority for `Data`'s key casing: `success` /\n * `formatToString` have already either normalized `Data` via\n * {@link normalizeDataKeys} or — for payloads that must round-trip verbatim\n * into UiPath artifacts (e.g. `registry get` node definitions whose camelCase\n * field names are copied straight into `.flow` files) — left it untouched.\n * Recursing into `Data` here would re-PascalCase it and defeat that\n * passthrough.\n *\n * For normally-normalized `Data` this is behavior-identical to a full\n * recursion, because PascalCasing keys is idempotent.\n */\nfunction normalizeOutputKeys(data: StructuredOutput): StructuredOutput {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(data)) {\n const pascalKey = toPascalCaseKey(key);\n result[pascalKey] =\n pascalKey === \"Data\" ? value : toPascalCaseData(value);\n }\n return result as unknown as StructuredOutput;\n}\n\nfunction printOutput(\n data: StructuredOutput,\n format: OutputFormat = \"json\",\n logFn: (message: string) => void,\n asciiSafe = false,\n): void {\n if (!data) {\n logFn(\"Empty response object. No data to display.\");\n return;\n }\n\n switch (format) {\n case \"json\": {\n const json = JSON.stringify(data, null, 2);\n logFn(asciiSafe ? escapeNonAscii(json) : json);\n break;\n }\n case \"yaml\":\n logFn(toYaml(data));\n break;\n case \"plain\": {\n if (\"Data\" in data && data.Data != null) {\n const pagedRows = extractPagedRows(data.Data);\n const items =\n pagedRows ??\n (Array.isArray(data.Data) ? data.Data : [data.Data]);\n items.forEach((item) => {\n const values = Object.values(item)\n .map((v) => v ?? \"\")\n .join(\"\\t\");\n logFn(values);\n });\n } else {\n const values = Object.values(data)\n .map((v) => v ?? \"\")\n .join(\"\\t\");\n logFn(values);\n }\n break;\n }\n default: {\n const hasData = \"Data\" in data && data.Data != null;\n const pagedRows = hasData ? extractPagedRows(data.Data) : null;\n const rows: Record<string, unknown>[] | null = pagedRows\n ? pagedRows\n : Array.isArray(data.Data)\n ? (data.Data as Record<string, unknown>[])\n : null;\n if (hasData && !(rows !== null && rows.length === 0)) {\n const logValue = data.Log;\n if (rows !== null) {\n printResizableTable(rows, logFn, logValue);\n } else {\n printVerticalTable(\n data.Data as Record<string, unknown>,\n logFn,\n logValue,\n );\n }\n } else {\n printTable([{ ...data } as Record<string, unknown>], logFn);\n }\n break;\n }\n }\n}\n\nfunction logOutput(\n data: StructuredOutput,\n format: OutputFormat = \"json\",\n): void {\n const sink = getOutputSink();\n printOutput(\n data,\n format,\n (msg) => sink.writeOut(`${msg}\\n`),\n needsAsciiSafeJson(sink),\n );\n}\n\nfunction cellToString(val: unknown): string {\n return val != null && typeof val === \"object\"\n ? JSON.stringify(val)\n : String(val ?? \"\");\n}\n\nfunction wrapText(text: string, width: number): string[] {\n if (text.length <= width) return [text];\n const lines: string[] = [];\n for (let pos = 0; pos < text.length; pos += width) {\n lines.push(text.substring(pos, pos + width));\n }\n return lines;\n}\n\nfunction printTable(\n data: Record<string, unknown>[],\n logFn: (message: string) => void,\n externalLogValue?: string,\n): void {\n if (data.length === 0) return;\n\n const keys = Object.keys(data[0]).filter(\n (key) => ![\"code\", \"log\"].includes(key.toLowerCase()),\n );\n\n const maxWidths = keys.map((key) =>\n Math.max(\n key.length,\n ...data.map((item) => cellToString(item[key]).length),\n ),\n );\n\n // Header\n const header = keys.map((key, i) => key.padEnd(maxWidths[i])).join(\" | \");\n logFn(header);\n logFn(keys.map((_, i) => \"-\".repeat(maxWidths[i])).join(\"-|-\"));\n\n // Rows\n data.forEach((item) => {\n const row = keys\n .map((key, i) => cellToString(item[key]).padEnd(maxWidths[i]))\n .join(\" | \");\n logFn(row);\n });\n\n // Log file reference\n if (externalLogValue) {\n logFn(\"\");\n logFn(`Log: ${externalLogValue}`);\n }\n}\n\nfunction printVerticalTable(\n data: Record<string, unknown>,\n logFn: (message: string) => void = console.log,\n externalLogValue?: string,\n): void {\n const keys = Object.keys(data).filter(\n (key) => ![\"code\", \"log\"].includes(key.toLowerCase()),\n );\n if (keys.length === 0) return;\n\n const maxKeyWidth = Math.max(...keys.map((key) => key.length));\n\n keys.forEach((key) => {\n const keyCol = key.padEnd(maxKeyWidth);\n logFn(`${keyCol} | ${cellToString(data[key])}`);\n });\n\n if (externalLogValue) {\n logFn(\"\");\n logFn(`Log: ${externalLogValue}`);\n }\n}\n\nfunction printResizableTable(\n data: Record<string, unknown>[],\n logFn: (message: string) => void = console.log,\n externalLogValue?: string,\n): void {\n if (data.length === 0) return;\n\n const keys = Object.keys(data[0]).filter(\n (key) => ![\"code\", \"log\"].includes(key.toLowerCase()),\n );\n if (keys.length === 0) return;\n\n if (!process.stdout.isTTY) {\n printTable(data, logFn, externalLogValue);\n return;\n }\n\n const naturalWidths = keys.map((key) =>\n Math.max(\n key.length,\n ...data.map((item) => cellToString(item[key]).length),\n ),\n );\n\n const separatorTotal = (keys.length - 1) * 3; // \" | \"\n const totalWidth =\n naturalWidths.reduce((a, b) => a + b, 0) + separatorTotal;\n const termWidth = process.stdout.columns || 120;\n\n if (totalWidth <= termWidth) {\n printTable(data, logFn, externalLogValue);\n return;\n }\n\n const overflow = totalWidth - termWidth;\n const MIN_COL_WIDTH = 10;\n const minWidths = keys.map((key) => Math.max(key.length, MIN_COL_WIDTH));\n\n // Try to find the best single column to shrink — the one that causes\n // the fewest extra (continuation) rows when absorbing all the overflow.\n let bestCol = -1;\n let bestCost = Infinity;\n\n for (let i = 0; i < keys.length; i++) {\n const maxShrink = naturalWidths[i] - minWidths[i];\n if (maxShrink < overflow) continue;\n\n const newWidth = naturalWidths[i] - overflow;\n let extraRows = 0;\n for (const item of data) {\n const cellLen = cellToString(item[keys[i]]).length;\n if (cellLen > newWidth) {\n extraRows += Math.ceil(cellLen / newWidth) - 1;\n }\n }\n\n if (extraRows < bestCost) {\n bestCost = extraRows;\n bestCol = i;\n }\n }\n\n const finalWidths = [...naturalWidths];\n\n if (bestCol !== -1) {\n finalWidths[bestCol] = naturalWidths[bestCol] - overflow;\n } else {\n // No single column can absorb all overflow — shrink multiple columns,\n // starting from the one with the most shrink potential.\n let remaining = overflow;\n const colsByShrinkPotential = keys\n .map((_, i) => ({\n index: i,\n potential: naturalWidths[i] - minWidths[i],\n }))\n .filter((c) => c.potential > 0)\n .sort((a, b) => b.potential - a.potential);\n\n for (const col of colsByShrinkPotential) {\n if (remaining <= 0) break;\n const shrink = Math.min(remaining, col.potential);\n finalWidths[col.index] -= shrink;\n remaining -= shrink;\n }\n }\n\n // Header\n const header = keys.map((key, i) => key.padEnd(finalWidths[i])).join(\" | \");\n logFn(header);\n logFn(keys.map((_, i) => \"-\".repeat(finalWidths[i])).join(\"-|-\"));\n\n // Rows — each data row may produce multiple output lines when cells wrap\n data.forEach((item) => {\n const cellLines = keys.map((key, i) =>\n wrapText(cellToString(item[key]), finalWidths[i]),\n );\n const lineCount = Math.max(...cellLines.map((l) => l.length));\n\n for (let line = 0; line < lineCount; line++) {\n const row = keys\n .map((_, i) => {\n const val =\n line < cellLines[i].length ? cellLines[i][line] : \"\";\n return val.padEnd(finalWidths[i]);\n })\n .join(\" | \");\n logFn(row);\n }\n });\n\n if (externalLogValue) {\n logFn(\"\");\n logFn(`Log: ${externalLogValue}`);\n }\n}\n\nfunction toYaml(data: StructuredOutput): string {\n return yaml.dump(data);\n}\n\n/**\n * Check whether `filter` is a syntactically valid JMESPath expression.\n * Returns `null` when valid, otherwise the parser error.\n *\n * Call this at CLI startup to fail fast with a ValidationError instead of\n * letting {@link applyFilter} throw mid-command and be reported as a generic\n * Failure.\n *\n * NOTE: this is a parse-time check only. JMESPath expressions that compile\n * successfully can still throw at evaluation time (e.g. type-coercion errors\n * when functions receive unexpected types). Callers that need a fully\n * closed-box guarantee must additionally wrap {@link applyFilter}.\n */\nexport function validateOutputFilter(filter: string): Error | null {\n try {\n jmespathCompile(filter);\n return null;\n } catch (err: unknown) {\n return err instanceof Error ? err : new Error(String(err));\n }\n}\n\n/**\n * Thrown when a `--output-filter` expression parses successfully but fails at\n * evaluation time (e.g. type-coercion errors when functions receive unexpected\n * types). Carries `instructions` and `result` so {@link trackedAction} can\n * surface filter-specific guidance through the failure envelope instead of the\n * generic \"unexpected error\" fallback.\n *\n * Uses a duck-type `__brand` rather than relying on `instanceof`, because each\n * tool bundles its own copy of `@uipath/common` and class identity differs\n * across bundle boundaries.\n */\nexport class FilterEvaluationError extends Error {\n readonly __brand = \"FilterEvaluationError\" as const;\n readonly filter: string;\n readonly errorCode: CliErrorCode = \"invalid_argument\";\n readonly instructions: string;\n readonly retry: RetryHint = \"RetryWillNotFix\";\n readonly result: FailureResultType = RESULTS.ValidationError;\n\n constructor(filter: string, cause: unknown) {\n const underlying =\n cause instanceof Error ? cause.message : String(cause);\n super(`Filter '${filter}' failed to evaluate: ${underlying}`);\n this.name = \"FilterEvaluationError\";\n this.filter = filter;\n this.instructions =\n `The --output-filter expression '${filter}' failed at evaluation time. ` +\n \"Note that --output-filter operates on the 'Data' field of the envelope, not the full object. \" +\n \"For example, on a list result use 'length(@)' instead of 'Data | length(@)'.\";\n }\n}\n\nfunction applyFilter(\n data: DataRecord[] | DataRecord,\n filter: string,\n): DataRecord[] | DataRecord {\n // Cast: our records are JSON-serialisable at runtime; the recursive\n // JSONValue type from jmespath is structurally compatible but tsc\n // cannot verify the infinite nesting.\n // try/catch (not catchError) because jmespathSearch is synchronous.\n let result: unknown;\n try {\n result = jmespathSearch(\n data as Parameters<typeof jmespathSearch>[0],\n filter,\n );\n } catch (err: unknown) {\n throw new FilterEvaluationError(filter, err);\n }\n if (result == null) return [];\n if (Array.isArray(result)) {\n // If the filter projected scalar values (e.g. [*].Name → [\"a\",\"b\"]),\n // wrap each back into a keyed object so table/plain formatters work.\n if (result.length > 0 && typeof result[0] !== \"object\") {\n // Extract the trailing field name from the expression (e.g. \"[*].Name\" → \"Name\")\n const fieldMatch = filter.match(/\\.(\\w+)$/);\n const key = fieldMatch ? fieldMatch[1] : \"Value\";\n return result.map((v) => ({ [key]: v }));\n }\n return result as DataRecord[];\n }\n if (typeof result === \"object\") return result as DataRecord;\n return { Value: result };\n}\n\nfunction defaultErrorCodeForResult(result: FailureResultType): CliErrorCode {\n switch (result) {\n case RESULTS.AuthenticationError:\n return \"authentication_required\";\n case RESULTS.ConfigError:\n return \"configuration_error\";\n case RESULTS.ValidationError:\n return \"invalid_argument\";\n case RESULTS.TimeoutError:\n return \"timeout\";\n default:\n return \"unknown_error\";\n }\n}\n\nfunction defaultRetryForErrorCode(errorCode: CliErrorCode): RetryHint {\n switch (errorCode) {\n case \"network_error\":\n case \"rate_limited\":\n case \"server_error\":\n case \"timeout\":\n return \"RetryLater\";\n default:\n return \"RetryWillNotFix\";\n }\n}\n\n/**\n * OutputFormatter namespace for formatting and displaying output.\n */\nexport namespace OutputFormatter {\n /**\n * Emit a success envelope.\n *\n * By default every key in `data.Data` is normalized to PascalCase for\n * cross-command output consistency (see {@link normalizeDataKeys}).\n *\n * Pass `{ preserveDataKeys: true }` when the `Data` payload is content that\n * is copied verbatim back into a UiPath artifact and whose key casing is\n * therefore load-bearing — most notably `registry get` node definitions,\n * whose camelCase field names (`inputDefinition`, `inputString`, …) are\n * pasted straight into `.flow` files. PascalCasing those names produces a\n * flow that passes `flow validate` but faults at runtime (the agent/job\n * receives `InputString` while its schema requires `inputString`). With\n * this flag the `Data` payload keeps its original casing; the envelope\n * keys (`Result`/`Code`/`Data`/`Log`/…) are still PascalCased.\n */\n export function success(\n data: SuccessOutput,\n options?: { preserveDataKeys?: boolean },\n ): void {\n data.Log ??= getLogFilePath() || undefined;\n const normalize = !options?.preserveDataKeys;\n if (normalize) {\n data.Data = normalizeDataKeys(data.Data);\n }\n const filter = getOutputFilter();\n if (filter) {\n const filtered = applyFilter(data.Data, filter);\n data.Data = normalize ? normalizeDataKeys(filtered) : filtered;\n }\n logOutput(normalizeOutputKeys(data), getOutputFormat());\n }\n\n /**\n * Format and display an error, then set {@link process.exitCode} to the\n * value from {@link EXIT_CODES} for `data.Result` (falls back to 1).\n *\n * **Side-effect:** sets `process.exitCode` so the process exits with a\n * non-zero status even if no explicit `process.exit()` call follows.\n */\n export function error(data: FailureOutput): void {\n data.Log ??= getLogFilePath() || undefined;\n data.ErrorCode ??= defaultErrorCodeForResult(data.Result);\n data.Retry ??= defaultRetryForErrorCode(data.ErrorCode);\n process.exitCode = EXIT_CODES[data.Result] ?? 1;\n const { SuppressTelemetry, ...envelope } = data;\n if (!SuppressTelemetry) {\n telemetry.trackEvent(CommonTelemetryEvents.Error, {\n result: data.Result,\n errorCode: data.ErrorCode,\n retry: data.Retry,\n message: data.Message,\n });\n }\n logOutput(normalizeOutputKeys(envelope), getOutputFormat());\n }\n\n /** Emit a list result. Always uses `Result: \"Success\"` — an empty list is not an error. */\n export function emitList<T extends DataRecord>(\n code: string,\n items: T[],\n opts?: { emptyInstructions?: string; warning?: string },\n ): void {\n const data: SuccessOutput & {\n Instructions?: string;\n Warning?: string;\n } = {\n Result: RESULTS.Success,\n Code: code,\n Data: items,\n };\n if (items.length === 0 && opts?.emptyInstructions) {\n data.Instructions = opts.emptyInstructions;\n }\n if (opts?.warning) {\n data.Warning = opts.warning;\n }\n success(data);\n }\n\n /**\n * Log an informational/progress message to stderr.\n * Accepts a simple object (e.g., `{ Message: \"...\" }` or `{ Warning: \"...\" }`).\n */\n export function log(data: Record<string, unknown>): void {\n const format = getOutputFormat();\n const sink = getOutputSink();\n const normalized = toPascalCaseData(data) as Record<string, unknown>;\n if (format === \"json\") {\n const json = JSON.stringify(normalized);\n const safe = needsAsciiSafeJson(sink) ? escapeNonAscii(json) : json;\n sink.writeErr(`${safe}\\n`);\n } else {\n for (const [key, value] of Object.entries(normalized)) {\n sink.writeErr(`${key}: ${value}\\n`);\n }\n }\n }\n\n /**\n * Format structured output to a string without writing to console.\n * Useful when the caller needs the formatted string (e.g., Commander's formatHelp).\n */\n export function formatToString(data: StructuredOutput): string {\n const filter = getOutputFilter();\n if (\"Data\" in data && data.Data != null) {\n data.Data = normalizeDataKeys(data.Data);\n if (filter) {\n data.Data = normalizeDataKeys(applyFilter(data.Data, filter));\n }\n }\n const output = normalizeOutputKeys(data);\n const lines: string[] = [];\n const sink = getOutputSink();\n printOutput(\n output,\n getOutputFormat(),\n (msg: string) => {\n lines.push(msg);\n },\n needsAsciiSafeJson(sink),\n );\n return lines.join(\"\\n\");\n }\n}\n",
|
|
94
|
+
"/**\n * PII redactor for telemetry property values.\n *\n * Two layers, applied in order:\n * 1. Name-based hard redact — property names are split on camelCase,\n * snake_case, and kebab-case boundaries, then any token matches a\n * sensitive-word set (token/secret/password/pwd/credential/auth/\n * certificate) triggers [REDACTED]. `key` is only flagged when preceded\n * by a sensitive prefix (apiKey, accessKey, signingKey, …) so benign\n * names like sortKey, cacheKey, keyword pass through.\n * 2. Value detectors — JWTs, UUIDs, emails, URLs, user-home paths are\n * rewritten to a non-reversible form (hash or structural redaction).\n * Long strings are truncated.\n *\n * The goal is defense in depth: even if a new sensitive option slips through\n * without being added to the denylist, value detectors catch common shapes.\n */\n\nconst REDACTED = \"[REDACTED]\";\nconst MAX_VALUE_LENGTH = 200;\n\nconst SENSITIVE_NAME_TOKENS = new Set([\n \"token\",\n \"tokens\",\n \"secret\",\n \"secrets\",\n \"password\",\n \"passwords\",\n \"pwd\",\n \"credential\",\n \"credentials\",\n \"auth\",\n \"authentication\",\n \"authorization\",\n \"authority\",\n \"cert\",\n \"certificate\",\n \"certificates\",\n]);\n\n// Prefixes that, when followed by `key`/`keys`, indicate key material.\n// Anything outside this list (sortKey, cacheKey, lookupKey, partitionKey) is\n// treated as benign — the value detectors still catch token-shaped contents.\nconst SENSITIVE_KEY_PREFIXES = new Set([\n \"api\",\n \"access\",\n \"client\",\n \"private\",\n \"public\",\n \"signing\",\n \"encryption\",\n \"session\",\n \"master\",\n \"shared\",\n \"root\",\n \"ssh\",\n \"rsa\",\n \"aes\",\n \"hmac\",\n \"oauth\",\n]);\n\nconst UUID_PATTERN =\n /\\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\b/gi;\n\n// Domain and TLD are restricted to domain-valid characters so adjacent path\n// suffixes (alice@corp.com/api/v1) don't get swallowed into the match.\nconst EMAIL_PATTERN = /\\b[^\\s@]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}\\b/g;\n\nconst JWT_PATTERN = /\\beyJ[A-Za-z0-9_-]{10,}\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+/g;\n\nconst LONG_TOKEN_PATTERN = /\\b[A-Za-z0-9_-]{40,}\\b/g;\n\nconst USER_HOME_PATTERN = /([/\\\\])(Users|home)([/\\\\])([^/\\\\]+)/gi;\n\n// Stop at whitespace AND `,`/`;`, which are common URL separators in prose\n// (e.g. \"a=https://x.com,b=https://y.com\") and aren't meaningfully preserved\n// in the redacted output anyway — we keep only protocol+host.\nconst URL_PATTERN = /\\bhttps?:\\/\\/[^\\s,;]+/gi;\n\n// Trailing punctuation that tends to follow, not belong to, a URL in prose.\nconst URL_TRAILING_PUNCT = /[.,;:!?)\\]}>'\"]+$/;\n\n/**\n * Deterministic 32-bit FNV-1a hash, rendered as 8 hex chars.\n * Used for non-cryptographic correlation — lets us tell apart different\n * tenants/emails/GUIDs in telemetry without storing the real value.\n */\nfunction shortHash(input: string): string {\n let hash = 0x811c9dc5;\n for (let i = 0; i < input.length; i++) {\n hash ^= input.charCodeAt(i);\n hash = Math.imul(hash, 0x01000193);\n }\n return (hash >>> 0).toString(16).padStart(8, \"0\");\n}\n\nfunction redactUrl(raw: string): string {\n try {\n const url = new URL(raw);\n return `${url.protocol}//${url.host}`;\n } catch {\n return `url#${shortHash(raw)}`;\n }\n}\n\nfunction redactValueDetectors(value: string): string {\n let out = value;\n out = out.replace(JWT_PATTERN, () => REDACTED);\n out = out.replace(URL_PATTERN, (match) => {\n // Peel off trailing prose punctuation (\", \", \".\", etc.) so the URL\n // parses cleanly and the punctuation is preserved in the output.\n const trailing = match.match(URL_TRAILING_PUNCT)?.[0] ?? \"\";\n const core = trailing ? match.slice(0, -trailing.length) : match;\n return `${redactUrl(core)}${trailing}`;\n });\n out = out.replace(\n USER_HOME_PATTERN,\n (_match, sep1: string, folder: string, sep2: string) =>\n `${sep1}${folder}${sep2}<user>`,\n );\n out = out.replace(EMAIL_PATTERN, (match) => `email#${shortHash(match)}`);\n out = out.replace(UUID_PATTERN, (match) => `uuid#${shortHash(match)}`);\n out = out.replace(LONG_TOKEN_PATTERN, () => REDACTED);\n if (out.length > MAX_VALUE_LENGTH) {\n out = `${out.slice(0, MAX_VALUE_LENGTH)}…`;\n }\n return out;\n}\n\ntype TelemetryValue = string | number | boolean;\n\n/**\n * Split a property name into lowercase word tokens, crossing camelCase,\n * snake_case, and kebab-case boundaries. `signingCertificatePassword` →\n * [\"signing\", \"certificate\", \"password\"]; `API_KEY` → [\"api\", \"key\"].\n */\nfunction nameTokens(name: string): string[] {\n return name\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/([A-Z]+)([A-Z][a-z])/g, \"$1 $2\")\n .split(/[\\s_-]+/)\n .map((t) => t.toLowerCase())\n .filter(Boolean);\n}\n\nfunction isSensitiveName(name: string): boolean {\n const tokens = nameTokens(name);\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (SENSITIVE_NAME_TOKENS.has(token)) {\n return true;\n }\n if (token === \"key\" || token === \"keys\") {\n const prev = tokens[i - 1];\n if (prev && SENSITIVE_KEY_PREFIXES.has(prev)) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Redact a single telemetry property.\n * Preserves the original value's type (number/boolean pass through unchanged);\n * strings are scanned for sensitive shapes. Returns undefined for null/undefined\n * so callers can drop the key.\n */\nexport function redactProperty(\n name: string,\n value: unknown,\n): TelemetryValue | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (isSensitiveName(name)) {\n return REDACTED;\n }\n if (typeof value === \"boolean\" || typeof value === \"number\") {\n return value;\n }\n if (typeof value !== \"string\") {\n // Objects/arrays: don't risk leaking structure; mark presence only.\n return \"[OBJECT]\";\n }\n return redactValueDetectors(value);\n}\n\n/**\n * Redact an entire property bag. Preserves each value's native type\n * (numbers stay numbers, booleans stay booleans) so downstream sinks like\n * App Insights can still aggregate them as metrics. Undefined values are dropped.\n */\nexport function redactProperties(\n properties: Record<string, unknown>,\n): Record<string, TelemetryValue> {\n const out: Record<string, TelemetryValue> = {};\n for (const [name, value] of Object.entries(properties)) {\n const redacted = redactProperty(name, value);\n if (redacted !== undefined) {\n out[name] = redacted;\n }\n }\n return out;\n}\n",
|
|
95
|
+
"import { Command } from \"commander\";\nimport { catchError } from \"./catch-error\";\nimport {\n CLI_ERROR_CODES,\n type CliErrorCode,\n type ErrorContext,\n EXIT_CODES,\n type FailureResultType,\n OutputFormatter,\n RESULTS,\n RETRY_HINTS,\n type RetryHint,\n} from \"./formatter\";\nimport { logger } from \"./logger\";\nimport { singleton } from \"./singleton\";\nimport { redactProperties } from \"./telemetry/pii-redactor.js\";\nimport { telemetry } from \"./telemetry/telemetry-init.js\";\nimport type { TelemetryProperties } from \"./telemetry/telemetry-service.js\";\n\nexport interface CommandContext {\n exit: (code: number) => void;\n /** AbortSignal wired to SIGINT/SIGTERM. Pass to `pollUntil({ signal })` for graceful cancellation. */\n pollSignal?: AbortSignal;\n}\n\nconst pollSignalSlot = singleton<AbortSignal | undefined>(\"PollSignal\");\nconst cliErrorCodeValues = new Set<string>(CLI_ERROR_CODES);\nconst retryHintValues = new Set<string>(RETRY_HINTS);\n\n/**\n * Default CommandContext for tool packages that sets process.exitCode\n * instead of calling process.exit().\n *\n * `pollSignal` is resolved from globalThis so it works across bundle\n * boundaries — the CLI sets it once, all tool bundles see the same signal.\n */\nexport const processContext: CommandContext = {\n exit: (code: number) => {\n process.exitCode = code;\n },\n get pollSignal(): AbortSignal | undefined {\n return pollSignalSlot.get();\n },\n};\n\n/**\n * Wire an AbortSignal into the process-wide shared slot so all bundles\n * of `@uipath/common` see it via `processContext.pollSignal`.\n *\n * Call once at CLI startup after creating the poll abort controller.\n */\nexport function setProcessContextPollSignal(signal: AbortSignal): void {\n pollSignalSlot.set(signal);\n}\n\n/**\n * Collects the command's invocation parameters — positional arguments\n * (keyed by their registered names) and option flags (from `opts()`) —\n * so they can be attached to the telemetry event. Values flow through the\n * PII redactor downstream, so secrets/tokens/URLs are scrubbed.\n * Undefined values are dropped so the property bag only reflects what the\n * user actually supplied (or what has a default).\n */\nfunction extractCommandParams(cmd: Command): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n const registered = cmd.registeredArguments ?? [];\n const processed = cmd.processedArgs ?? [];\n for (let i = 0; i < registered.length; i++) {\n const value = processed[i];\n if (value === undefined) {\n continue;\n }\n const name = registered[i].name();\n if (name) {\n params[name] = value;\n }\n }\n for (const [key, value] of Object.entries(cmd.opts())) {\n if (value !== undefined) {\n params[key] = value;\n }\n }\n return params;\n}\n\n/**\n * Derives a telemetry event name from the command hierarchy.\n * Walks up the parent chain, collects command names, strips the root,\n * and always prepends \"uip\" so all events share a uniform prefix.\n * Names are lowercase dot-separated, mirroring the CLI invocation.\n *\n * Example: `uip maestro processes list` → `\"uip.maestro.processes.list\"`\n * Example: `uip login` → `\"uip.login\"`\n */\nfunction deriveCommandPath(cmd: Command): string {\n const parts: string[] = [];\n let current: Command | null = cmd;\n while (current) {\n const name = current.name();\n if (name) {\n parts.unshift(name);\n }\n current = current.parent as Command | null;\n }\n // Strip the root command (could be \"uip\", \"test\", etc.)\n if (parts.length > 1) {\n parts.shift();\n }\n // Always prefix with \"uip\" for uniform telemetry naming,\n // filtering out any remaining \"uip\" to avoid \"uip.uip\".\n return [\"uip\", ...parts.filter((p) => p !== \"uip\")].join(\".\");\n}\n\nfunction isCliErrorCode(value: unknown): value is CliErrorCode {\n return typeof value === \"string\" && cliErrorCodeValues.has(value);\n}\n\nfunction isRetryHint(value: unknown): value is RetryHint {\n return typeof value === \"string\" && retryHintValues.has(value);\n}\n\nfunction isErrorContext(value: unknown): value is ErrorContext {\n return value !== null && typeof value === \"object\";\n}\n\nfunction commandHelpHint(commandPath: string): string {\n const command = commandPath.replace(/\\./g, \" \");\n return `An unexpected error occurred. Run '${command} --help' to verify command syntax, or run with --log-level debug for details.`;\n}\n\ndeclare module \"commander\" {\n interface Command {\n trackedAction(\n context: CommandContext,\n // biome-ignore lint/suspicious/noExplicitAny: commander action args are untyped\n fn: (...args: any[]) => Promise<void>,\n properties?:\n | TelemetryProperties\n // biome-ignore lint/suspicious/noExplicitAny: commander action args are untyped\n | ((...args: any[]) => TelemetryProperties),\n ): this;\n }\n}\n\nCommand.prototype.trackedAction = function (\n context: CommandContext,\n // biome-ignore lint/suspicious/noExplicitAny: commander action args are untyped\n fn: (...args: any[]) => Promise<void>,\n properties?:\n | TelemetryProperties\n // biome-ignore lint/suspicious/noExplicitAny: commander action args are untyped\n | ((...args: any[]) => TelemetryProperties),\n): Command {\n const command = this as Command;\n\n return this.action(async (...args: unknown[]) => {\n const telemetryName = deriveCommandPath(command);\n const props =\n typeof properties === \"function\" ? properties(...args) : properties;\n const startTime = performance.now();\n let errorMessage: string | undefined;\n const [error] = await catchError(fn(...args));\n if (error) {\n errorMessage =\n error instanceof Error ? error.message : String(error);\n // Debug-only so stderr stays clean for `2>&1 | jq` consumers.\n logger.debug(\n `[trackedAction] ${telemetryName} failed: ${errorMessage}`,\n );\n const typed = error as {\n context?: unknown;\n Context?: unknown;\n errorCode?: unknown;\n ErrorCode?: unknown;\n instructions?: unknown;\n retry?: unknown;\n Retry?: unknown;\n result?: unknown;\n };\n const customInstructions =\n typeof typed.instructions === \"string\"\n ? typed.instructions\n : undefined;\n // Only accept canonical failure Result values; an unknown string\n // would leak into the envelope and yield EXIT_CODES[...] = undefined.\n const customResult =\n typeof typed.result === \"string\" &&\n typed.result !== RESULTS.Success &&\n (Object.values(RESULTS) as string[]).includes(typed.result)\n ? (typed.result as FailureResultType)\n : undefined;\n const finalResult = customResult ?? RESULTS.Failure;\n const typedErrorCode = typed.errorCode ?? typed.ErrorCode;\n const customErrorCode = isCliErrorCode(typedErrorCode)\n ? typedErrorCode\n : undefined;\n const typedRetry = typed.retry ?? typed.Retry;\n const customRetry = isRetryHint(typedRetry)\n ? typedRetry\n : undefined;\n const typedContext = typed.context ?? typed.Context;\n const customContext = isErrorContext(typedContext)\n ? typedContext\n : undefined;\n OutputFormatter.error({\n Result: finalResult,\n ...(customErrorCode ? { ErrorCode: customErrorCode } : {}),\n Message: errorMessage,\n Instructions:\n customInstructions ?? commandHelpHint(telemetryName),\n ...(customRetry ? { Retry: customRetry } : {}),\n ...(customContext ? { Context: customContext } : {}),\n });\n context.exit(EXIT_CODES[finalResult]);\n }\n const durationMs = performance.now() - startTime;\n // Detect failure from both thrown errors and internally-handled\n // failures that set process.exitCode without throwing.\n const success =\n !error &&\n (process.exitCode === undefined || process.exitCode === 0);\n // duration/success are stringified to preserve the pre-redactor\n // telemetry schema — downstream dashboards and Kusto queries expect\n // `success == \"true\"` / string duration. The redactor supports native\n // types for new callers that don't have that constraint.\n //\n // `command: \"true\"` marks this as the root event of a command\n // invocation (one per executed command), so dashboards can count\n // commands issued. Events emitted further down the road (auth,\n // error envelopes, dependencies) omit the property. Placed after\n // the spreads so callers and command params can't override it.\n telemetry.trackEvent(\n telemetryName,\n redactProperties({\n ...extractCommandParams(command),\n ...props,\n command: \"true\",\n duration: String(durationMs),\n success: String(success),\n ...(errorMessage ? { errorMessage } : {}),\n }),\n );\n });\n};\n\nexport { deriveCommandPath };\n",
|
|
96
|
+
"/**\n * Global console interception guard.\n *\n * Patches `console.log`, `console.info`, `console.warn`, `console.error`,\n * and `console.debug` so that output from third-party dependencies\n * (e.g. applicationinsights, future npm packages) is routed through the\n * OutputSink abstraction instead of writing directly to the terminal.\n *\n * Install once at CLI startup, after the sink is configured:\n *\n * configureLogger({ sink: new TerminalSink() });\n * installConsoleGuard();\n */\n\nimport { getOutputSink } from \"./output-context\";\nimport { singleton } from \"./singleton\";\n\n/**\n * Lightweight printf-style formatter matching the subset of `util.format`\n * used in practice: `%s`, `%d`/`%i`, `%f`, `%o`/`%O`, and `%%`.\n * Extra arguments beyond format specifiers are appended space-separated.\n */\nfunction format(first: unknown, ...rest: unknown[]): string {\n if (typeof first !== \"string\") {\n if (first === undefined && rest.length === 0) return \"\";\n return [first, ...rest].map(String).join(\" \");\n }\n\n let i = 0;\n const result = first.replace(/%[sdifjoO%]/g, (spec) => {\n if (spec === \"%%\") return \"%\";\n if (i >= rest.length) return spec;\n const arg = rest[i++];\n switch (spec) {\n case \"%s\":\n return String(arg);\n case \"%d\":\n case \"%i\":\n return String(parseInt(String(arg), 10));\n case \"%f\":\n return String(parseFloat(String(arg)));\n case \"%j\":\n case \"%o\":\n case \"%O\":\n try {\n return JSON.stringify(arg);\n } catch {\n return String(arg);\n }\n default:\n return spec;\n }\n });\n\n // Append any remaining arguments (matches Node's util.format behavior)\n const extra = rest.slice(i);\n if (extra.length > 0) {\n return result + \" \" + extra.map(String).join(\" \");\n }\n return result;\n}\n\nfunction formatArgs(args: unknown[]): string {\n // Destructure rather than spread: tsc cannot spread unknown[] into (first, ...rest).\n return `${format(args[0], ...args.slice(1))}\\n`;\n}\n\n// Saved originals for restoreConsole().\ninterface SavedConsole {\n log: typeof console.log;\n info: typeof console.info;\n warn: typeof console.warn;\n error: typeof console.error;\n debug: typeof console.debug;\n}\n\n// Cross-bundle guard state — console.* is process-wide, so we only\n// need to patch once. Using singleton() ensures that even if multiple\n// bundles import this module, they share the same installed/originals state.\nconst guardInstalledSlot = singleton<boolean>(\"ConsoleGuardInstalled\");\nconst savedOriginalsSlot = singleton<SavedConsole | undefined>(\n \"ConsoleGuardOriginals\",\n);\n\n/**\n * Install the console guard. Idempotent — calling twice is a no-op.\n *\n * Must be called **after** `configureLogger({ sink })` so that\n * `getOutputSink()` resolves to the correct sink.\n */\nexport function installConsoleGuard(): void {\n if (guardInstalledSlot.get(false)) return;\n\n // Save originals before patching.\n const originals: SavedConsole = {\n log: console.log,\n info: console.info,\n warn: console.warn,\n error: console.error,\n debug: console.debug,\n };\n savedOriginalsSlot.set(originals);\n\n // Reentrance flag — prevents infinite loops if a sink itself calls\n // console.* (defensive; current sinks don't, but custom sinks might).\n let reentrant = false;\n\n function guardedWriter(\n original: (...args: unknown[]) => void,\n ): (...args: unknown[]) => void {\n return (...args: unknown[]) => {\n if (reentrant) {\n original.apply(console, args);\n return;\n }\n reentrant = true;\n try {\n getOutputSink().writeErr(formatArgs(args));\n } finally {\n reentrant = false;\n }\n };\n }\n\n console.log = guardedWriter(originals.log);\n console.info = guardedWriter(originals.info);\n console.warn = guardedWriter(originals.warn);\n console.error = guardedWriter(originals.error);\n console.debug = guardedWriter(originals.debug);\n\n guardInstalledSlot.set(true);\n}\n\n/**\n * Restore the original console methods. Intended for testing teardown.\n */\nexport function restoreConsole(): void {\n const originals = savedOriginalsSlot.get();\n if (!originals) return;\n\n console.log = originals.log;\n console.info = originals.info;\n console.warn = originals.warn;\n console.error = originals.error;\n console.debug = originals.debug;\n\n guardInstalledSlot.clear();\n}\n",
|
|
97
|
+
"/** Home directory for all UiPath CLI data: ~/.uipath/ */\nexport const UIPATH_HOME_DIR = \".uipath\";\n\n/** Auth credentials filename within home directory */\nexport const AUTH_FILENAME = \".auth\";\n\n/** CLI config filename */\nexport const CONFIG_FILENAME = \"config.json\";\n\n/** Default UiPath cloud base URL */\nexport const DEFAULT_BASE_URL = \"https://cloud.uipath.com\";\n\n/** Default page size for paginated API list commands */\nexport const DEFAULT_PAGE_SIZE = 50;\n\n/** Auth callback server timeout (5 minutes) */\nexport const DEFAULT_AUTH_TIMEOUT_MS = 5 * 60 * 1000;\n\n/** HTTP fetch timeout (30 seconds) */\nexport const DEFAULT_FETCH_TIMEOUT_MS = 30_000;\n\n/** Localhost OIDC redirect URI */\nexport const DEFAULT_REDIRECT_URI = \"http://localhost:8104/oidc/login\";\n",
|
|
98
|
+
"/**\n * Process-wide interactivity mode.\n *\n * The CLI prompts by default only when both stdout and stdin are attached to an\n * interactive terminal. An automation agent or CI runner can never answer a\n * `y/N` prompt, so piped input or redirected output stays non-interactive.\n * Commands consult {@link canPrompt} before showing any optional/selection\n * prompt; when it returns `false` they must fall back to a flag-driven path or\n * fail fast with a structured error naming the flag to pass.\n *\n * Modes:\n * - \"never\" — never prompt.\n * - \"auto\" — prompt only when stdout and stdin are TTYs (the default).\n * - \"always\" — always prompt (assume a prompt-capable terminal).\n *\n * Stored via {@link singleton} so the value set once by the CLI host is visible\n * from every tool bundle's own copy of `@uipath/common`.\n *\n * Note: destructive confirmation does NOT use this — it is flag-only and\n * fail-closed (see `confirmation.ts`). Interactivity governs *optional* prompts.\n */\n\nimport { getOutputSink } from \"./output-context\";\nimport { singleton } from \"./singleton\";\n\nexport type InteractivityMode = \"never\" | \"auto\" | \"always\";\n\nconst modeSlot = singleton<InteractivityMode>(\"InteractivityMode\");\n\n/** Set the process-wide interactivity mode. Called once at CLI startup. */\nexport function setInteractivityMode(mode: InteractivityMode): void {\n modeSlot.set(mode);\n}\n\n/** Get the current interactivity mode, defaulting to \"auto\". */\nexport function getInteractivityMode(): InteractivityMode {\n return modeSlot.get(\"auto\") ?? \"auto\";\n}\n\n/**\n * True when the CLI may show an interactive prompt right now.\n *\n * \"always\" always prompts; \"never\" never does; \"auto\" prompts only when the\n * output sink reports an interactive (TTY) terminal and prompt-readable stdin.\n */\nexport function canPrompt(): boolean {\n const mode = getInteractivityMode();\n if (mode === \"always\") {\n return true;\n }\n if (mode === \"never\") {\n return false;\n }\n const capabilities = getOutputSink().capabilities;\n return capabilities.isInteractive && capabilities.canReadInput;\n}\n",
|
|
99
|
+
"/**\n * Shared polling utility types.\n *\n * These interfaces define the contract for `pollUntil` — a generic,\n * callback-driven polling utility that any tool can consume. The design\n * is driven by the union of all consumer requirements across the codebase.\n *\n * Callback ordering contract (per successful poll iteration):\n * beforePoll → fn() → onPoll → getStatus/onStatusChange → until → onComplete (if terminal)\n */\n\n/**\n * Context passed to dynamic functions (`intervalMs`, `beforePoll`).\n * Gives consumers full visibility into the polling state so they can\n * make informed decisions (e.g., token refresh after N minutes,\n * adaptive interval based on last status).\n */\nexport interface PollContext<T> {\n /** Number of completed successful polls (0 before first poll). */\n pollCount: number;\n /** Time elapsed since polling started, in ms. */\n elapsedMs: number;\n /** Result of the last successful poll. `undefined` before first success. */\n lastResult?: T;\n /** Status string from the last poll. `undefined` if `getStatus` is not provided or before the first poll. */\n lastStatus?: string;\n}\n\n/**\n * Backoff configuration for exponential backoff.\n * When `backoff` is set on `PollUntilOptions`, it overrides `intervalMs`.\n */\nexport interface BackoffConfig {\n /** Initial interval in ms. (default: 1000) */\n initialMs?: number;\n /** Multiplier applied per poll. (default: 2) */\n multiplier?: number;\n /** Maximum interval cap in ms. (default: 30000) */\n maxMs?: number;\n /**\n * Jitter factor in [0, 1]. Randomizes the interval to avoid thundering herd.\n * 0 = no jitter, 1 = full jitter (uniform in [0, computed]).\n * (default: 0.5 — equal jitter)\n */\n jitter?: number;\n}\n\n/**\n * Callback type for `onError`. Return `ErrorDecision.Abort` to stop polling,\n * or return nothing to continue with retry logic. Async-capable.\n */\nexport type OnErrorCallback = (\n error: Error,\n consecutiveCount: number,\n // biome-ignore lint/suspicious/noConfusingVoidType: void is required here — callbacks that conditionally return \"abort\" or nothing need void in the union\n) => void | ErrorDecision | Promise<void | ErrorDecision>;\n\n/** Resolved backoff config with all defaults filled in. */\nexport interface ResolvedBackoffConfig {\n initialMs: number;\n multiplier: number;\n maxMs: number;\n jitter: number;\n}\n\nexport interface PollUntilOptions<T> {\n /** Async function that fetches current state. */\n fn: () => Promise<T>;\n /** Predicate — return `true` when polling should stop. */\n until: (result: T) => boolean;\n\n // --- Status extraction (enables change detection + logging) ----------------\n\n /** Extract a status string from the poll result for change detection and logging. */\n getStatus?: (result: T) => string;\n\n // --- Timing ----------------------------------------------------------------\n\n /**\n * Polling interval in ms for **successful** polls. Static number or dynamic function.\n *\n * Dynamic function receives `PollContext` and returns the interval for the\n * upcoming sleep. Use for custom scheduling, e.g.:\n * ```ts\n * intervalMs: (ctx) => ctx.lastStatus === \"Running\" ? 2000 : 5000\n * ```\n *\n * (default: 5000)\n */\n intervalMs?: number | ((ctx: PollContext<T>) => number);\n\n /**\n * Max time to poll in ms. `0` means no limit — poll indefinitely until\n * a terminal state, abort, or interrupt.\n *\n * (default: 1_800_000 — 30 minutes)\n */\n timeoutMs?: number;\n\n // --- Error retry backoff (applies to error sleeps only) --------------------\n\n /**\n * Exponential backoff for **error retries only**. Does not affect\n * the interval between successful polls (that's `intervalMs`).\n *\n * - `true` — use defaults: `{ initialMs: 1000, multiplier: 2, maxMs: 30000 }`\n * - `BackoffConfig` object — customize any or all fields; unset fields use defaults.\n * - `false` / `undefined` — disabled, errors retry with `intervalMs` instead.\n *\n * The backoff counter resets when a poll succeeds.\n */\n backoff?: boolean | BackoffConfig;\n\n // --- Cancellation ----------------------------------------------------------\n\n /**\n * `AbortSignal` for external cancellation (from parent operation, tests, etc.).\n *\n * When the signal fires, the current sleep is interrupted immediately and\n * `pollUntil` returns with `outcome: \"interrupted\"`.\n *\n * For SIGINT/SIGTERM support, use `createPollAbortController()` at the CLI\n * entry point and pass its signal here.\n */\n signal?: AbortSignal;\n\n // --- Error resilience ------------------------------------------------------\n\n /**\n * Max consecutive poll errors before aborting (throwing).\n *\n * - `> 0` — throw after this many consecutive failures.\n * - `0` — never auto-abort on errors. Only timeout, `onError` returning\n * `\"abort\"`, or signal interruption stops polling. Used by consumers\n * that expect transient errors (e.g., integration-service OAuth,\n * trace streaming with 404s during startup).\n *\n * (default: 3)\n */\n maxConsecutiveErrors?: number;\n\n // --- Logging ---------------------------------------------------------------\n\n /**\n * Label for log messages (e.g., `\"job abc123\"`, `\"deployment xyz\"`).\n *\n * When provided, `pollUntil` emits structured log lines via `logger.info`\n * for start, progress, status changes, errors, and completion.\n *\n * Omit for silent mode — zero log output from the utility. Consumers\n * can still use callbacks (`onPoll`, etc.) for custom logging.\n */\n label?: string;\n\n /**\n * Prefix for log messages. Appears as `[prefix]` before each log line.\n * (default: `\"wait\"`)\n *\n * Override to match your command name, e.g. `\"deploy\"`, `\"activate\"`.\n */\n logPrefix?: string;\n\n /**\n * Interval between progress log lines in ms.\n *\n * Progress lines are only emitted when `label` is provided.\n *\n * (default: 30_000)\n */\n logIntervalMs?: number;\n\n // --- Lifecycle callbacks (all optional) ------------------------------------\n\n /**\n * Called BEFORE each poll. Async-capable.\n *\n * Use for token refresh, rate-limit checks, or any pre-flight logic.\n * If this throws, the error is treated as a poll error (increments\n * `consecutiveErrors`, fires `onError`, follows retry logic).\n */\n beforePoll?: (ctx: PollContext<T>) => void | Promise<void>;\n\n /**\n * Called after each successful `fn()` call.\n *\n * Fires on EVERY successful poll, including the terminal one (before\n * `onComplete`). Consumers that need to emit incremental data (e.g.,\n * trace streaming with span deduplication) use this callback.\n */\n onPoll?: (result: T, elapsedMs: number) => void;\n\n /**\n * Called when `getStatus()` detects a status transition.\n *\n * Only fires when the extracted status string differs from the previous\n * poll's status. `getStatus` must be provided for this to work.\n */\n onStatusChange?: (newStatus: string, oldStatus: string, result: T) => void;\n\n /**\n * Called on each poll error (including `beforePoll` errors).\n *\n * Return `\"abort\"` to stop polling immediately — `pollUntil` will return\n * with `outcome: \"aborted\"`. Return `void` (or nothing) to continue\n * with the retry/timeout logic.\n *\n * Async-capable: the return value is awaited if a Promise is returned.\n *\n * Use for selective error handling, e.g.:\n * ```ts\n * onError: (error) => {\n * if (error.message.includes(\"404\")) return; // transient, continue\n * return \"abort\"; // fatal, stop\n * }\n * ```\n */\n onError?: OnErrorCallback;\n\n /**\n * Called when polling completes (terminal state reached via `until`).\n */\n onComplete?: (result: T, elapsedMs: number) => void;\n\n /**\n * Called when the timeout deadline is reached without a terminal state.\n * `lastResult` may be `undefined` if no poll succeeded.\n */\n onTimeout?: (lastResult: T | undefined, elapsedMs: number) => void;\n\n /**\n * Called when polling is interrupted via `AbortSignal`.\n * `lastResult` may be `undefined` if no poll succeeded.\n */\n onInterrupt?: (lastResult: T | undefined, elapsedMs: number) => void;\n}\n\n/**\n * Result returned by `pollUntil`.\n *\n * - `\"completed\"` — `until(result)` returned `true`. `data` is guaranteed to be `T`.\n * - `\"timeout\"` — deadline reached. `data` is the last successful poll result, or `undefined`.\n * - `\"interrupted\"` — `AbortSignal` fired. `data` is the last successful poll result, or `undefined`.\n * - `\"aborted\"` — consumer's `onError` returned `\"abort\"`. `data` is the last successful poll result, or `undefined`.\n * - `\"failed\"` — `maxConsecutiveErrors` exceeded. `error` contains the last poll error.\n */\nexport interface PollUntilResult<T> {\n /** The final polled value. Guaranteed `T` when `outcome` is `\"completed\"`. `T | undefined` otherwise. */\n data: T | undefined;\n /** How the poll ended. Compare with `PollOutcome` constants. */\n outcome: PollOutcome;\n /** Total elapsed time in ms. */\n elapsedMs: number;\n /** The error associated with a non-successful outcome. Set when `outcome` is `\"aborted\"` or `\"failed\"`; `undefined` otherwise. */\n error?: Error;\n}\n\n// =============================================================================\n// Outcome and error-decision constants — avoid magic strings\n// =============================================================================\n\n/** Possible outcomes of a `pollUntil` call. Use instead of string literals. */\nexport const PollOutcome = {\n /** `until(result)` returned `true`. `data` is guaranteed to be `T`. */\n Completed: \"completed\",\n /** Deadline reached without terminal state. */\n Timeout: \"timeout\",\n /** `AbortSignal` fired. */\n Interrupted: \"interrupted\",\n /** Consumer's `onError` returned `ErrorDecision.Abort`. */\n Aborted: \"aborted\",\n /** `maxConsecutiveErrors` exceeded. `error` field has the last poll error. */\n Failed: \"failed\",\n} as const;\n\nexport type PollOutcome = (typeof PollOutcome)[keyof typeof PollOutcome];\n\n/** Return values from `onError` callback. Use instead of string literals. */\nexport const ErrorDecision = {\n /** Stop polling immediately. */\n Abort: \"abort\",\n} as const;\n\nexport type ErrorDecision = (typeof ErrorDecision)[keyof typeof ErrorDecision];\n\n/** Default values for `PollUntilOptions`. */\nexport const POLL_DEFAULTS = {\n intervalMs: 5000,\n timeoutMs: 1_800_000,\n maxConsecutiveErrors: 3,\n logIntervalMs: 30_000,\n logPrefix: \"wait\",\n} as const;\n\n/** Default values for `BackoffConfig`. */\nexport const BACKOFF_DEFAULTS: ResolvedBackoffConfig = {\n initialMs: 1000,\n multiplier: 2,\n maxMs: 30_000,\n jitter: 0.5,\n} as const;\n\n/** Minimum allowed polling interval in ms. Prevents CPU spin on bad dynamic values. */\nexport const MIN_INTERVAL_MS = 100;\n",
|
|
100
|
+
"import { PollOutcome } from \"./types\";\n\n/** Canonical taxonomy for poll-loop failures; library callers branch on this without parsing the message. */\nexport type PollFailureReason = \"poll_timeout\" | \"poll_failed\" | \"poll_aborted\";\n\nexport interface PollFailureMapped {\n reason: PollFailureReason;\n /** `${label} polling {timed out | failed: <err> | was interrupted | was aborted}`. */\n message: string;\n /** `2` for Timeout, `1` otherwise. */\n exitCode: number;\n}\n\ntype NonCompletedOutcome = Exclude<PollOutcome, typeof PollOutcome.Completed>;\n\nconst REASON_BY_OUTCOME: Record<NonCompletedOutcome, PollFailureReason> = {\n [PollOutcome.Timeout]: \"poll_timeout\",\n [PollOutcome.Failed]: \"poll_failed\",\n [PollOutcome.Interrupted]: \"poll_failed\",\n [PollOutcome.Aborted]: \"poll_aborted\",\n};\n\n/**\n * Maps a non-completed `pollUntil` result to `{ reason, message, exitCode }`.\n * `label` prefixes the message (e.g. `\"Deployment\"` → `\"Deployment polling timed out\"`).\n * Caller must check the outcome is non-completed before invoking.\n */\nexport function mapPollFailure(\n pollResult: { outcome: PollOutcome; error?: { message?: string } },\n label: string,\n): PollFailureMapped {\n const outcome = pollResult.outcome as NonCompletedOutcome;\n const errMsg = pollResult.error?.message ?? \"too many consecutive errors\";\n const messageByOutcome: Record<NonCompletedOutcome, string> = {\n [PollOutcome.Timeout]: `${label} polling timed out`,\n [PollOutcome.Failed]: `${label} polling failed: ${errMsg}`,\n [PollOutcome.Interrupted]: `${label} polling was interrupted`,\n [PollOutcome.Aborted]: `${label} polling was aborted`,\n };\n return {\n reason: REASON_BY_OUTCOME[outcome],\n message: messageByOutcome[outcome],\n exitCode: outcome === PollOutcome.Timeout ? 2 : 1,\n };\n}\n",
|
|
101
|
+
"/**\n * Shared terminal status definitions across all UiPath async operations.\n *\n * These cover the superset of known statuses from Orchestrator, Flow,\n * Test Manager, and Solution deployments. Comparison is case-insensitive.\n *\n * Individual tools can extend with domain-specific statuses if needed,\n * but the common set eliminates each tool defining its own.\n */\n\n/** Canonical terminal statuses — compare case-insensitively via `isTerminalStatus`. */\nconst TERMINAL_STATUSES = new Set([\n \"completed\",\n \"successful\",\n \"faulted\",\n \"failed\",\n \"cancelled\",\n \"canceled\",\n \"stopped\",\n \"finished\",\n]);\n\n/** Subset of terminal statuses that indicate failure. */\nconst FAILURE_STATUSES = new Set([\n \"faulted\",\n \"failed\",\n \"cancelled\",\n \"canceled\",\n \"stopped\",\n]);\n\n/**\n * Check if a status string represents a terminal state (case-insensitive).\n *\n * Covers the known superset across Orchestrator jobs, Flow executions,\n * Test Manager executions, and Solution deployments.\n *\n * @example\n * ```ts\n * isTerminalStatus(\"Completed\") // true\n * isTerminalStatus(\"Running\") // false\n * isTerminalStatus(\"FAULTED\") // true\n * ```\n */\nexport function isTerminalStatus(status: string): boolean {\n return TERMINAL_STATUSES.has(status.toLowerCase());\n}\n\n/**\n * Check if a status string represents a failure state (case-insensitive).\n *\n * A subset of terminal statuses — excludes success states like\n * \"Completed\", \"Successful\", \"Finished\".\n *\n * @example\n * ```ts\n * isFailureStatus(\"Faulted\") // true\n * isFailureStatus(\"Completed\") // false\n * isFailureStatus(\"Cancelled\") // true\n * ```\n */\nexport function isFailureStatus(status: string): boolean {\n return FAILURE_STATUSES.has(status.toLowerCase());\n}\n\n/**\n * Check if a status string represents a successful terminal state (case-insensitive).\n *\n * Equivalent to `isTerminalStatus(s) && !isFailureStatus(s)`.\n *\n * @example\n * ```ts\n * isSuccessStatus(\"Completed\") // true\n * isSuccessStatus(\"Faulted\") // false\n * isSuccessStatus(\"Running\") // false\n * ```\n */\nexport function isSuccessStatus(status: string): boolean {\n return isTerminalStatus(status) && !isFailureStatus(status);\n}\n",
|
|
102
|
+
"import { getOutputSink } from \"./output-context\";\n\n/**\n * Standalone screen-output helper.\n * Methods here write human-visible messages to the screen,\n * bypassing log-level filtering and file-logging redirection.\n */\nexport namespace ScreenLogger {\n /** Write a progress message to the screen. */\n export function progress(message: string): void {\n getOutputSink().writeErr(`${message}\\n`);\n }\n}\n",
|
|
103
|
+
"/**\n * Cross-module bridge for packager factory resolution.\n */\n\nimport { singleton } from \"./singleton\";\n\nexport type PackagerFactoryProvider = (verb: string) => Promise<void>;\n\nconst factorySlot = singleton<PackagerFactoryProvider | undefined>(\n \"PackagerFactoryProvider\",\n);\n\nexport function setPackagerFactoryProvider(\n provider: PackagerFactoryProvider,\n): void {\n factorySlot.set(provider);\n}\n\nexport async function ensurePackagerFactory(verb: string): Promise<void> {\n const provider = factorySlot.get();\n if (!provider) {\n throw new Error(\n `Packager factory for '${verb}' is required but no factory provider is registered. ` +\n `Run 'uip tools install ${verb}' manually.`,\n );\n }\n await provider(verb);\n}\n",
|
|
104
|
+
"/**\n * Utilities for reading, finding, and updating .uipx solution files.\n */\n\nimport { catchError, logger } from \"@uipath/common\";\nimport type { IFileSystem } from \"@uipath/filesystem\";\nimport type { UipxFile, UipxProject } from \"./types\";\n\n/**\n * Outcome of attempting to register a project in its parent `.uipx` solution.\n *\n * Status meanings:\n * - `Registered` — Project was added to `<solution>.uipx` Projects[] in this call.\n * - `AlreadyRegistered` — Project was already in Projects[]; no write performed.\n * - `Skipped` — A candidate solution was found but registration was deliberately\n * not attempted (ambiguous: multiple `.uipx` in same dir, or the\n * project dir sits outside the discovered solution dir).\n * - `Failed` — Registration was attempted and an error occurred (read/write/parse).\n * - `NotInSolution` — No `.uipx` file was found by walking ancestor directories. The\n * project was created in standalone mode. This is the explicit\n * contract value for \"no parent solution discovered\" so that\n * downstream consumers (agents, the skill doc, CI scripts) can\n * distinguish \"missing field due to old CLI\" from \"field\n * intentionally indicates no enclosing solution\" (MST-10004).\n * - `OptedOut` — The caller passed `skipRegistration` (the `--skip-solution-registration`\n * CLI flag): discovery and registration were intentionally not\n * attempted. Distinct from `Skipped` (structural ambiguity the\n * tool could not resolve) and `NotInSolution` (no solution exists):\n * the user explicitly declined registration.\n */\nexport interface ProjectSolutionRegistration {\n Status:\n | \"Registered\"\n | \"AlreadyRegistered\"\n | \"Skipped\"\n | \"Failed\"\n | \"NotInSolution\"\n | \"OptedOut\";\n Message: string;\n Solution?: string;\n Project?: string;\n ProjectId?: string;\n Instructions?: string;\n}\n\n/**\n * Options for {@link tryRegisterProjectInParentSolution}.\n */\nexport interface RegisterProjectOptions {\n /**\n * When true, skip solution discovery and registration entirely and return an\n * `OptedOut` envelope. Set by the `--skip-solution-registration` CLI flag. The `OptedOut`\n * envelope is still returned (the field is never absent) so downstream consumers\n * keep a uniform `Data.SolutionRegistration` contract.\n */\n skipRegistration?: boolean;\n}\n\ninterface ProjectFileInfo {\n filePath: string;\n fileName: string;\n useProjectJson: boolean;\n}\n\ninterface ProjectManifest {\n projectType: string;\n}\n\nexport const STUDIO_WEB_PROJECT_TYPE_OVERRIDES: Record<string, string> = {\n ProcessOrchestration: \"processOrchestration\",\n};\n\nexport function normalizeProjectType(projectType: string): string {\n return STUDIO_WEB_PROJECT_TYPE_OVERRIDES[projectType] ?? projectType;\n}\n\n/**\n * Converts a relative path to forward slashes. ProjectRelativePath values in\n * the .uipx manifest must always use forward slashes — Studio Web rejects\n * backslash separators, which `fs.path.relative`/`join` produce on Windows.\n */\nexport function toPortableRelativePath(relativePath: string): string {\n return relativePath.replace(/\\\\/g, \"/\");\n}\n\n/**\n * Find and parse the .uipx file in a solution directory.\n * Validates the required fields (SolutionId, Projects).\n */\nexport async function readUipxFile(\n fs: IFileSystem,\n solutionDir: string,\n): Promise<{ uipx: UipxFile; uipxFileName: string }> {\n const dirEntries = await fs.readdir(solutionDir);\n const uipxFileName = dirEntries.find((f: string) => f.endsWith(\".uipx\"));\n\n if (!uipxFileName) {\n throw new Error(\n `No .uipx file found in ${solutionDir}. Run 'uip solution init' first.`,\n );\n }\n\n const uipxContent = await fs.readFile(\n fs.path.join(solutionDir, uipxFileName),\n \"utf-8\",\n );\n\n if (!uipxContent) {\n throw new Error(\n `Could not read .uipx file: ${uipxFileName} is empty or missing.`,\n );\n }\n\n const [parseError, parsed] = catchError(\n () => JSON.parse(uipxContent) as unknown,\n );\n if (parseError) {\n throw new Error(\n `Invalid .uipx file: could not parse JSON in ${uipxFileName}.`,\n );\n }\n\n const uipx = validateUipxFile(parsed, uipxFileName);\n\n return { uipx, uipxFileName };\n}\n\nfunction validateUipxFile(parsed: unknown, uipxFileName: string): UipxFile {\n if (!isRecord(parsed)) {\n throw new Error(\n `Invalid .uipx file: ${uipxFileName} must contain a JSON object.`,\n );\n }\n\n if (typeof parsed.SolutionId !== \"string\" || !parsed.SolutionId.trim()) {\n throw new Error(\"Invalid .uipx file: missing SolutionId.\");\n }\n\n if (!Array.isArray(parsed.Projects) || parsed.Projects.length === 0) {\n throw new Error(\"Invalid .uipx file: missing Projects.\");\n }\n\n for (const [index, project] of parsed.Projects.entries()) {\n if (!isRecord(project)) {\n throw new Error(\n `Invalid .uipx file: Projects[${index}] must be an object.`,\n );\n }\n\n if (\n typeof project.ProjectRelativePath !== \"string\" ||\n !project.ProjectRelativePath.trim()\n ) {\n const pathHint =\n typeof project.Path === \"string\"\n ? \" Found Path, but .uipx uses ProjectRelativePath.\"\n : \"\";\n throw new Error(\n `Invalid .uipx file: Projects[${index}] is missing ProjectRelativePath.${pathHint} Use 'uip solution project add' to add projects, or set ProjectRelativePath to the project file path, for example \"Foo/project.uiproj\".`,\n );\n }\n }\n\n return parsed as unknown as UipxFile;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/**\n * Resolve input to a solution directory path.\n * Accepts a directory path or a .uipx file path.\n */\nexport function resolveSolutionDir(fs: IFileSystem, inputPath: string): string {\n const resolved = fs.path.resolve(inputPath);\n if (resolved.endsWith(\".uipx\")) {\n return fs.path.dirname(resolved);\n }\n return resolved;\n}\n\n/**\n * Update the SolutionId in a .uipx file at a known path.\n * Called after successful upload to ensure subsequent uploads use overwrite.\n */\nexport async function updateUipxSolutionId(\n fs: IFileSystem,\n uipxPath: string,\n newSolutionId: string,\n): Promise<void> {\n const [readError, content] = await catchError(\n fs.readFile(uipxPath, \"utf-8\"),\n );\n if (readError || !content) {\n logger.error(\n `Could not read .uipx file for update: ${readError?.message ?? \"empty file\"}`,\n );\n return;\n }\n\n const [parseError, parsed] = catchError(\n () => JSON.parse(content) as Record<string, unknown>,\n );\n if (parseError) {\n logger.error(\n `Could not parse .uipx file for update: ${parseError.message}`,\n );\n return;\n }\n\n parsed.SolutionId = newSolutionId;\n\n const [writeError] = await catchError(\n fs.writeFile(uipxPath, JSON.stringify(parsed, null, 4)),\n );\n if (writeError) {\n logger.error(\n `Could not update .uipx with new SolutionId: ${writeError.message}`,\n );\n } else {\n logger.info(\n `Updated .uipx with Studio Web SolutionId: ${newSolutionId}`,\n );\n }\n}\n\n/**\n * Find the .uipx solution file in the parent directory of a project path.\n * Returns the solutionId and projectId, or undefined if not found.\n */\nexport async function findSolutionFile(\n fs: IFileSystem,\n projectPath: string,\n): Promise<{ solutionId: string; projectId: string } | undefined> {\n const parentDir = fs.path.resolve(projectPath, \"..\");\n\n const [dirError, entries] = await catchError(fs.readdir(parentDir));\n\n if (dirError) {\n logger.error(\n `Could not read parent directory for .uipx file: ${dirError.message}`,\n );\n return undefined;\n }\n\n const uipxFile = entries.find((entry: string) => entry.endsWith(\".uipx\"));\n\n if (!uipxFile) {\n logger.info(\"No .uipx solution file found in parent directory.\");\n return undefined;\n }\n\n const uipxPath = fs.path.join(parentDir, uipxFile);\n const [readError, content] = await catchError(\n fs.readFile(uipxPath, \"utf-8\"),\n );\n\n if (readError || content === null) {\n logger.error(\n `Could not read .uipx file: ${readError?.message ?? \"file returned null\"}`,\n );\n return undefined;\n }\n\n const [parseError, parsed] = catchError(\n () =>\n JSON.parse(content) as {\n SolutionId?: string;\n Projects?: Array<{ Id?: string }>;\n },\n );\n\n if (parseError) {\n logger.error(`Could not parse .uipx file: ${parseError.message}`);\n return undefined;\n }\n\n const solutionId = parsed.SolutionId;\n const projectId = parsed.Projects?.[0]?.Id;\n\n if (!solutionId) {\n logger.info(\"No SolutionId found in .uipx file.\");\n return undefined;\n }\n\n logger.info(`Found solution file: ${uipxFile} (SolutionId: ${solutionId})`);\n\n return {\n solutionId,\n projectId: projectId ?? crypto.randomUUID(),\n };\n}\n\n/**\n * Update the .uipx solution file in the parent directory of a project path.\n * Scans the parent dir for a .uipx file and updates its SolutionId.\n */\nexport async function updateSolutionFile(\n fs: IFileSystem,\n projectPath: string,\n newSolutionId: string,\n): Promise<void> {\n const parentDir = fs.path.resolve(projectPath, \"..\");\n const [dirError, entries] = await catchError(fs.readdir(parentDir));\n if (dirError) return;\n\n const uipxFile = entries.find((entry: string) => entry.endsWith(\".uipx\"));\n if (!uipxFile) return;\n\n const uipxPath = fs.path.join(parentDir, uipxFile);\n await updateUipxSolutionId(fs, uipxPath, newSolutionId);\n}\n\nexport async function tryRegisterProjectInParentSolution(\n fs: IFileSystem,\n projectDir: string,\n options?: RegisterProjectOptions,\n): Promise<ProjectSolutionRegistration> {\n if (options?.skipRegistration) {\n // `--skip-solution-registration`: do not walk ancestors or touch any `.uipx`.\n // Return an explicit `OptedOut` envelope so the `Data.SolutionRegistration`\n // field stays present and the user's intent is distinguishable from\n // `NotInSolution` (no solution exists) and `Skipped` (ambiguous discovery).\n return {\n Status: \"OptedOut\",\n Message:\n \"Solution auto-registration skipped (--skip-solution-registration).\",\n Instructions: buildOptedOutInstructions(\n fs.path.resolve(projectDir),\n ),\n };\n }\n\n const [registrationError, registration] = await catchError(\n registerProjectInParentSolution(fs, projectDir),\n );\n if (registrationError) {\n return {\n Status: \"Failed\",\n Message: \"Project registration failed.\",\n Instructions: buildRegistrationFailureInstructions(\n projectDir,\n registrationError.message,\n ),\n };\n }\n\n return registration;\n}\n\nasync function registerProjectInParentSolution(\n fs: IFileSystem,\n projectDir: string,\n): Promise<ProjectSolutionRegistration> {\n const resolvedProjectDir = fs.path.resolve(projectDir);\n const discovery = await findNearestParentUipxFile(fs, resolvedProjectDir);\n\n if (discovery.status === \"notFound\") {\n // Return an explicit envelope (instead of `undefined`) so the\n // `Data.SolutionRegistration` field is always present in CLI output.\n // Downstream agents and the uipath-maestro-flow skill rely on the\n // field's presence to decide whether to fall back to a manual\n // `uip solution project add` — absent field used to ambiguously mean\n // either \"old CLI without this feature\" or \"intentionally standalone\",\n // leading to a Studio Web import 400 (MST-10004).\n return {\n Status: \"NotInSolution\",\n Message:\n \"Project created in standalone mode; no parent .uipx solution found.\",\n Instructions: buildStandaloneInstructions(resolvedProjectDir),\n };\n }\n\n if (discovery.status === \"skipped\") {\n return discovery.registration;\n }\n\n const solutionFile = discovery.solutionFile;\n const solutionDir = fs.path.dirname(solutionFile);\n const relativeProjectDir = fs.path.relative(\n solutionDir,\n resolvedProjectDir,\n );\n\n if (\n relativeProjectDir === \"\" ||\n relativeProjectDir.startsWith(\"..\") ||\n fs.path.isAbsolute(relativeProjectDir)\n ) {\n return {\n Status: \"Skipped\",\n Message: \"Project registration skipped.\",\n Solution: solutionFile,\n Instructions: `Project must reside within the solution folder.\\n Solution: ${solutionDir}\\n Project: ${resolvedProjectDir}`,\n };\n }\n\n const [projectFileError, projectFile] = await findProjectFile(\n fs,\n resolvedProjectDir,\n );\n if (projectFileError) {\n return {\n Status: \"Failed\",\n Message: \"Project registration failed.\",\n Solution: solutionFile,\n Instructions: buildRegistrationFailureInstructions(\n resolvedProjectDir,\n projectFileError.message,\n ),\n };\n }\n\n const [projectManifestError, projectManifest] = await readProjectManifest(\n fs,\n projectFile.filePath,\n projectFile.useProjectJson,\n );\n if (projectManifestError) {\n return {\n Status: \"Failed\",\n Message: \"Project registration failed.\",\n Solution: solutionFile,\n Instructions: buildRegistrationFailureInstructions(\n resolvedProjectDir,\n projectManifestError.message,\n ),\n };\n }\n\n const projectRelativePath = toPortableRelativePath(\n fs.path.join(relativeProjectDir, projectFile.fileName),\n );\n\n const [solutionError, solution] = await readSolutionManifest(\n fs,\n solutionFile,\n );\n if (solutionError) {\n return {\n Status: \"Failed\",\n Message: \"Project registration failed.\",\n Solution: solutionFile,\n Project: projectRelativePath,\n Instructions: buildRegistrationFailureInstructions(\n resolvedProjectDir,\n solutionError.message,\n ),\n };\n }\n\n const existingProject = solution.projects.find(\n (project) =>\n toPortableRelativePath(project.ProjectRelativePath) ===\n projectRelativePath,\n );\n if (existingProject) {\n return {\n Status: \"AlreadyRegistered\",\n Message: \"Project already registered in solution.\",\n Solution: solutionFile,\n Project: projectRelativePath,\n ProjectId:\n typeof existingProject.Id === \"string\"\n ? existingProject.Id\n : undefined,\n Instructions: buildRegistrationSuccessInstructions(solutionDir),\n };\n }\n\n const projectId = crypto.randomUUID();\n solution.projects.push({\n Type: normalizeProjectType(projectManifest.projectType),\n ProjectRelativePath: projectRelativePath,\n Id: projectId,\n });\n solution.content.Projects = solution.projects;\n\n const [writeError] = await catchError(\n fs.writeFile(\n solutionFile,\n `${JSON.stringify(solution.content, null, 2)}\\n`,\n ),\n );\n if (writeError) {\n return {\n Status: \"Failed\",\n Message: \"Project registration failed.\",\n Solution: solutionFile,\n Project: projectRelativePath,\n Instructions: buildRegistrationFailureInstructions(\n resolvedProjectDir,\n writeError.message,\n ),\n };\n }\n\n return {\n Status: \"Registered\",\n Message: \"Project registered in parent solution.\",\n Solution: solutionFile,\n Project: projectRelativePath,\n ProjectId: projectId,\n Instructions: buildRegistrationSuccessInstructions(solutionDir),\n };\n}\n\nexport type ParentSolutionDiscovery =\n | { status: \"found\"; solutionFile: string }\n | { status: \"notFound\" }\n | { status: \"skipped\"; registration: ProjectSolutionRegistration };\n\nexport async function findNearestParentUipxFile(\n fs: IFileSystem,\n projectDir: string,\n): Promise<ParentSolutionDiscovery> {\n let currentDir = fs.path.dirname(projectDir);\n\n while (true) {\n const [readDirError, entries] = await catchError(\n fs.readdir(currentDir),\n );\n if (readDirError) {\n return {\n status: \"skipped\",\n registration: {\n Status: \"Failed\",\n Message: \"Project registration failed.\",\n Instructions: buildRegistrationFailureInstructions(\n projectDir,\n `Could not inspect parent directory for a solution: ${currentDir}\\n${readDirError.message}`,\n ),\n },\n };\n }\n\n const solutionFiles = entries.filter((entry) =>\n entry.endsWith(\".uipx\"),\n );\n if (solutionFiles.length > 1) {\n return {\n status: \"skipped\",\n registration: {\n Status: \"Skipped\",\n Message: \"Project registration skipped.\",\n Instructions: `Found multiple .uipx files in ${currentDir}: ${solutionFiles.join(\", \")}. Run 'uip solution project add \"${projectDir}\" <solution.uipx>' to choose one.`,\n },\n };\n }\n\n if (solutionFiles.length === 1) {\n return {\n status: \"found\",\n solutionFile: fs.path.join(currentDir, solutionFiles[0]),\n };\n }\n\n const parentDir = fs.path.dirname(currentDir);\n if (parentDir === currentDir) {\n return { status: \"notFound\" };\n }\n\n currentDir = parentDir;\n }\n}\n\nasync function findProjectFile(\n fs: IFileSystem,\n projectDir: string,\n): Promise<[Error, null] | [null, ProjectFileInfo]> {\n const uiprojPath = fs.path.join(projectDir, \"project.uiproj\");\n if (await fs.exists(uiprojPath)) {\n return [\n null,\n {\n filePath: uiprojPath,\n fileName: \"project.uiproj\",\n useProjectJson: false,\n },\n ];\n }\n\n const jsonProjectPath = fs.path.join(projectDir, \"project.json\");\n if (await fs.exists(jsonProjectPath)) {\n return [\n null,\n {\n filePath: jsonProjectPath,\n fileName: \"project.json\",\n useProjectJson: true,\n },\n ];\n }\n\n return [\n new Error(\n `No project file found in ${projectDir}. Expected project.uiproj or project.json.`,\n ),\n null,\n ];\n}\n\nasync function readProjectManifest(\n fs: IFileSystem,\n filePath: string,\n useProjectJson: boolean,\n): Promise<[Error, null] | [null, ProjectManifest]> {\n const [readError, rawContent] = await catchError(\n fs.readFile(filePath, \"utf-8\"),\n );\n if (readError || !rawContent) {\n return [readError ?? new Error(`Unable to read ${filePath}.`), null];\n }\n\n const [parseError, parsed] = catchError(\n () => JSON.parse(rawContent) as unknown,\n );\n if (parseError) {\n return [\n new Error(`Invalid JSON in project file: ${parseError.message}`),\n null,\n ];\n }\n\n if (!isRecord(parsed)) {\n return [new Error(`Invalid project file: ${filePath}`), null];\n }\n\n const designOptions = parsed.designOptions;\n const outputType =\n useProjectJson && isRecord(designOptions)\n ? readString(designOptions.outputType)\n : undefined;\n const projectType = outputType ?? readString(parsed.ProjectType);\n\n if (!projectType) {\n return [new Error(`ProjectType not found in ${filePath}`), null];\n }\n\n return [\n null,\n {\n projectType,\n },\n ];\n}\n\nexport async function readSolutionManifest(\n fs: IFileSystem,\n solutionFile: string,\n): Promise<\n | [Error, null]\n | [\n null,\n {\n content: Record<string, unknown>;\n projects: UipxProject[];\n },\n ]\n> {\n const [readError, rawContent] = await catchError(\n fs.readFile(solutionFile, \"utf-8\"),\n );\n if (readError || !rawContent) {\n return [\n readError ??\n new Error(`Unable to read solution file: ${solutionFile}`),\n null,\n ];\n }\n\n const [parseError, parsed] = catchError(\n () => JSON.parse(rawContent) as unknown,\n );\n if (parseError) {\n return [\n new Error(`Invalid JSON in solution file: ${parseError.message}`),\n null,\n ];\n }\n\n if (!isRecord(parsed)) {\n return [\n new Error(\n `Invalid solution file: ${solutionFile} must contain a JSON object.`,\n ),\n null,\n ];\n }\n\n if (!Array.isArray(parsed.Projects)) {\n return [\n new Error(\n `Invalid solution file: ${solutionFile} must contain a Projects array.`,\n ),\n null,\n ];\n }\n\n const projects: UipxProject[] = [];\n for (const [index, project] of parsed.Projects.entries()) {\n if (!isRecord(project)) {\n return [\n new Error(\n `Invalid solution file: Projects[${index}] must be an object.`,\n ),\n null,\n ];\n }\n\n const projectRelativePath = readString(project.ProjectRelativePath);\n if (!projectRelativePath) {\n return [\n new Error(\n `Invalid solution file: Projects[${index}] is missing ProjectRelativePath. Use 'uip solution project add' to repair the manifest.`,\n ),\n null,\n ];\n }\n\n projects.push({\n ...project,\n Type: readString(project.Type) ?? \"\",\n ProjectRelativePath: projectRelativePath,\n Id: readString(project.Id) ?? \"\",\n });\n }\n\n return [null, { content: parsed, projects }];\n}\n\nfunction readString(value: unknown): string | undefined {\n return typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n\nfunction buildRegistrationSuccessInstructions(solutionDir: string): string {\n return [\n \"The project is listed in the parent solution manifest.\",\n \"Packing or uploading the solution will sync solution resources automatically.\",\n `To sync resources before packaging, run 'uip solution resources refresh --solution-folder \"${solutionDir}\"'.`,\n ].join(\"\\n\");\n}\n\nfunction buildRegistrationFailureInstructions(\n projectDir: string,\n details: string,\n): string {\n return [\n \"Automatic solution registration could not complete.\",\n `Run 'uip solution project add \"${projectDir}\" <solution.uipx>' after checking the project and solution files.`,\n `Details: ${details}`,\n ].join(\"\\n\");\n}\n\nfunction buildStandaloneInstructions(projectDir: string): string {\n return [\n \"No parent solution was found by walking ancestor directories.\",\n \"Studio Web upload, `flow debug`, and packaging require an enclosing solution.\",\n `To link this project to a solution, run 'uip solution init \"<SolutionName>\"' then 'uip solution project add \"${projectDir}\" <SolutionName>.uipx'.`,\n ].join(\"\\n\");\n}\n\nfunction buildOptedOutInstructions(projectDir: string): string {\n return [\n \"Automatic solution registration was skipped because --skip-solution-registration was passed.\",\n `To register this project later, run 'uip solution project add \"${projectDir}\" <SolutionName>.uipx' from within the solution.`,\n ].join(\"\\n\");\n}\n\n/**\n * Read the .uipx solution manifest at `solutionFile` and report whether the\n * project at `projectDir` is registered in its `Projects[]` array.\n *\n * Matching is path-based: each `Projects[].ProjectRelativePath` is resolved\n * to an absolute project directory and compared to `projectDir` after\n * canonicalization via `realpath()`. Canonicalization makes the comparison\n * tolerant of:\n * - case-folding differences on macOS / Windows filesystems\n * - symlinks that resolve `projectDir` and the manifest entry to the same\n * underlying inode through different surface forms\n * If `realpath()` fails (e.g. the path does not exist), the literal path is\n * used — the surrounding pre-flight will already surface the missing-dir\n * error separately, so we should not double-fail here.\n *\n * Throws when the manifest cannot be read or parsed (invalid JSON, missing\n * `Projects` array, malformed entry). The boolean return is reserved for\n * the answerable question \"is this project listed?\" — a corrupt manifest\n * is a separate failure mode that callers must not silently translate\n * into \"not registered\", since the repair (`uip solution project add`)\n * won't fix a manifest that fails to parse.\n *\n * Used by `flow debug` to catch the empty-solution-archive case BEFORE\n * uploading to Studio Web (MST-10004). Studio Web's import endpoint rejects\n * archives whose `Projects[]` is empty (or whose listed projects don't match\n * the staged contents) with an opaque HTTP 400 — failing locally with the\n * project path and the manifest path is far more actionable.\n */\nexport async function isProjectRegisteredInSolution(\n fs: IFileSystem,\n projectDir: string,\n solutionFile: string,\n): Promise<boolean> {\n const [readErr, manifest] = await readSolutionManifest(fs, solutionFile);\n if (readErr) {\n throw readErr;\n }\n if (!manifest) {\n throw new Error(`Unable to read solution manifest: ${solutionFile}`);\n }\n\n const solutionDir = fs.path.dirname(solutionFile);\n const projectDirReal = await canonicalizePath(fs, projectDir);\n\n for (const project of manifest.projects) {\n const candidateDir = fs.path.resolve(\n solutionDir,\n fs.path.dirname(\n toPortableRelativePath(project.ProjectRelativePath),\n ),\n );\n const candidateReal = await canonicalizePath(fs, candidateDir);\n if (candidateReal === projectDirReal) {\n return true;\n }\n }\n return false;\n}\n\nasync function canonicalizePath(fs: IFileSystem, p: string): Promise<string> {\n const [err, real] = await catchError(fs.realpath(p));\n return err || !real ? p : real;\n}\n",
|
|
105
|
+
"import { createRequire } from 'module';\nvar require = createRequire('/');\n// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\n// Mediocre shim\nvar Worker;\nvar workerAdd = \";var __w=require('worker_threads');__w.parentPort.on('message',function(m){onmessage({data:m})}),postMessage=function(m,t){__w.parentPort.postMessage(m,t)},close=process.exit;self=global\";\ntry {\n Worker = require('worker_threads').Worker;\n}\ncatch (e) {\n}\nvar wk = Worker ? function (c, _, msg, transfer, cb) {\n var done = false;\n var w = new Worker(c + workerAdd, { eval: true })\n .on('error', function (e) { return cb(e, null); })\n .on('message', function (m) { return cb(null, m); })\n .on('exit', function (c) {\n if (c && !done)\n cb(new Error('exited with code ' + c), null);\n });\n w.postMessage(msg, transfer);\n w.terminate = function () {\n done = true;\n return Worker.prototype.terminate.call(w);\n };\n return w;\n} : function (_, __, ___, ____, cb) {\n setImmediate(function () { return cb(new Error('async operations unsupported - update to Node 12+ (or Node 10-11 with the --experimental-worker CLI flag)'), null); });\n var NOP = function () { };\n return {\n terminate: NOP,\n postMessage: NOP\n };\n};\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data.length) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush();\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function () { w.postMessage([]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n */\n Deflate.prototype.flush = function () {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n */\n Gzip.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n // process concatenated GZIP\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n */\n Zlib.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n",
|
|
106
|
+
"/**\n * Shared zip utilities for solution packaging.\n * Uses fflate for in-process zip creation (no external zip CLI dependency).\n */\n\nimport type { IFileSystem } from \"@uipath/filesystem\";\nimport { zipSync } from \"fflate\";\n\n/**\n * Directory names that are never part of a solution bundle. Skipped at walk\n * time so the bundle stays small and Studio Web doesn't receive\n * developer-local artifacts.\n *\n * .venv Python virtualenvs (per-agent under solution/<agent>/.venv).\n * Each is hundreds of MB and contains binaries that won't\n * execute on the Studio Web side anyway.\n * node_modules Node dependency cache; same reasoning as .venv.\n * __pycache__ Python bytecode; regenerated on import.\n * .git VCS metadata; never belongs in an upload.\n *\n * Callers can extend this set per-walk via the `additionalExcludeDirs` option\n * (sourced from a `.uipignore` file at the solution root by bundle-service).\n */\nexport const DEFAULT_EXCLUDED_DIR_NAMES: ReadonlySet<string> = new Set([\n \".venv\",\n \"node_modules\",\n \"__pycache__\",\n \".git\",\n]);\n\n/** File name read by bundle-service to extend the default exclude set. */\nexport const UIPIGNORE_FILENAME = \".uipignore\";\n\n/**\n * Parse a `.uipignore` file body: one directory name per line, `#` for line\n * comments, blank lines ignored. Returns the names as a Set. The parser is\n * deliberately minimal — no globs, no negation, no path separators. Each\n * entry matches by exact directory name at any depth (same semantics as the\n * built-in defaults).\n */\nexport function parseUipignore(body: string): Set<string> {\n const names = new Set<string>();\n for (const rawLine of body.split(/\\r?\\n/)) {\n const line = rawLine.split(\"#\")[0]?.trim();\n if (!line) {\n continue;\n }\n if (line.includes(\"/\") || line.includes(\"\\\\\")) {\n // Path separators imply glob-like semantics we don't support yet.\n // Skip silently rather than partial-match.\n continue;\n }\n names.add(line);\n }\n return names;\n}\n\n/**\n * Recursively walk `dir`, returning every file path and every empty directory\n * path beneath it. An empty directory is a directory whose `readdir` returns\n * no entries; deeper empty chains are represented by their leaves only, since\n * fflate creates parent directory records implicitly when it sees `a/b/c/`.\n *\n * Skips DEFAULT_EXCLUDED_DIR_NAMES plus any `additionalExcludeDirs` the\n * caller provides. Exclusion is by exact directory name at any depth.\n */\nexport async function collectTree(\n fs: IFileSystem,\n dir: string,\n options: { additionalExcludeDirs?: Iterable<string> } = {},\n): Promise<{ files: string[]; emptyDirs: string[] }> {\n const files: string[] = [];\n const emptyDirs: string[] = [];\n\n const excluded = new Set<string>(DEFAULT_EXCLUDED_DIR_NAMES);\n if (options.additionalExcludeDirs) {\n for (const name of options.additionalExcludeDirs) {\n excluded.add(name);\n }\n }\n\n async function walk(current: string, isRoot: boolean): Promise<void> {\n const entries = await fs.readdir(current);\n if (entries.length === 0) {\n if (!isRoot) {\n emptyDirs.push(current);\n }\n return;\n }\n for (const entryName of entries) {\n const fullPath = fs.path.join(current, entryName);\n const entryStat = await fs.stat(fullPath);\n if (entryStat?.isDirectory()) {\n // Exclusion is by directory name only; a regular file that\n // happens to be named e.g. node_modules must still be kept.\n if (excluded.has(entryName)) {\n continue;\n }\n await walk(fullPath, false);\n } else if (entryStat?.isFile()) {\n files.push(fullPath);\n }\n }\n }\n\n await walk(dir, true);\n return { files, emptyDirs };\n}\n\n/**\n * Recursively collect all file paths under a directory.\n */\nexport async function collectFiles(\n fs: IFileSystem,\n dir: string,\n options: { additionalExcludeDirs?: Iterable<string> } = {},\n): Promise<string[]> {\n return (await collectTree(fs, dir, options)).files;\n}\n\n/**\n * Collect all files (and empty directories) under `dir` and zip them using\n * fflate. Empty directories are written as standard zip directory records\n * (path keys ending with `/` mapped to a zero-length buffer) so they survive\n * the round-trip to Studio Web.\n *\n * Returns the zip as a Uint8Array.\n */\nexport async function createZipFromDir(\n fs: IFileSystem,\n dir: string,\n options: { additionalExcludeDirs?: Iterable<string> } = {},\n): Promise<Uint8Array> {\n const { files, emptyDirs } = await collectTree(fs, dir, options);\n const zippable: Record<string, Uint8Array> = {};\n\n for (const filePath of files) {\n const relPath = fs.path.relative(dir, filePath).replace(/\\\\/g, \"/\");\n const data = await fs.readFile(filePath);\n if (data) {\n zippable[relPath] = new Uint8Array(data);\n }\n }\n\n for (const emptyDir of emptyDirs) {\n const relPath = fs.path.relative(dir, emptyDir).replace(/\\\\/g, \"/\");\n if (!relPath) {\n continue;\n }\n zippable[`${relPath}/`] = new Uint8Array(0);\n }\n\n return zipSync(zippable, { level: 6 });\n}\n",
|
|
107
|
+
"/**\n * Bundle a solution directory into a .uis file.\n * Also provides buildSolutionPackageFromDir for building .uis from\n * a pre-assembled solution directory (used by debug services).\n */\n\nimport { catchError, logger } from \"@uipath/common\";\nimport type { IFileSystem } from \"@uipath/filesystem\";\nimport { readUipxFile } from \"./solution-file\";\nimport type { BundleResult } from \"./types\";\nimport {\n collectTree,\n createZipFromDir,\n DEFAULT_EXCLUDED_DIR_NAMES,\n parseUipignore,\n UIPIGNORE_FILENAME,\n} from \"./zip-utils\";\n\n/**\n * Read `.uipignore` from a directory (if present) and return the parsed set of\n * additional directory names to exclude during bundling. Used both at the\n * solution root and per project. `.uipignore` is best-effort: a missing, empty,\n * or unreadable file yields an empty set so bundling proceeds with the defaults\n * rather than failing.\n */\nasync function readUipignore(\n fs: IFileSystem,\n dir: string,\n): Promise<Set<string>> {\n const ignorePath = fs.path.join(dir, UIPIGNORE_FILENAME);\n if (!(await fs.exists(ignorePath))) {\n return new Set();\n }\n try {\n const body = await fs.readFile(ignorePath, \"utf-8\");\n if (!body) {\n return new Set();\n }\n return parseUipignore(body);\n } catch (err) {\n logger.warn(\n `Could not read ${UIPIGNORE_FILENAME}; ignoring it: ${String(err)}`,\n );\n return new Set();\n }\n}\n\n/**\n * Merge a project's own `.uipignore` (if any) with the solution-level exclude\n * set, yielding solution-level ∪ project-level (the caller layers\n * DEFAULT_EXCLUDED_DIR_NAMES on top). Lets a project scope additional excludes\n * to itself without affecting sibling projects. Returns the solution-level set\n * unchanged when the project has no (or empty) `.uipignore`.\n */\nasync function mergeProjectUipignore(\n fs: IFileSystem,\n projectPath: string,\n projectLabel: string,\n solutionExcludeDirs: Set<string>,\n): Promise<Set<string>> {\n const projectExtra = await readUipignore(fs, projectPath);\n if (projectExtra.size === 0) {\n return solutionExcludeDirs;\n }\n const merged = new Set<string>(solutionExcludeDirs);\n for (const name of projectExtra) {\n merged.add(name);\n }\n logger.info(\n `[${projectLabel}] Applying ${projectExtra.size} extra exclude(s) from project ${UIPIGNORE_FILENAME}: ${[...projectExtra].join(\", \")}`,\n );\n return merged;\n}\n\n/** Normalize Windows backslashes to forward slashes for cross-platform compatibility. */\nconst toForwardSlash = (p: string) => p.replace(/\\\\/g, \"/\");\n\n/**\n * Mirror `srcDir` into `destBaseDir`, computing relative paths from\n * `relativeBase`. Files are copied; empty directories are recreated so they\n * survive into the resulting `.uis` bundle (Studio Web may rely on scaffold\n * folders such as an agent project's `features/`).\n *\n * If `srcDir` itself is empty, the corresponding directory is created at the\n * destination (unless `relativeBase === srcDir`, in which case the relative\n * path would be empty and there is nothing to materialize beyond `destBaseDir`\n * itself, which the caller has already created).\n */\nasync function mirrorTree(\n fs: IFileSystem,\n srcDir: string,\n relativeBase: string,\n destBaseDir: string,\n additionalExcludeDirs?: Iterable<string>,\n): Promise<void> {\n const { files, emptyDirs } = await collectTree(fs, srcDir, {\n additionalExcludeDirs,\n });\n\n if (files.length === 0 && emptyDirs.length === 0) {\n const rootRel = fs.path.relative(relativeBase, srcDir);\n if (rootRel) {\n await fs.mkdir(fs.path.join(destBaseDir, rootRel));\n }\n return;\n }\n\n for (const f of files) {\n const relPath = fs.path.relative(relativeBase, f);\n const destPath = fs.path.join(destBaseDir, relPath);\n const data = await fs.readFile(f);\n if (data) {\n await fs.writeFile(destPath, data);\n } else {\n logger.warn(`Skipping empty or unreadable file: ${f}`);\n }\n }\n\n for (const dir of emptyDirs) {\n const relPath = fs.path.relative(relativeBase, dir);\n if (!relPath) {\n continue;\n }\n await fs.mkdir(fs.path.join(destBaseDir, relPath));\n }\n}\n\n/**\n * Copy a project directory into the staging area, lifting files from\n * `content/` and `flow_files/` one level up into the project root. Empty\n * subdirectories are preserved so scaffold folders (e.g. an agent project's\n * `features/`) survive the bundle round-trip.\n */\nasync function flattenProjectDir(\n fs: IFileSystem,\n srcProjectDir: string,\n destProjectDir: string,\n additionalExcludeDirs?: Iterable<string>,\n): Promise<void> {\n await fs.mkdir(destProjectDir);\n\n // Materialize the exclude set once so the top-level entry name check below\n // matches the exact same set that mirrorTree applies further down the\n // tree. The defaults come from the shared DEFAULT_EXCLUDED_DIR_NAMES (the\n // same source collectTree uses); we re-check them here so a project's own\n // .venv at the top level doesn't sneak past flattenProjectDir's loop.\n const topLevelExclude = new Set<string>(DEFAULT_EXCLUDED_DIR_NAMES);\n if (additionalExcludeDirs) {\n for (const name of additionalExcludeDirs) {\n topLevelExclude.add(name);\n }\n }\n\n const entries = await fs.readdir(srcProjectDir);\n for (const entryName of entries) {\n const srcPath = fs.path.join(srcProjectDir, entryName);\n const entryStat = await fs.stat(srcPath);\n if (!entryStat) {\n continue;\n }\n if (entryStat.isFile()) {\n const data = await fs.readFile(srcPath);\n if (data) {\n await fs.writeFile(\n fs.path.join(destProjectDir, entryName),\n data,\n );\n }\n } else if (entryStat.isDirectory()) {\n // Exclusion is by directory name only; a regular file named e.g.\n // node_modules is handled by the isFile() branch above and kept.\n if (topLevelExclude.has(entryName)) {\n continue;\n }\n if (entryName === \"content\" || entryName === \"flow_files\") {\n await mirrorTree(\n fs,\n srcPath,\n srcPath,\n destProjectDir,\n additionalExcludeDirs,\n );\n } else {\n await mirrorTree(\n fs,\n srcPath,\n srcProjectDir,\n destProjectDir,\n additionalExcludeDirs,\n );\n }\n }\n }\n}\n\n/**\n * Bundle a solution directory into a .uis file.\n * Validates the .uipx file, flattens project directories, and zips everything.\n *\n * Returns the path to the .uis file and metadata.\n * The caller is responsible for cleaning up the .uis file if it was created in a temp location.\n */\nexport async function bundleSolution(\n fs: IFileSystem,\n solutionDir: string,\n outputDir: string,\n outputName?: string,\n): Promise<BundleResult> {\n const resolvedPath = fs.path.resolve(solutionDir);\n\n const solStat = await fs.stat(resolvedPath);\n if (!solStat) {\n throw new Error(`Path not found: ${resolvedPath}`);\n }\n\n if (!solStat.isDirectory()) {\n throw new Error(\n `Not a directory: ${resolvedPath}. Provide the solution directory containing a .uipx file.`,\n );\n }\n\n const { uipx, uipxFileName } = await readUipxFile(fs, resolvedPath);\n const additionalExcludeDirs = await readUipignore(fs, resolvedPath);\n if (additionalExcludeDirs.size > 0) {\n logger.info(\n `Applying ${additionalExcludeDirs.size} extra exclude(s) from .uipignore: ${[...additionalExcludeDirs].join(\", \")}`,\n );\n }\n\n // The effective exclude set (defaults + .uipignore). collectTree only\n // checks entries it *encounters* while walking, never the root it is\n // handed — so the optional top-level trees below (resources/, userProfile/)\n // are guarded explicitly to honor the documented \"exact directory name at\n // any depth\" semantics for depth 0. Project directories are intentionally\n // not guarded: they are driven by SolutionStorage.json, and dropping one\n // would leave a dangling manifest reference.\n const effectiveExclude = new Set<string>(DEFAULT_EXCLUDED_DIR_NAMES);\n for (const name of additionalExcludeDirs) {\n effectiveExclude.add(name);\n }\n\n // Normalize path separators for Linux backend compatibility\n for (const project of uipx.Projects) {\n project.ProjectRelativePath = toForwardSlash(\n project.ProjectRelativePath,\n );\n }\n\n const solutionStorage = {\n SolutionId: uipx.SolutionId,\n Projects: uipx.Projects.map((p) => ({\n ProjectId: p.Id,\n ProjectRelativePath: p.ProjectRelativePath,\n })),\n };\n\n const solutionName = outputName || fs.path.basename(uipxFileName, \".uipx\");\n const stagingDir = fs.path.join(resolvedPath, `.uis-staging-${Date.now()}`);\n await fs.mkdir(stagingDir);\n\n try {\n await fs.writeFile(\n fs.path.join(stagingDir, \"SolutionStorage.json\"),\n JSON.stringify(solutionStorage),\n );\n\n await fs.writeFile(\n fs.path.join(stagingDir, uipxFileName),\n JSON.stringify(uipx),\n );\n\n for (const project of uipx.Projects) {\n const projectDir = fs.path.dirname(project.ProjectRelativePath);\n const srcProjectPath = fs.path.join(resolvedPath, projectDir);\n\n const projectStat = await fs.stat(srcProjectPath);\n if (!projectStat) {\n throw new Error(\n `Project directory not found: ${srcProjectPath}`,\n );\n }\n\n // A project may carry its own .uipignore; merge it with the\n // solution-level set so excludes can be scoped per project.\n const projectExcludeDirs = await mergeProjectUipignore(\n fs,\n srcProjectPath,\n projectDir,\n additionalExcludeDirs,\n );\n\n await flattenProjectDir(\n fs,\n srcProjectPath,\n fs.path.join(stagingDir, projectDir),\n projectExcludeDirs,\n );\n }\n\n const resourcesPath = fs.path.join(resolvedPath, \"resources\");\n if (\n !effectiveExclude.has(\"resources\") &&\n (await fs.exists(resourcesPath))\n ) {\n await mirrorTree(\n fs,\n resourcesPath,\n resolvedPath,\n stagingDir,\n additionalExcludeDirs,\n );\n }\n\n const userProfilePath = fs.path.join(resolvedPath, \"userProfile\");\n if (\n !effectiveExclude.has(\"userProfile\") &&\n (await fs.exists(userProfilePath))\n ) {\n await mirrorTree(\n fs,\n userProfilePath,\n resolvedPath,\n stagingDir,\n additionalExcludeDirs,\n );\n }\n\n const resolvedOutputDir = fs.path.resolve(outputDir);\n if (!(await fs.exists(resolvedOutputDir))) {\n await fs.mkdir(resolvedOutputDir);\n }\n const uisPath = fs.path.join(resolvedOutputDir, `${solutionName}.uis`);\n\n const zipData = await createZipFromDir(fs, stagingDir);\n await fs.writeFile(uisPath, zipData);\n\n const uipxPath = fs.path.join(resolvedPath, uipxFileName);\n\n return {\n uisPath,\n solutionName,\n solutionId: uipx.SolutionId,\n uipxPath,\n projects: uipx.Projects.map((p) => ({\n Name: fs.path.dirname(p.ProjectRelativePath),\n Type: p.Type,\n })),\n };\n } finally {\n await fs.rm(stagingDir);\n }\n}\n\n/**\n * Build a .uis solution package from a pre-assembled solution directory.\n * The directory should already contain project subdirectories and optionally a .uipx file.\n * If a .uipx exists, SolutionStorage.json is generated from it.\n *\n * Used by debug services that prepare their own staging directory.\n * Uses fflate for in-process zip creation (no external zip CLI dependency).\n */\nexport async function buildSolutionPackageFromDir(\n fs: IFileSystem,\n solutionDir: string,\n): Promise<string> {\n const absoluteSolutionDir = fs.path.resolve(solutionDir);\n const solutionName = fs.path.basename(absoluteSolutionDir) || \"Solution\";\n\n // Create staging directory with solution contents\n const tmpDir = fs.env.tmpdir();\n const stagingDir = fs.path.join(tmpDir, `.debug-solution-${Date.now()}`);\n await fs.mkdir(stagingDir);\n\n try {\n // Copy the entire solution directory into staging\n await mirrorTree(\n fs,\n absoluteSolutionDir,\n absoluteSolutionDir,\n stagingDir,\n );\n\n // Ensure SolutionStorage.json exists (required by Studio Web import)\n const storagePath = fs.path.join(stagingDir, \"SolutionStorage.json\");\n const uipxFiles = (await fs.readdir(stagingDir)).filter((f: string) =>\n f.endsWith(\".uipx\"),\n );\n if (uipxFiles.length > 0) {\n const uipxFile = uipxFiles[0];\n const uipxContent = await fs.readFile(\n fs.path.join(stagingDir, uipxFile),\n \"utf-8\",\n );\n if (!uipxContent) {\n throw new Error(\n `Could not read ${uipxFile}; unable to create SolutionStorage.json.`,\n );\n }\n\n const [parseError, uipx] = catchError(\n () =>\n JSON.parse(uipxContent) as {\n SolutionId?: string;\n Projects?: Array<{\n Id?: string;\n ProjectRelativePath?: string;\n }>;\n },\n );\n if (parseError) {\n throw new Error(\n `Could not parse ${uipxFile}; unable to create SolutionStorage.json: ${parseError.message}`,\n );\n }\n\n const storageJson = {\n SolutionId: uipx.SolutionId ?? crypto.randomUUID(),\n Projects: (uipx.Projects ?? []).map((p) => ({\n ProjectId: p.Id ?? crypto.randomUUID(),\n ProjectRelativePath: p.ProjectRelativePath ?? \"\",\n })),\n };\n await fs.writeFile(storagePath, JSON.stringify(storageJson));\n } else if (!(await fs.exists(storagePath))) {\n throw new Error(\n `SolutionStorage.json is missing and no .uipx file was found in ${absoluteSolutionDir}. Run 'uip solution init' and add/import the project into a solution, or include a valid SolutionStorage.json before uploading or debugging.`,\n );\n }\n\n // Zip using fflate\n const uisPath = fs.path.join(\n tmpDir,\n `${solutionName}-${Date.now()}.uis`,\n );\n const zipData = await createZipFromDir(fs, stagingDir);\n await fs.writeFile(uisPath, zipData);\n\n return uisPath;\n } finally {\n await fs.rm(stagingDir).catch(() => {});\n }\n}\n\n// Re-export resolveSolutionDir for convenience\nexport { resolveSolutionDir } from \"./solution-file\";\n",
|
|
108
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport const BASE_PATH = \"https://alpha.uipath.com/studio_/backend\".replace(/\\/+$/, \"\");\n\nexport interface ConfigurationParameters {\n basePath?: string; // override base path\n fetchApi?: FetchAPI; // override for fetch implementation\n middleware?: Middleware[]; // middleware to apply before/after fetch requests\n queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings\n username?: string; // parameter for basic security\n password?: string; // parameter for basic security\n apiKey?: string | Promise<string> | ((name: string) => string | Promise<string>); // parameter for apiKey security\n accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string | Promise<string>); // parameter for oauth2 security\n headers?: HTTPHeaders; //header params we want to use on every request\n credentials?: RequestCredentials; //value for the credentials param we want to use on each request\n}\n\nexport class Configuration {\n constructor(private configuration: ConfigurationParameters = {}) {}\n\n set config(configuration: Configuration) {\n this.configuration = configuration;\n }\n\n get basePath(): string {\n return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH;\n }\n\n get fetchApi(): FetchAPI | undefined {\n return this.configuration.fetchApi;\n }\n\n get middleware(): Middleware[] {\n return this.configuration.middleware || [];\n }\n\n get queryParamsStringify(): (params: HTTPQuery) => string {\n return this.configuration.queryParamsStringify || querystring;\n }\n\n get username(): string | undefined {\n return this.configuration.username;\n }\n\n get password(): string | undefined {\n return this.configuration.password;\n }\n\n get apiKey(): ((name: string) => string | Promise<string>) | undefined {\n const apiKey = this.configuration.apiKey;\n if (apiKey) {\n return typeof apiKey === 'function' ? apiKey : () => apiKey;\n }\n return undefined;\n }\n\n get accessToken(): ((name?: string, scopes?: string[]) => string | Promise<string>) | undefined {\n const accessToken = this.configuration.accessToken;\n if (accessToken) {\n return typeof accessToken === 'function' ? accessToken : async () => accessToken;\n }\n return undefined;\n }\n\n get headers(): HTTPHeaders | undefined {\n return this.configuration.headers;\n }\n\n get credentials(): RequestCredentials | undefined {\n return this.configuration.credentials;\n }\n}\n\nexport const DefaultConfig = new Configuration();\n\n/**\n * This is the base class for all generated API classes.\n */\nexport class BaseAPI {\n\n private static readonly jsonRegex = new RegExp('^(:?application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(:?;.*)?$', 'i');\n private middleware: Middleware[];\n\n constructor(protected configuration = DefaultConfig) {\n this.middleware = configuration.middleware;\n }\n\n withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]) {\n const next = this.clone<T>();\n next.middleware = next.middleware.concat(...middlewares);\n return next;\n }\n\n withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>) {\n const middlewares = preMiddlewares.map((pre) => ({ pre }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>) {\n const middlewares = postMiddlewares.map((post) => ({ post }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n /**\n * Check if the given MIME is a JSON MIME.\n * JSON MIME examples:\n * application/json\n * application/json; charset=UTF8\n * APPLICATION/JSON\n * application/vnd.company+json\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\n * @return True if the given MIME is JSON, false otherwise.\n */\n protected isJsonMime(mime: string | null | undefined): boolean {\n if (!mime) {\n return false;\n }\n return BaseAPI.jsonRegex.test(mime);\n }\n\n protected async request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise<Response> {\n const { url, init } = await this.createFetchParams(context, initOverrides);\n const response = await this.fetchApi(url, init);\n if (response && (response.status >= 200 && response.status < 300)) {\n return response;\n }\n throw new ResponseError(response, 'Response returned an error code');\n }\n\n private async createFetchParams(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction) {\n let url = this.configuration.basePath + context.path;\n if (context.query !== undefined && Object.keys(context.query).length !== 0) {\n // only add the querystring to the URL if there are query parameters.\n // this is done to avoid urls ending with a \"?\" character which buggy webservers\n // do not handle correctly sometimes.\n url += '?' + this.configuration.queryParamsStringify(context.query);\n }\n\n const headers = Object.assign({}, this.configuration.headers, context.headers);\n Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {});\n\n const initOverrideFn =\n typeof initOverrides === \"function\"\n ? initOverrides\n : async () => initOverrides;\n\n const initParams = {\n method: context.method,\n headers,\n body: context.body,\n credentials: this.configuration.credentials,\n };\n\n const overriddenInit: RequestInit = {\n ...initParams,\n ...(await initOverrideFn({\n init: initParams,\n context,\n }))\n };\n\n let body: any;\n if (isFormData(overriddenInit.body)\n || (overriddenInit.body instanceof URLSearchParams)\n || isBlob(overriddenInit.body)) {\n body = overriddenInit.body;\n } else if (this.isJsonMime(headers['Content-Type'])) {\n body = JSON.stringify(overriddenInit.body);\n } else {\n body = overriddenInit.body;\n }\n\n const init: RequestInit = {\n ...overriddenInit,\n body\n };\n\n return { url, init };\n }\n\n private fetchApi = async (url: string, init: RequestInit) => {\n let fetchParams = { url, init };\n for (const middleware of this.middleware) {\n if (middleware.pre) {\n fetchParams = await middleware.pre({\n fetch: this.fetchApi,\n ...fetchParams,\n }) || fetchParams;\n }\n }\n let response: Response | undefined = undefined;\n try {\n response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init);\n } catch (e) {\n for (const middleware of this.middleware) {\n if (middleware.onError) {\n response = await middleware.onError({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n error: e,\n response: response ? response.clone() : undefined,\n }) || response;\n }\n }\n if (response === undefined) {\n if (e instanceof Error) {\n throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response');\n } else {\n throw e;\n }\n }\n }\n for (const middleware of this.middleware) {\n if (middleware.post) {\n response = await middleware.post({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n response: response.clone(),\n }) || response;\n }\n }\n return response;\n }\n\n /**\n * Create a shallow clone of `this` by constructing a new instance\n * and then shallow cloning data members.\n */\n private clone<T extends BaseAPI>(this: T): T {\n const constructor = this.constructor as any;\n const next = new constructor(this.configuration);\n next.middleware = this.middleware.slice();\n return next;\n }\n};\n\nfunction isBlob(value: any): value is Blob {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n\nfunction isFormData(value: any): value is FormData {\n return typeof FormData !== \"undefined\" && value instanceof FormData;\n}\n\nexport class ResponseError extends Error {\n override name: \"ResponseError\" = \"ResponseError\";\n constructor(public response: Response, msg?: string) {\n super(msg);\n }\n}\n\nexport class FetchError extends Error {\n override name: \"FetchError\" = \"FetchError\";\n constructor(public cause: Error, msg?: string) {\n super(msg);\n }\n}\n\nexport class RequiredError extends Error {\n override name: \"RequiredError\" = \"RequiredError\";\n constructor(public field: string, msg?: string) {\n super(msg);\n }\n}\n\nexport const COLLECTION_FORMATS = {\n csv: \",\",\n ssv: \" \",\n tsv: \"\\t\",\n pipes: \"|\",\n};\n\nexport type FetchAPI = WindowOrWorkerGlobalScope['fetch'];\n\nexport type Json = any;\nexport type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD';\nexport type HTTPHeaders = { [key: string]: string };\nexport type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery };\nexport type HTTPBody = Json | FormData | URLSearchParams;\nexport type HTTPRequestInit = { headers?: HTTPHeaders; method: HTTPMethod; credentials?: RequestCredentials; body?: HTTPBody };\nexport type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';\n\nexport type InitOverrideFunction = (requestContext: { init: HTTPRequestInit, context: RequestOpts }) => Promise<RequestInit>\n\nexport interface FetchParams {\n url: string;\n init: RequestInit;\n}\n\nexport interface RequestOpts {\n path: string;\n method: HTTPMethod;\n headers: HTTPHeaders;\n query?: HTTPQuery;\n body?: HTTPBody;\n}\n\nexport function querystring(params: HTTPQuery, prefix: string = ''): string {\n return Object.keys(params)\n .map(key => querystringSingleKey(key, params[key], prefix))\n .filter(part => part.length > 0)\n .join('&');\n}\n\nfunction querystringSingleKey(key: string, value: string | number | null | undefined | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery, keyPrefix: string = ''): string {\n const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key);\n if (value instanceof Array) {\n const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue)))\n .join(`&${encodeURIComponent(fullKey)}=`);\n return `${encodeURIComponent(fullKey)}=${multiValue}`;\n }\n if (value instanceof Set) {\n const valueAsArray = Array.from(value);\n return querystringSingleKey(key, valueAsArray, keyPrefix);\n }\n if (value instanceof Date) {\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`;\n }\n if (value instanceof Object) {\n return querystring(value as HTTPQuery, fullKey);\n }\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;\n}\n\nexport function exists(json: any, key: string) {\n const value = json[key];\n return value !== null && value !== undefined;\n}\n\nexport function mapValues(data: any, fn: (item: any) => any) {\n const result: { [key: string]: any } = {};\n for (const key of Object.keys(data)) {\n result[key] = fn(data[key]);\n }\n return result;\n}\n\nexport function canConsumeForm(consumes: Consume[]): boolean {\n for (const consume of consumes) {\n if ('multipart/form-data' === consume.contentType) {\n return true;\n }\n }\n return false;\n}\n\nexport interface Consume {\n contentType: string;\n}\n\nexport interface RequestContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n}\n\nexport interface ResponseContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n response: Response;\n}\n\nexport interface ErrorContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n error: unknown;\n response?: Response;\n}\n\nexport interface Middleware {\n pre?(context: RequestContext): Promise<FetchParams | void>;\n post?(context: ResponseContext): Promise<Response | void>;\n onError?(context: ErrorContext): Promise<Response | void>;\n}\n\nexport interface ApiResponse<T> {\n raw: Response;\n value(): Promise<T>;\n}\n\nexport interface ResponseTransformer<T> {\n (json: any): T;\n}\n\nexport class JSONApiResponse<T> {\n constructor(public raw: Response, private transformer: ResponseTransformer<T> = (jsonValue: any) => jsonValue) {}\n\n async value(): Promise<T> {\n return this.transformer(await this.raw.json());\n }\n}\n\nexport class VoidApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<void> {\n return undefined;\n }\n}\n\nexport class BlobApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<Blob> {\n return await this.raw.blob();\n };\n}\n\nexport class TextApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<string> {\n return await this.raw.text();\n };\n}\n",
|
|
109
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const AccessStatus = {\n NotConfigured: 'notConfigured',\n Allowed: 'allowed',\n Subscribed: 'subscribed',\n AdminEnrolled: 'adminEnrolled'\n} as const;\nexport type AccessStatus = typeof AccessStatus[keyof typeof AccessStatus];\n\n\nexport function instanceOfAccessStatus(value: any): boolean {\n for (const key in AccessStatus) {\n if (Object.prototype.hasOwnProperty.call(AccessStatus, key)) {\n if (AccessStatus[key as keyof typeof AccessStatus] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function AccessStatusFromJSON(json: any): AccessStatus {\n return AccessStatusFromJSONTyped(json, false);\n}\n\nexport function AccessStatusFromJSONTyped(json: any, ignoreDiscriminator: boolean): AccessStatus {\n return json as AccessStatus;\n}\n\nexport function AccessStatusToJSON(value?: AccessStatus | null): any {\n return value as any;\n}\n\nexport function AccessStatusToJSONTyped(value: any, ignoreDiscriminator: boolean): AccessStatus {\n return value as AccessStatus;\n}\n\n",
|
|
110
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ProjectDbModel } from './ProjectDbModel';\nimport {\n ProjectDbModelFromJSON,\n ProjectDbModelFromJSONTyped,\n ProjectDbModelToJSON,\n ProjectDbModelToJSONTyped,\n} from './ProjectDbModel';\n\n/**\n * \n * @export\n * @interface PinnedProject\n */\nexport interface PinnedProject {\n /**\n * \n * @type {number}\n * @memberof PinnedProject\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof PinnedProject\n */\n projectDbModelId?: string;\n /**\n * \n * @type {string}\n * @memberof PinnedProject\n */\n userId?: string | null;\n /**\n * \n * @type {Date}\n * @memberof PinnedProject\n */\n creationTime?: Date;\n /**\n * \n * @type {ProjectDbModel}\n * @memberof PinnedProject\n */\n project?: ProjectDbModel;\n}\n\n/**\n * Check if a given object implements the PinnedProject interface.\n */\nexport function instanceOfPinnedProject(value: object): value is PinnedProject {\n return true;\n}\n\nexport function PinnedProjectFromJSON(json: any): PinnedProject {\n return PinnedProjectFromJSONTyped(json, false);\n}\n\nexport function PinnedProjectFromJSONTyped(json: any, ignoreDiscriminator: boolean): PinnedProject {\n if (json == null) {\n return json;\n }\n return {\n \n 'id': json['id'] == null ? undefined : json['id'],\n 'projectDbModelId': json['projectDbModelId'] == null ? undefined : json['projectDbModelId'],\n 'userId': json['userId'] == null ? undefined : json['userId'],\n 'creationTime': json['creationTime'] == null ? undefined : (new Date(json['creationTime'])),\n 'project': json['project'] == null ? undefined : ProjectDbModelFromJSON(json['project']),\n };\n}\n\nexport function PinnedProjectToJSON(json: any): PinnedProject {\n return PinnedProjectToJSONTyped(json, false);\n}\n\nexport function PinnedProjectToJSONTyped(value?: PinnedProject | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'id': value['id'],\n 'projectDbModelId': value['projectDbModelId'],\n 'userId': value['userId'],\n 'creationTime': value['creationTime'] == null ? value['creationTime'] : value['creationTime'].toISOString(),\n 'project': ProjectDbModelToJSON(value['project']),\n };\n}\n\n",
|
|
111
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const ProjectStructure = {\n Legacy: 'legacy',\n UniqueFiles: 'uniqueFiles',\n UniqueFilesWithStorageId: 'uniqueFilesWithStorageId',\n FlatProjectStructure: 'flatProjectStructure',\n Error: 'error',\n Hierarchical: 'hierarchical'\n} as const;\nexport type ProjectStructure = typeof ProjectStructure[keyof typeof ProjectStructure];\n\n\nexport function instanceOfProjectStructure(value: any): boolean {\n for (const key in ProjectStructure) {\n if (Object.prototype.hasOwnProperty.call(ProjectStructure, key)) {\n if (ProjectStructure[key as keyof typeof ProjectStructure] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function ProjectStructureFromJSON(json: any): ProjectStructure {\n return ProjectStructureFromJSONTyped(json, false);\n}\n\nexport function ProjectStructureFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProjectStructure {\n return json as ProjectStructure;\n}\n\nexport function ProjectStructureToJSON(value?: ProjectStructure | null): any {\n return value as any;\n}\n\nexport function ProjectStructureToJSONTyped(value: any, ignoreDiscriminator: boolean): ProjectStructure {\n return value as ProjectStructure;\n}\n\n",
|
|
112
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { UserBindingProfileModel } from './UserBindingProfileModel';\nimport {\n UserBindingProfileModelFromJSON,\n UserBindingProfileModelFromJSONTyped,\n UserBindingProfileModelToJSON,\n UserBindingProfileModelToJSONTyped,\n} from './UserBindingProfileModel';\nimport type { ProjectDbModel } from './ProjectDbModel';\nimport {\n ProjectDbModelFromJSON,\n ProjectDbModelFromJSONTyped,\n ProjectDbModelToJSON,\n ProjectDbModelToJSONTyped,\n} from './ProjectDbModel';\n\n/**\n * \n * @export\n * @interface ProjectAppliedProfileModel\n */\nexport interface ProjectAppliedProfileModel {\n /**\n * \n * @type {string}\n * @memberof ProjectAppliedProfileModel\n */\n projectId?: string;\n /**\n * \n * @type {string}\n * @memberof ProjectAppliedProfileModel\n */\n workflowId?: string;\n /**\n * \n * @type {number}\n * @memberof ProjectAppliedProfileModel\n */\n userProfileId?: number;\n /**\n * \n * @type {ProjectDbModel}\n * @memberof ProjectAppliedProfileModel\n */\n project?: ProjectDbModel;\n /**\n * \n * @type {UserBindingProfileModel}\n * @memberof ProjectAppliedProfileModel\n */\n profile?: UserBindingProfileModel;\n}\n\n/**\n * Check if a given object implements the ProjectAppliedProfileModel interface.\n */\nexport function instanceOfProjectAppliedProfileModel(value: object): value is ProjectAppliedProfileModel {\n return true;\n}\n\nexport function ProjectAppliedProfileModelFromJSON(json: any): ProjectAppliedProfileModel {\n return ProjectAppliedProfileModelFromJSONTyped(json, false);\n}\n\nexport function ProjectAppliedProfileModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProjectAppliedProfileModel {\n if (json == null) {\n return json;\n }\n return {\n \n 'projectId': json['projectId'] == null ? undefined : json['projectId'],\n 'workflowId': json['workflowId'] == null ? undefined : json['workflowId'],\n 'userProfileId': json['userProfileId'] == null ? undefined : json['userProfileId'],\n 'project': json['project'] == null ? undefined : ProjectDbModelFromJSON(json['project']),\n 'profile': json['profile'] == null ? undefined : UserBindingProfileModelFromJSON(json['profile']),\n };\n}\n\nexport function ProjectAppliedProfileModelToJSON(json: any): ProjectAppliedProfileModel {\n return ProjectAppliedProfileModelToJSONTyped(json, false);\n}\n\nexport function ProjectAppliedProfileModelToJSONTyped(value?: ProjectAppliedProfileModel | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'projectId': value['projectId'],\n 'workflowId': value['workflowId'],\n 'userProfileId': value['userProfileId'],\n 'project': ProjectDbModelToJSON(value['project']),\n 'profile': UserBindingProfileModelToJSON(value['profile']),\n };\n}\n\n",
|
|
113
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { UserBindingProfileModel } from './UserBindingProfileModel';\nimport {\n UserBindingProfileModelFromJSON,\n UserBindingProfileModelFromJSONTyped,\n UserBindingProfileModelToJSON,\n UserBindingProfileModelToJSONTyped,\n} from './UserBindingProfileModel';\n\n/**\n * \n * @export\n * @interface PropertyBindingModel\n */\nexport interface PropertyBindingModel {\n /**\n * \n * @type {number}\n * @memberof PropertyBindingModel\n */\n id?: number;\n /**\n * \n * @type {number}\n * @memberof PropertyBindingModel\n */\n profileId?: number;\n /**\n * \n * @type {string}\n * @memberof PropertyBindingModel\n */\n workflowId?: string;\n /**\n * \n * @type {string}\n * @memberof PropertyBindingModel\n */\n activityIdRef?: string | null;\n /**\n * \n * @type {string}\n * @memberof PropertyBindingModel\n */\n propertyName?: string | null;\n /**\n * \n * @type {string}\n * @memberof PropertyBindingModel\n */\n contractName?: string | null;\n /**\n * \n * @type {string}\n * @memberof PropertyBindingModel\n */\n resourceKey?: string | null;\n /**\n * \n * @type {string}\n * @memberof PropertyBindingModel\n */\n propertyValue?: string | null;\n /**\n * \n * @type {UserBindingProfileModel}\n * @memberof PropertyBindingModel\n */\n profile?: UserBindingProfileModel;\n}\n\n/**\n * Check if a given object implements the PropertyBindingModel interface.\n */\nexport function instanceOfPropertyBindingModel(value: object): value is PropertyBindingModel {\n return true;\n}\n\nexport function PropertyBindingModelFromJSON(json: any): PropertyBindingModel {\n return PropertyBindingModelFromJSONTyped(json, false);\n}\n\nexport function PropertyBindingModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): PropertyBindingModel {\n if (json == null) {\n return json;\n }\n return {\n \n 'id': json['id'] == null ? undefined : json['id'],\n 'profileId': json['profileId'] == null ? undefined : json['profileId'],\n 'workflowId': json['workflowId'] == null ? undefined : json['workflowId'],\n 'activityIdRef': json['activityIdRef'] == null ? undefined : json['activityIdRef'],\n 'propertyName': json['propertyName'] == null ? undefined : json['propertyName'],\n 'contractName': json['contractName'] == null ? undefined : json['contractName'],\n 'resourceKey': json['resourceKey'] == null ? undefined : json['resourceKey'],\n 'propertyValue': json['propertyValue'] == null ? undefined : json['propertyValue'],\n 'profile': json['profile'] == null ? undefined : UserBindingProfileModelFromJSON(json['profile']),\n };\n}\n\nexport function PropertyBindingModelToJSON(json: any): PropertyBindingModel {\n return PropertyBindingModelToJSONTyped(json, false);\n}\n\nexport function PropertyBindingModelToJSONTyped(value?: PropertyBindingModel | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'id': value['id'],\n 'profileId': value['profileId'],\n 'workflowId': value['workflowId'],\n 'activityIdRef': value['activityIdRef'],\n 'propertyName': value['propertyName'],\n 'contractName': value['contractName'],\n 'resourceKey': value['resourceKey'],\n 'propertyValue': value['propertyValue'],\n 'profile': UserBindingProfileModelToJSON(value['profile']),\n };\n}\n\n",
|
|
114
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ProjectAppliedProfileModel } from './ProjectAppliedProfileModel';\nimport {\n ProjectAppliedProfileModelFromJSON,\n ProjectAppliedProfileModelFromJSONTyped,\n ProjectAppliedProfileModelToJSON,\n ProjectAppliedProfileModelToJSONTyped,\n} from './ProjectAppliedProfileModel';\nimport type { PropertyBindingModel } from './PropertyBindingModel';\nimport {\n PropertyBindingModelFromJSON,\n PropertyBindingModelFromJSONTyped,\n PropertyBindingModelToJSON,\n PropertyBindingModelToJSONTyped,\n} from './PropertyBindingModel';\nimport type { ProjectDbModel } from './ProjectDbModel';\nimport {\n ProjectDbModelFromJSON,\n ProjectDbModelFromJSONTyped,\n ProjectDbModelToJSON,\n ProjectDbModelToJSONTyped,\n} from './ProjectDbModel';\n\n/**\n * \n * @export\n * @interface UserBindingProfileModel\n */\nexport interface UserBindingProfileModel {\n /**\n * \n * @type {number}\n * @memberof UserBindingProfileModel\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof UserBindingProfileModel\n */\n userId?: string | null;\n /**\n * \n * @type {string}\n * @memberof UserBindingProfileModel\n */\n tenantId?: string | null;\n /**\n * \n * @type {string}\n * @memberof UserBindingProfileModel\n */\n projectId?: string;\n /**\n * \n * @type {string}\n * @memberof UserBindingProfileModel\n */\n workflowId?: string;\n /**\n * \n * @type {string}\n * @memberof UserBindingProfileModel\n */\n bindingsJson?: string | null;\n /**\n * \n * @type {Array<PropertyBindingModel>}\n * @memberof UserBindingProfileModel\n */\n userPropertyBindings?: Array<PropertyBindingModel> | null;\n /**\n * \n * @type {ProjectDbModel}\n * @memberof UserBindingProfileModel\n */\n project?: ProjectDbModel;\n /**\n * \n * @type {ProjectAppliedProfileModel}\n * @memberof UserBindingProfileModel\n */\n appliedTo?: ProjectAppliedProfileModel;\n}\n\n/**\n * Check if a given object implements the UserBindingProfileModel interface.\n */\nexport function instanceOfUserBindingProfileModel(value: object): value is UserBindingProfileModel {\n return true;\n}\n\nexport function UserBindingProfileModelFromJSON(json: any): UserBindingProfileModel {\n return UserBindingProfileModelFromJSONTyped(json, false);\n}\n\nexport function UserBindingProfileModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): UserBindingProfileModel {\n if (json == null) {\n return json;\n }\n return {\n \n 'id': json['id'] == null ? undefined : json['id'],\n 'userId': json['userId'] == null ? undefined : json['userId'],\n 'tenantId': json['tenantId'] == null ? undefined : json['tenantId'],\n 'projectId': json['projectId'] == null ? undefined : json['projectId'],\n 'workflowId': json['workflowId'] == null ? undefined : json['workflowId'],\n 'bindingsJson': json['bindingsJson'] == null ? undefined : json['bindingsJson'],\n 'userPropertyBindings': json['userPropertyBindings'] == null ? undefined : ((json['userPropertyBindings'] as Array<any>).map(PropertyBindingModelFromJSON)),\n 'project': json['project'] == null ? undefined : ProjectDbModelFromJSON(json['project']),\n 'appliedTo': json['appliedTo'] == null ? undefined : ProjectAppliedProfileModelFromJSON(json['appliedTo']),\n };\n}\n\nexport function UserBindingProfileModelToJSON(json: any): UserBindingProfileModel {\n return UserBindingProfileModelToJSONTyped(json, false);\n}\n\nexport function UserBindingProfileModelToJSONTyped(value?: UserBindingProfileModel | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'id': value['id'],\n 'userId': value['userId'],\n 'tenantId': value['tenantId'],\n 'projectId': value['projectId'],\n 'workflowId': value['workflowId'],\n 'bindingsJson': value['bindingsJson'],\n 'userPropertyBindings': value['userPropertyBindings'] == null ? undefined : ((value['userPropertyBindings'] as Array<any>).map(PropertyBindingModelToJSON)),\n 'project': ProjectDbModelToJSON(value['project']),\n 'appliedTo': ProjectAppliedProfileModelToJSON(value['appliedTo']),\n };\n}\n\n",
|
|
115
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ProjectDbModel } from './ProjectDbModel';\nimport {\n ProjectDbModelFromJSON,\n ProjectDbModelFromJSONTyped,\n ProjectDbModelToJSON,\n ProjectDbModelToJSONTyped,\n} from './ProjectDbModel';\n\n/**\n * \n * @export\n * @interface ProjectAppModel\n */\nexport interface ProjectAppModel {\n /**\n * \n * @type {string}\n * @memberof ProjectAppModel\n */\n id?: string;\n /**\n * \n * @type {string}\n * @memberof ProjectAppModel\n */\n projectId?: string;\n /**\n * \n * @type {string}\n * @memberof ProjectAppModel\n */\n appId?: string | null;\n /**\n * \n * @type {boolean}\n * @memberof ProjectAppModel\n */\n isFileSystemEnabled?: boolean;\n /**\n * \n * @type {ProjectDbModel}\n * @memberof ProjectAppModel\n */\n project?: ProjectDbModel;\n}\n\n/**\n * Check if a given object implements the ProjectAppModel interface.\n */\nexport function instanceOfProjectAppModel(value: object): value is ProjectAppModel {\n return true;\n}\n\nexport function ProjectAppModelFromJSON(json: any): ProjectAppModel {\n return ProjectAppModelFromJSONTyped(json, false);\n}\n\nexport function ProjectAppModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProjectAppModel {\n if (json == null) {\n return json;\n }\n return {\n \n 'id': json['id'] == null ? undefined : json['id'],\n 'projectId': json['projectId'] == null ? undefined : json['projectId'],\n 'appId': json['appId'] == null ? undefined : json['appId'],\n 'isFileSystemEnabled': json['isFileSystemEnabled'] == null ? undefined : json['isFileSystemEnabled'],\n 'project': json['project'] == null ? undefined : ProjectDbModelFromJSON(json['project']),\n };\n}\n\nexport function ProjectAppModelToJSON(json: any): ProjectAppModel {\n return ProjectAppModelToJSONTyped(json, false);\n}\n\nexport function ProjectAppModelToJSONTyped(value?: ProjectAppModel | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'id': value['id'],\n 'projectId': value['projectId'],\n 'appId': value['appId'],\n 'isFileSystemEnabled': value['isFileSystemEnabled'],\n 'project': ProjectDbModelToJSON(value['project']),\n };\n}\n\n",
|
|
116
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ProjectDbModel } from './ProjectDbModel';\nimport {\n ProjectDbModelFromJSON,\n ProjectDbModelFromJSONTyped,\n ProjectDbModelToJSON,\n ProjectDbModelToJSONTyped,\n} from './ProjectDbModel';\n\n/**\n * \n * @export\n * @interface ProjectLockModel\n */\nexport interface ProjectLockModel {\n /**\n * \n * @type {string}\n * @memberof ProjectLockModel\n */\n projectId?: string;\n /**\n * \n * @type {string}\n * @memberof ProjectLockModel\n */\n key?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectLockModel\n */\n userId?: string | null;\n /**\n * \n * @type {Date}\n * @memberof ProjectLockModel\n */\n expirationDate?: Date;\n /**\n * \n * @type {string}\n * @memberof ProjectLockModel\n */\n rowVersion?: string | null;\n /**\n * \n * @type {ProjectDbModel}\n * @memberof ProjectLockModel\n */\n project?: ProjectDbModel;\n /**\n * \n * @type {string}\n * @memberof ProjectLockModel\n */\n solutionId?: string | null;\n}\n\n/**\n * Check if a given object implements the ProjectLockModel interface.\n */\nexport function instanceOfProjectLockModel(value: object): value is ProjectLockModel {\n return true;\n}\n\nexport function ProjectLockModelFromJSON(json: any): ProjectLockModel {\n return ProjectLockModelFromJSONTyped(json, false);\n}\n\nexport function ProjectLockModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProjectLockModel {\n if (json == null) {\n return json;\n }\n return {\n \n 'projectId': json['projectId'] == null ? undefined : json['projectId'],\n 'key': json['key'] == null ? undefined : json['key'],\n 'userId': json['userId'] == null ? undefined : json['userId'],\n 'expirationDate': json['expirationDate'] == null ? undefined : (new Date(json['expirationDate'])),\n 'rowVersion': json['rowVersion'] == null ? undefined : json['rowVersion'],\n 'project': json['project'] == null ? undefined : ProjectDbModelFromJSON(json['project']),\n 'solutionId': json['solutionId'] == null ? undefined : json['solutionId'],\n };\n}\n\nexport function ProjectLockModelToJSON(json: any): ProjectLockModel {\n return ProjectLockModelToJSONTyped(json, false);\n}\n\nexport function ProjectLockModelToJSONTyped(value?: ProjectLockModel | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'projectId': value['projectId'],\n 'key': value['key'],\n 'userId': value['userId'],\n 'expirationDate': value['expirationDate'] == null ? value['expirationDate'] : value['expirationDate'].toISOString(),\n 'rowVersion': value['rowVersion'],\n 'project': ProjectDbModelToJSON(value['project']),\n 'solutionId': value['solutionId'],\n };\n}\n\n",
|
|
117
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ProjectDbModel } from './ProjectDbModel';\nimport {\n ProjectDbModelFromJSON,\n ProjectDbModelFromJSONTyped,\n ProjectDbModelToJSON,\n ProjectDbModelToJSONTyped,\n} from './ProjectDbModel';\n\n/**\n * \n * @export\n * @interface TestManagerMetadataModel\n */\nexport interface TestManagerMetadataModel {\n /**\n * \n * @type {string}\n * @memberof TestManagerMetadataModel\n */\n id?: string;\n /**\n * \n * @type {string}\n * @memberof TestManagerMetadataModel\n */\n studioWebProjectId?: string;\n /**\n * \n * @type {ProjectDbModel}\n * @memberof TestManagerMetadataModel\n */\n project?: ProjectDbModel;\n /**\n * \n * @type {string}\n * @memberof TestManagerMetadataModel\n */\n testManagerProjectId?: string | null;\n /**\n * \n * @type {Date}\n * @memberof TestManagerMetadataModel\n */\n creationTime?: Date;\n}\n\n/**\n * Check if a given object implements the TestManagerMetadataModel interface.\n */\nexport function instanceOfTestManagerMetadataModel(value: object): value is TestManagerMetadataModel {\n return true;\n}\n\nexport function TestManagerMetadataModelFromJSON(json: any): TestManagerMetadataModel {\n return TestManagerMetadataModelFromJSONTyped(json, false);\n}\n\nexport function TestManagerMetadataModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): TestManagerMetadataModel {\n if (json == null) {\n return json;\n }\n return {\n \n 'id': json['id'] == null ? undefined : json['id'],\n 'studioWebProjectId': json['studioWebProjectId'] == null ? undefined : json['studioWebProjectId'],\n 'project': json['project'] == null ? undefined : ProjectDbModelFromJSON(json['project']),\n 'testManagerProjectId': json['testManagerProjectId'] == null ? undefined : json['testManagerProjectId'],\n 'creationTime': json['creationTime'] == null ? undefined : (new Date(json['creationTime'])),\n };\n}\n\nexport function TestManagerMetadataModelToJSON(json: any): TestManagerMetadataModel {\n return TestManagerMetadataModelToJSONTyped(json, false);\n}\n\nexport function TestManagerMetadataModelToJSONTyped(value?: TestManagerMetadataModel | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'id': value['id'],\n 'studioWebProjectId': value['studioWebProjectId'],\n 'project': ProjectDbModelToJSON(value['project']),\n 'testManagerProjectId': value['testManagerProjectId'],\n 'creationTime': value['creationTime'] == null ? value['creationTime'] : value['creationTime'].toISOString(),\n };\n}\n\n",
|
|
118
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const TargetFramework = {\n Legacy: 'legacy',\n Windows: 'windows',\n Portable: 'portable'\n} as const;\nexport type TargetFramework = typeof TargetFramework[keyof typeof TargetFramework];\n\n\nexport function instanceOfTargetFramework(value: any): boolean {\n for (const key in TargetFramework) {\n if (Object.prototype.hasOwnProperty.call(TargetFramework, key)) {\n if (TargetFramework[key as keyof typeof TargetFramework] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function TargetFrameworkFromJSON(json: any): TargetFramework {\n return TargetFrameworkFromJSONTyped(json, false);\n}\n\nexport function TargetFrameworkFromJSONTyped(json: any, ignoreDiscriminator: boolean): TargetFramework {\n return json as TargetFramework;\n}\n\nexport function TargetFrameworkToJSON(value?: TargetFramework | null): any {\n return value as any;\n}\n\nexport function TargetFrameworkToJSONTyped(value: any, ignoreDiscriminator: boolean): TargetFramework {\n return value as TargetFramework;\n}\n\n",
|
|
119
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const ProjectStatus = {\n Ready: 'ready',\n Error: 'error',\n Processing: 'processing',\n TemplateEditing: 'templateEditing'\n} as const;\nexport type ProjectStatus = typeof ProjectStatus[keyof typeof ProjectStatus];\n\n\nexport function instanceOfProjectStatus(value: any): boolean {\n for (const key in ProjectStatus) {\n if (Object.prototype.hasOwnProperty.call(ProjectStatus, key)) {\n if (ProjectStatus[key as keyof typeof ProjectStatus] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function ProjectStatusFromJSON(json: any): ProjectStatus {\n return ProjectStatusFromJSONTyped(json, false);\n}\n\nexport function ProjectStatusFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProjectStatus {\n return json as ProjectStatus;\n}\n\nexport function ProjectStatusToJSON(value?: ProjectStatus | null): any {\n return value as any;\n}\n\nexport function ProjectStatusToJSONTyped(value: any, ignoreDiscriminator: boolean): ProjectStatus {\n return value as ProjectStatus;\n}\n\n",
|
|
120
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const SharingPermissions = {\n None: 'none',\n Read: 'read',\n Write: 'write',\n Publish: 'publish',\n ReadWritePublish: 'readWritePublish'\n} as const;\nexport type SharingPermissions = typeof SharingPermissions[keyof typeof SharingPermissions];\n\n\nexport function instanceOfSharingPermissions(value: any): boolean {\n for (const key in SharingPermissions) {\n if (Object.prototype.hasOwnProperty.call(SharingPermissions, key)) {\n if (SharingPermissions[key as keyof typeof SharingPermissions] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function SharingPermissionsFromJSON(json: any): SharingPermissions {\n return SharingPermissionsFromJSONTyped(json, false);\n}\n\nexport function SharingPermissionsFromJSONTyped(json: any, ignoreDiscriminator: boolean): SharingPermissions {\n return json as SharingPermissions;\n}\n\nexport function SharingPermissionsToJSON(value?: SharingPermissions | null): any {\n return value as any;\n}\n\nexport function SharingPermissionsToJSONTyped(value: any, ignoreDiscriminator: boolean): SharingPermissions {\n return value as SharingPermissions;\n}\n\n",
|
|
121
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { SharingPermissions } from './SharingPermissions';\nimport {\n SharingPermissionsFromJSON,\n SharingPermissionsFromJSONTyped,\n SharingPermissionsToJSON,\n SharingPermissionsToJSONTyped,\n} from './SharingPermissions';\nimport type { ProjectDbModel } from './ProjectDbModel';\nimport {\n ProjectDbModelFromJSON,\n ProjectDbModelFromJSONTyped,\n ProjectDbModelToJSON,\n ProjectDbModelToJSONTyped,\n} from './ProjectDbModel';\n\n/**\n * \n * @export\n * @interface SharedProject\n */\nexport interface SharedProject {\n /**\n * \n * @type {number}\n * @memberof SharedProject\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof SharedProject\n */\n projectId?: string;\n /**\n * \n * @type {string}\n * @memberof SharedProject\n */\n entityId?: string;\n /**\n * \n * @type {string}\n * @memberof SharedProject\n */\n organizationId?: string | null;\n /**\n * \n * @type {boolean}\n * @memberof SharedProject\n */\n isHidden?: boolean;\n /**\n * \n * @type {Date}\n * @memberof SharedProject\n */\n creationTime?: Date;\n /**\n * \n * @type {boolean}\n * @memberof SharedProject\n */\n isGroup?: boolean;\n /**\n * \n * @type {SharingPermissions}\n * @memberof SharedProject\n */\n permissions?: SharingPermissions;\n /**\n * \n * @type {ProjectDbModel}\n * @memberof SharedProject\n */\n project?: ProjectDbModel;\n}\n\n\n\n/**\n * Check if a given object implements the SharedProject interface.\n */\nexport function instanceOfSharedProject(value: object): value is SharedProject {\n return true;\n}\n\nexport function SharedProjectFromJSON(json: any): SharedProject {\n return SharedProjectFromJSONTyped(json, false);\n}\n\nexport function SharedProjectFromJSONTyped(json: any, ignoreDiscriminator: boolean): SharedProject {\n if (json == null) {\n return json;\n }\n return {\n \n 'id': json['id'] == null ? undefined : json['id'],\n 'projectId': json['projectId'] == null ? undefined : json['projectId'],\n 'entityId': json['entityId'] == null ? undefined : json['entityId'],\n 'organizationId': json['organizationId'] == null ? undefined : json['organizationId'],\n 'isHidden': json['isHidden'] == null ? undefined : json['isHidden'],\n 'creationTime': json['creationTime'] == null ? undefined : (new Date(json['creationTime'])),\n 'isGroup': json['isGroup'] == null ? undefined : json['isGroup'],\n 'permissions': json['permissions'] == null ? undefined : SharingPermissionsFromJSON(json['permissions']),\n 'project': json['project'] == null ? undefined : ProjectDbModelFromJSON(json['project']),\n };\n}\n\nexport function SharedProjectToJSON(json: any): SharedProject {\n return SharedProjectToJSONTyped(json, false);\n}\n\nexport function SharedProjectToJSONTyped(value?: SharedProject | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'id': value['id'],\n 'projectId': value['projectId'],\n 'entityId': value['entityId'],\n 'organizationId': value['organizationId'],\n 'isHidden': value['isHidden'],\n 'creationTime': value['creationTime'] == null ? value['creationTime'] : value['creationTime'].toISOString(),\n 'isGroup': value['isGroup'],\n 'permissions': SharingPermissionsToJSON(value['permissions']),\n 'project': ProjectDbModelToJSON(value['project']),\n };\n}\n\n",
|
|
122
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ProjectDbModel } from './ProjectDbModel';\nimport {\n ProjectDbModelFromJSON,\n ProjectDbModelFromJSONTyped,\n ProjectDbModelToJSON,\n ProjectDbModelToJSONTyped,\n} from './ProjectDbModel';\n\n/**\n * \n * @export\n * @interface UserMessageDbModel\n */\nexport interface UserMessageDbModel {\n /**\n * \n * @type {number}\n * @memberof UserMessageDbModel\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof UserMessageDbModel\n */\n message?: string | null;\n /**\n * \n * @type {Date}\n * @memberof UserMessageDbModel\n */\n creationTime?: Date | null;\n /**\n * \n * @type {string}\n * @memberof UserMessageDbModel\n */\n projectDbModelId?: string | null;\n /**\n * \n * @type {ProjectDbModel}\n * @memberof UserMessageDbModel\n */\n project?: ProjectDbModel;\n}\n\n/**\n * Check if a given object implements the UserMessageDbModel interface.\n */\nexport function instanceOfUserMessageDbModel(value: object): value is UserMessageDbModel {\n return true;\n}\n\nexport function UserMessageDbModelFromJSON(json: any): UserMessageDbModel {\n return UserMessageDbModelFromJSONTyped(json, false);\n}\n\nexport function UserMessageDbModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): UserMessageDbModel {\n if (json == null) {\n return json;\n }\n return {\n \n 'id': json['id'] == null ? undefined : json['id'],\n 'message': json['message'] == null ? undefined : json['message'],\n 'creationTime': json['creationTime'] == null ? undefined : (new Date(json['creationTime'])),\n 'projectDbModelId': json['projectDbModelId'] == null ? undefined : json['projectDbModelId'],\n 'project': json['project'] == null ? undefined : ProjectDbModelFromJSON(json['project']),\n };\n}\n\nexport function UserMessageDbModelToJSON(json: any): UserMessageDbModel {\n return UserMessageDbModelToJSONTyped(json, false);\n}\n\nexport function UserMessageDbModelToJSONTyped(value?: UserMessageDbModel | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'id': value['id'],\n 'message': value['message'],\n 'creationTime': value['creationTime'] == null ? value['creationTime'] : value['creationTime'].toISOString(),\n 'projectDbModelId': value['projectDbModelId'],\n 'project': ProjectDbModelToJSON(value['project']),\n };\n}\n\n",
|
|
123
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ProjectDbModel } from './ProjectDbModel';\nimport {\n ProjectDbModelFromJSON,\n ProjectDbModelFromJSONTyped,\n ProjectDbModelToJSON,\n ProjectDbModelToJSONTyped,\n} from './ProjectDbModel';\n\n/**\n * \n * @export\n * @interface ProjectConnectionModel\n */\nexport interface ProjectConnectionModel {\n /**\n * \n * @type {string}\n * @memberof ProjectConnectionModel\n */\n connectionId?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectConnectionModel\n */\n connector?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectConnectionModel\n */\n projectId?: string;\n /**\n * \n * @type {ProjectDbModel}\n * @memberof ProjectConnectionModel\n */\n project?: ProjectDbModel;\n /**\n * \n * @type {boolean}\n * @memberof ProjectConnectionModel\n */\n usedInWorkflow?: boolean;\n /**\n * \n * @type {boolean}\n * @memberof ProjectConnectionModel\n */\n usedInTrigger?: boolean;\n /**\n * \n * @type {string}\n * @memberof ProjectConnectionModel\n */\n workflowFileId?: string | null;\n}\n\n/**\n * Check if a given object implements the ProjectConnectionModel interface.\n */\nexport function instanceOfProjectConnectionModel(value: object): value is ProjectConnectionModel {\n return true;\n}\n\nexport function ProjectConnectionModelFromJSON(json: any): ProjectConnectionModel {\n return ProjectConnectionModelFromJSONTyped(json, false);\n}\n\nexport function ProjectConnectionModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProjectConnectionModel {\n if (json == null) {\n return json;\n }\n return {\n \n 'connectionId': json['connectionId'] == null ? undefined : json['connectionId'],\n 'connector': json['connector'] == null ? undefined : json['connector'],\n 'projectId': json['projectId'] == null ? undefined : json['projectId'],\n 'project': json['project'] == null ? undefined : ProjectDbModelFromJSON(json['project']),\n 'usedInWorkflow': json['usedInWorkflow'] == null ? undefined : json['usedInWorkflow'],\n 'usedInTrigger': json['usedInTrigger'] == null ? undefined : json['usedInTrigger'],\n 'workflowFileId': json['workflowFileId'] == null ? undefined : json['workflowFileId'],\n };\n}\n\nexport function ProjectConnectionModelToJSON(json: any): ProjectConnectionModel {\n return ProjectConnectionModelToJSONTyped(json, false);\n}\n\nexport function ProjectConnectionModelToJSONTyped(value?: ProjectConnectionModel | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'connectionId': value['connectionId'],\n 'connector': value['connector'],\n 'projectId': value['projectId'],\n 'project': ProjectDbModelToJSON(value['project']),\n 'usedInWorkflow': value['usedInWorkflow'],\n 'usedInTrigger': value['usedInTrigger'],\n 'workflowFileId': value['workflowFileId'],\n };\n}\n\n",
|
|
124
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ConnectionMetadataModel } from './ConnectionMetadataModel';\nimport {\n ConnectionMetadataModelFromJSON,\n ConnectionMetadataModelFromJSONTyped,\n ConnectionMetadataModelToJSON,\n ConnectionMetadataModelToJSONTyped,\n} from './ConnectionMetadataModel';\nimport type { ProjectConnectionModel } from './ProjectConnectionModel';\nimport {\n ProjectConnectionModelFromJSON,\n ProjectConnectionModelFromJSONTyped,\n ProjectConnectionModelToJSON,\n ProjectConnectionModelToJSONTyped,\n} from './ProjectConnectionModel';\nimport type { ProjectDbModel } from './ProjectDbModel';\nimport {\n ProjectDbModelFromJSON,\n ProjectDbModelFromJSONTyped,\n ProjectDbModelToJSON,\n ProjectDbModelToJSONTyped,\n} from './ProjectDbModel';\n\n/**\n * \n * @export\n * @interface TriggerMetadataModel\n */\nexport interface TriggerMetadataModel {\n /**\n * \n * @type {string}\n * @memberof TriggerMetadataModel\n */\n projectId?: string;\n /**\n * \n * @type {string}\n * @memberof TriggerMetadataModel\n */\n connectionId?: string | null;\n /**\n * \n * @type {ConnectionMetadataModel}\n * @memberof TriggerMetadataModel\n */\n connection?: ConnectionMetadataModel;\n /**\n * \n * @type {ProjectConnectionModel}\n * @memberof TriggerMetadataModel\n */\n projectConnection?: ProjectConnectionModel;\n /**\n * \n * @type {string}\n * @memberof TriggerMetadataModel\n */\n operation?: string | null;\n /**\n * \n * @type {string}\n * @memberof TriggerMetadataModel\n */\n triggerId?: string | null;\n /**\n * \n * @type {string}\n * @memberof TriggerMetadataModel\n */\n defaultDisplayName?: string | null;\n /**\n * \n * @type {string}\n * @memberof TriggerMetadataModel\n */\n displayName?: string | null;\n /**\n * \n * @type {ProjectDbModel}\n * @memberof TriggerMetadataModel\n */\n project?: ProjectDbModel;\n}\n\n/**\n * Check if a given object implements the TriggerMetadataModel interface.\n */\nexport function instanceOfTriggerMetadataModel(value: object): value is TriggerMetadataModel {\n return true;\n}\n\nexport function TriggerMetadataModelFromJSON(json: any): TriggerMetadataModel {\n return TriggerMetadataModelFromJSONTyped(json, false);\n}\n\nexport function TriggerMetadataModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): TriggerMetadataModel {\n if (json == null) {\n return json;\n }\n return {\n \n 'projectId': json['projectId'] == null ? undefined : json['projectId'],\n 'connectionId': json['connectionId'] == null ? undefined : json['connectionId'],\n 'connection': json['connection'] == null ? undefined : ConnectionMetadataModelFromJSON(json['connection']),\n 'projectConnection': json['projectConnection'] == null ? undefined : ProjectConnectionModelFromJSON(json['projectConnection']),\n 'operation': json['operation'] == null ? undefined : json['operation'],\n 'triggerId': json['triggerId'] == null ? undefined : json['triggerId'],\n 'defaultDisplayName': json['defaultDisplayName'] == null ? undefined : json['defaultDisplayName'],\n 'displayName': json['displayName'] == null ? undefined : json['displayName'],\n 'project': json['project'] == null ? undefined : ProjectDbModelFromJSON(json['project']),\n };\n}\n\nexport function TriggerMetadataModelToJSON(json: any): TriggerMetadataModel {\n return TriggerMetadataModelToJSONTyped(json, false);\n}\n\nexport function TriggerMetadataModelToJSONTyped(value?: TriggerMetadataModel | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'projectId': value['projectId'],\n 'connectionId': value['connectionId'],\n 'connection': ConnectionMetadataModelToJSON(value['connection']),\n 'projectConnection': ProjectConnectionModelToJSON(value['projectConnection']),\n 'operation': value['operation'],\n 'triggerId': value['triggerId'],\n 'defaultDisplayName': value['defaultDisplayName'],\n 'displayName': value['displayName'],\n 'project': ProjectDbModelToJSON(value['project']),\n };\n}\n\n",
|
|
125
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { TriggerMetadataModel } from './TriggerMetadataModel';\nimport {\n TriggerMetadataModelFromJSON,\n TriggerMetadataModelFromJSONTyped,\n TriggerMetadataModelToJSON,\n TriggerMetadataModelToJSONTyped,\n} from './TriggerMetadataModel';\nimport type { ProjectDbModel } from './ProjectDbModel';\nimport {\n ProjectDbModelFromJSON,\n ProjectDbModelFromJSONTyped,\n ProjectDbModelToJSON,\n ProjectDbModelToJSONTyped,\n} from './ProjectDbModel';\n\n/**\n * \n * @export\n * @interface ConnectionMetadataModel\n */\nexport interface ConnectionMetadataModel {\n /**\n * \n * @type {string}\n * @memberof ConnectionMetadataModel\n */\n connectionId?: string;\n /**\n * \n * @type {string}\n * @memberof ConnectionMetadataModel\n */\n connector?: string | null;\n /**\n * \n * @type {Array<ProjectDbModel>}\n * @memberof ConnectionMetadataModel\n */\n projects?: Array<ProjectDbModel> | null;\n /**\n * \n * @type {Array<TriggerMetadataModel>}\n * @memberof ConnectionMetadataModel\n */\n triggers?: Array<TriggerMetadataModel> | null;\n}\n\n/**\n * Check if a given object implements the ConnectionMetadataModel interface.\n */\nexport function instanceOfConnectionMetadataModel(value: object): value is ConnectionMetadataModel {\n return true;\n}\n\nexport function ConnectionMetadataModelFromJSON(json: any): ConnectionMetadataModel {\n return ConnectionMetadataModelFromJSONTyped(json, false);\n}\n\nexport function ConnectionMetadataModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): ConnectionMetadataModel {\n if (json == null) {\n return json;\n }\n return {\n \n 'connectionId': json['connectionId'] == null ? undefined : json['connectionId'],\n 'connector': json['connector'] == null ? undefined : json['connector'],\n 'projects': json['projects'] == null ? undefined : ((json['projects'] as Array<any>).map(ProjectDbModelFromJSON)),\n 'triggers': json['triggers'] == null ? undefined : ((json['triggers'] as Array<any>).map(TriggerMetadataModelFromJSON)),\n };\n}\n\nexport function ConnectionMetadataModelToJSON(json: any): ConnectionMetadataModel {\n return ConnectionMetadataModelToJSONTyped(json, false);\n}\n\nexport function ConnectionMetadataModelToJSONTyped(value?: ConnectionMetadataModel | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'connectionId': value['connectionId'],\n 'connector': value['connector'],\n 'projects': value['projects'] == null ? undefined : ((value['projects'] as Array<any>).map(ProjectDbModelToJSON)),\n 'triggers': value['triggers'] == null ? undefined : ((value['triggers'] as Array<any>).map(TriggerMetadataModelToJSON)),\n };\n}\n\n",
|
|
126
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ProjectDbModel } from './ProjectDbModel';\nimport {\n ProjectDbModelFromJSON,\n ProjectDbModelFromJSONTyped,\n ProjectDbModelToJSON,\n ProjectDbModelToJSONTyped,\n} from './ProjectDbModel';\n\n/**\n * \n * @export\n * @interface ProjectMetadataModel\n */\nexport interface ProjectMetadataModel {\n /**\n * \n * @type {string}\n * @memberof ProjectMetadataModel\n */\n projectId?: string;\n /**\n * \n * @type {boolean}\n * @memberof ProjectMetadataModel\n */\n hasTestCases?: boolean;\n /**\n * \n * @type {Date}\n * @memberof ProjectMetadataModel\n */\n mcIgnorableApplied?: Date | null;\n /**\n * \n * @type {Date}\n * @memberof ProjectMetadataModel\n */\n lastScanDate?: Date | null;\n /**\n * \n * @type {ProjectDbModel}\n * @memberof ProjectMetadataModel\n */\n project?: ProjectDbModel;\n}\n\n/**\n * Check if a given object implements the ProjectMetadataModel interface.\n */\nexport function instanceOfProjectMetadataModel(value: object): value is ProjectMetadataModel {\n return true;\n}\n\nexport function ProjectMetadataModelFromJSON(json: any): ProjectMetadataModel {\n return ProjectMetadataModelFromJSONTyped(json, false);\n}\n\nexport function ProjectMetadataModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProjectMetadataModel {\n if (json == null) {\n return json;\n }\n return {\n \n 'projectId': json['projectId'] == null ? undefined : json['projectId'],\n 'hasTestCases': json['hasTestCases'] == null ? undefined : json['hasTestCases'],\n 'mcIgnorableApplied': json['mcIgnorableApplied'] == null ? undefined : (new Date(json['mcIgnorableApplied'])),\n 'lastScanDate': json['lastScanDate'] == null ? undefined : (new Date(json['lastScanDate'])),\n 'project': json['project'] == null ? undefined : ProjectDbModelFromJSON(json['project']),\n };\n}\n\nexport function ProjectMetadataModelToJSON(json: any): ProjectMetadataModel {\n return ProjectMetadataModelToJSONTyped(json, false);\n}\n\nexport function ProjectMetadataModelToJSONTyped(value?: ProjectMetadataModel | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'projectId': value['projectId'],\n 'hasTestCases': value['hasTestCases'],\n 'mcIgnorableApplied': value['mcIgnorableApplied'] == null ? value['mcIgnorableApplied'] : value['mcIgnorableApplied'].toISOString(),\n 'lastScanDate': value['lastScanDate'] == null ? value['lastScanDate'] : value['lastScanDate'].toISOString(),\n 'project': ProjectDbModelToJSON(value['project']),\n };\n}\n\n",
|
|
127
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const PublishStatus = {\n Successful: 'successful',\n Failed: 'failed',\n Pending: 'pending'\n} as const;\nexport type PublishStatus = typeof PublishStatus[keyof typeof PublishStatus];\n\n\nexport function instanceOfPublishStatus(value: any): boolean {\n for (const key in PublishStatus) {\n if (Object.prototype.hasOwnProperty.call(PublishStatus, key)) {\n if (PublishStatus[key as keyof typeof PublishStatus] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function PublishStatusFromJSON(json: any): PublishStatus {\n return PublishStatusFromJSONTyped(json, false);\n}\n\nexport function PublishStatusFromJSONTyped(json: any, ignoreDiscriminator: boolean): PublishStatus {\n return json as PublishStatus;\n}\n\nexport function PublishStatusToJSON(value?: PublishStatus | null): any {\n return value as any;\n}\n\nexport function PublishStatusToJSONTyped(value: any, ignoreDiscriminator: boolean): PublishStatus {\n return value as PublishStatus;\n}\n\n",
|
|
128
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ProjectDbModel } from './ProjectDbModel';\nimport {\n ProjectDbModelFromJSON,\n ProjectDbModelFromJSONTyped,\n ProjectDbModelToJSON,\n ProjectDbModelToJSONTyped,\n} from './ProjectDbModel';\nimport type { PublishStatus } from './PublishStatus';\nimport {\n PublishStatusFromJSON,\n PublishStatusFromJSONTyped,\n PublishStatusToJSON,\n PublishStatusToJSONTyped,\n} from './PublishStatus';\n\n/**\n * \n * @export\n * @interface PublishResultModel\n */\nexport interface PublishResultModel {\n /**\n * \n * @type {string}\n * @memberof PublishResultModel\n */\n id?: string;\n /**\n * \n * @type {string}\n * @memberof PublishResultModel\n */\n projectId?: string;\n /**\n * \n * @type {Date}\n * @memberof PublishResultModel\n */\n creationTime?: Date;\n /**\n * \n * @type {PublishStatus}\n * @memberof PublishResultModel\n */\n status?: PublishStatus;\n /**\n * \n * @type {string}\n * @memberof PublishResultModel\n */\n message?: string | null;\n /**\n * \n * @type {string}\n * @memberof PublishResultModel\n */\n tenantId?: string | null;\n /**\n * \n * @type {string}\n * @memberof PublishResultModel\n */\n feedId?: string | null;\n /**\n * \n * @type {string}\n * @memberof PublishResultModel\n */\n version?: string | null;\n /**\n * \n * @type {string}\n * @memberof PublishResultModel\n */\n userId?: string | null;\n /**\n * \n * @type {ProjectDbModel}\n * @memberof PublishResultModel\n */\n project?: ProjectDbModel;\n /**\n * \n * @type {string}\n * @memberof PublishResultModel\n */\n iconUrl?: string | null;\n}\n\n\n\n/**\n * Check if a given object implements the PublishResultModel interface.\n */\nexport function instanceOfPublishResultModel(value: object): value is PublishResultModel {\n return true;\n}\n\nexport function PublishResultModelFromJSON(json: any): PublishResultModel {\n return PublishResultModelFromJSONTyped(json, false);\n}\n\nexport function PublishResultModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): PublishResultModel {\n if (json == null) {\n return json;\n }\n return {\n \n 'id': json['id'] == null ? undefined : json['id'],\n 'projectId': json['projectId'] == null ? undefined : json['projectId'],\n 'creationTime': json['creationTime'] == null ? undefined : (new Date(json['creationTime'])),\n 'status': json['status'] == null ? undefined : PublishStatusFromJSON(json['status']),\n 'message': json['message'] == null ? undefined : json['message'],\n 'tenantId': json['tenantId'] == null ? undefined : json['tenantId'],\n 'feedId': json['feedId'] == null ? undefined : json['feedId'],\n 'version': json['version'] == null ? undefined : json['version'],\n 'userId': json['userId'] == null ? undefined : json['userId'],\n 'project': json['project'] == null ? undefined : ProjectDbModelFromJSON(json['project']),\n 'iconUrl': json['iconUrl'] == null ? undefined : json['iconUrl'],\n };\n}\n\nexport function PublishResultModelToJSON(json: any): PublishResultModel {\n return PublishResultModelToJSONTyped(json, false);\n}\n\nexport function PublishResultModelToJSONTyped(value?: PublishResultModel | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'id': value['id'],\n 'projectId': value['projectId'],\n 'creationTime': value['creationTime'] == null ? value['creationTime'] : value['creationTime'].toISOString(),\n 'status': PublishStatusToJSON(value['status']),\n 'message': value['message'],\n 'tenantId': value['tenantId'],\n 'feedId': value['feedId'],\n 'version': value['version'],\n 'userId': value['userId'],\n 'project': ProjectDbModelToJSON(value['project']),\n 'iconUrl': value['iconUrl'],\n };\n}\n\n",
|
|
129
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ProjectDbModel } from './ProjectDbModel';\nimport {\n ProjectDbModelFromJSON,\n ProjectDbModelFromJSONTyped,\n ProjectDbModelToJSON,\n ProjectDbModelToJSONTyped,\n} from './ProjectDbModel';\n\n/**\n * \n * @export\n * @interface SapContext\n */\nexport interface SapContext {\n /**\n * \n * @type {number}\n * @memberof SapContext\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof SapContext\n */\n projectId?: string;\n /**\n * \n * @type {string}\n * @memberof SapContext\n */\n tenantId?: string;\n /**\n * \n * @type {boolean}\n * @memberof SapContext\n */\n isPrimaryProject?: boolean;\n /**\n * \n * @type {string}\n * @memberof SapContext\n */\n externalProjectId?: string | null;\n /**\n * \n * @type {string}\n * @memberof SapContext\n */\n baseCallbackPath?: string | null;\n /**\n * \n * @type {ProjectDbModel}\n * @memberof SapContext\n */\n project?: ProjectDbModel;\n}\n\n/**\n * Check if a given object implements the SapContext interface.\n */\nexport function instanceOfSapContext(value: object): value is SapContext {\n return true;\n}\n\nexport function SapContextFromJSON(json: any): SapContext {\n return SapContextFromJSONTyped(json, false);\n}\n\nexport function SapContextFromJSONTyped(json: any, ignoreDiscriminator: boolean): SapContext {\n if (json == null) {\n return json;\n }\n return {\n \n 'id': json['id'] == null ? undefined : json['id'],\n 'projectId': json['projectId'] == null ? undefined : json['projectId'],\n 'tenantId': json['tenantId'] == null ? undefined : json['tenantId'],\n 'isPrimaryProject': json['isPrimaryProject'] == null ? undefined : json['isPrimaryProject'],\n 'externalProjectId': json['externalProjectId'] == null ? undefined : json['externalProjectId'],\n 'baseCallbackPath': json['baseCallbackPath'] == null ? undefined : json['baseCallbackPath'],\n 'project': json['project'] == null ? undefined : ProjectDbModelFromJSON(json['project']),\n };\n}\n\nexport function SapContextToJSON(json: any): SapContext {\n return SapContextToJSONTyped(json, false);\n}\n\nexport function SapContextToJSONTyped(value?: SapContext | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'id': value['id'],\n 'projectId': value['projectId'],\n 'tenantId': value['tenantId'],\n 'isPrimaryProject': value['isPrimaryProject'],\n 'externalProjectId': value['externalProjectId'],\n 'baseCallbackPath': value['baseCallbackPath'],\n 'project': ProjectDbModelToJSON(value['project']),\n };\n}\n\n",
|
|
130
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ProjectDbModel } from './ProjectDbModel';\nimport {\n ProjectDbModelFromJSON,\n ProjectDbModelFromJSONTyped,\n ProjectDbModelToJSON,\n ProjectDbModelToJSONTyped,\n} from './ProjectDbModel';\n\n/**\n * \n * @export\n * @interface ProjectPackageModel\n */\nexport interface ProjectPackageModel {\n /**\n * \n * @type {number}\n * @memberof ProjectPackageModel\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof ProjectPackageModel\n */\n name?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectPackageModel\n */\n version?: string | null;\n /**\n * \n * @type {ProjectDbModel}\n * @memberof ProjectPackageModel\n */\n project?: ProjectDbModel;\n}\n\n/**\n * Check if a given object implements the ProjectPackageModel interface.\n */\nexport function instanceOfProjectPackageModel(value: object): value is ProjectPackageModel {\n return true;\n}\n\nexport function ProjectPackageModelFromJSON(json: any): ProjectPackageModel {\n return ProjectPackageModelFromJSONTyped(json, false);\n}\n\nexport function ProjectPackageModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProjectPackageModel {\n if (json == null) {\n return json;\n }\n return {\n \n 'id': json['id'] == null ? undefined : json['id'],\n 'name': json['name'] == null ? undefined : json['name'],\n 'version': json['version'] == null ? undefined : json['version'],\n 'project': json['project'] == null ? undefined : ProjectDbModelFromJSON(json['project']),\n };\n}\n\nexport function ProjectPackageModelToJSON(json: any): ProjectPackageModel {\n return ProjectPackageModelToJSONTyped(json, false);\n}\n\nexport function ProjectPackageModelToJSONTyped(value?: ProjectPackageModel | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'id': value['id'],\n 'name': value['name'],\n 'version': value['version'],\n 'project': ProjectDbModelToJSON(value['project']),\n };\n}\n\n",
|
|
131
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { PinnedProject } from './PinnedProject';\nimport {\n PinnedProjectFromJSON,\n PinnedProjectFromJSONTyped,\n PinnedProjectToJSON,\n PinnedProjectToJSONTyped,\n} from './PinnedProject';\nimport type { ProjectStructure } from './ProjectStructure';\nimport {\n ProjectStructureFromJSON,\n ProjectStructureFromJSONTyped,\n ProjectStructureToJSON,\n ProjectStructureToJSONTyped,\n} from './ProjectStructure';\nimport type { UserBindingProfileModel } from './UserBindingProfileModel';\nimport {\n UserBindingProfileModelFromJSON,\n UserBindingProfileModelFromJSONTyped,\n UserBindingProfileModelToJSON,\n UserBindingProfileModelToJSONTyped,\n} from './UserBindingProfileModel';\nimport type { ProjectAppModel } from './ProjectAppModel';\nimport {\n ProjectAppModelFromJSON,\n ProjectAppModelFromJSONTyped,\n ProjectAppModelToJSON,\n ProjectAppModelToJSONTyped,\n} from './ProjectAppModel';\nimport type { ProjectLockModel } from './ProjectLockModel';\nimport {\n ProjectLockModelFromJSON,\n ProjectLockModelFromJSONTyped,\n ProjectLockModelToJSON,\n ProjectLockModelToJSONTyped,\n} from './ProjectLockModel';\nimport type { TestManagerMetadataModel } from './TestManagerMetadataModel';\nimport {\n TestManagerMetadataModelFromJSON,\n TestManagerMetadataModelFromJSONTyped,\n TestManagerMetadataModelToJSON,\n TestManagerMetadataModelToJSONTyped,\n} from './TestManagerMetadataModel';\nimport type { TargetFramework } from './TargetFramework';\nimport {\n TargetFrameworkFromJSON,\n TargetFrameworkFromJSONTyped,\n TargetFrameworkToJSON,\n TargetFrameworkToJSONTyped,\n} from './TargetFramework';\nimport type { ProjectStatus } from './ProjectStatus';\nimport {\n ProjectStatusFromJSON,\n ProjectStatusFromJSONTyped,\n ProjectStatusToJSON,\n ProjectStatusToJSONTyped,\n} from './ProjectStatus';\nimport type { AdditionalBindingProperties } from './AdditionalBindingProperties';\nimport {\n AdditionalBindingPropertiesFromJSON,\n AdditionalBindingPropertiesFromJSONTyped,\n AdditionalBindingPropertiesToJSON,\n AdditionalBindingPropertiesToJSONTyped,\n} from './AdditionalBindingProperties';\nimport type { SharedProject } from './SharedProject';\nimport {\n SharedProjectFromJSON,\n SharedProjectFromJSONTyped,\n SharedProjectToJSON,\n SharedProjectToJSONTyped,\n} from './SharedProject';\nimport type { UserMessageDbModel } from './UserMessageDbModel';\nimport {\n UserMessageDbModelFromJSON,\n UserMessageDbModelFromJSONTyped,\n UserMessageDbModelToJSON,\n UserMessageDbModelToJSONTyped,\n} from './UserMessageDbModel';\nimport type { ConnectionMetadataModel } from './ConnectionMetadataModel';\nimport {\n ConnectionMetadataModelFromJSON,\n ConnectionMetadataModelFromJSONTyped,\n ConnectionMetadataModelToJSON,\n ConnectionMetadataModelToJSONTyped,\n} from './ConnectionMetadataModel';\nimport type { ProjectAppliedProfileModel } from './ProjectAppliedProfileModel';\nimport {\n ProjectAppliedProfileModelFromJSON,\n ProjectAppliedProfileModelFromJSONTyped,\n ProjectAppliedProfileModelToJSON,\n ProjectAppliedProfileModelToJSONTyped,\n} from './ProjectAppliedProfileModel';\nimport type { TriggerMetadataModel } from './TriggerMetadataModel';\nimport {\n TriggerMetadataModelFromJSON,\n TriggerMetadataModelFromJSONTyped,\n TriggerMetadataModelToJSON,\n TriggerMetadataModelToJSONTyped,\n} from './TriggerMetadataModel';\nimport type { ProjectConnectionModel } from './ProjectConnectionModel';\nimport {\n ProjectConnectionModelFromJSON,\n ProjectConnectionModelFromJSONTyped,\n ProjectConnectionModelToJSON,\n ProjectConnectionModelToJSONTyped,\n} from './ProjectConnectionModel';\nimport type { ProjectMetadataModel } from './ProjectMetadataModel';\nimport {\n ProjectMetadataModelFromJSON,\n ProjectMetadataModelFromJSONTyped,\n ProjectMetadataModelToJSON,\n ProjectMetadataModelToJSONTyped,\n} from './ProjectMetadataModel';\nimport type { PublishResultModel } from './PublishResultModel';\nimport {\n PublishResultModelFromJSON,\n PublishResultModelFromJSONTyped,\n PublishResultModelToJSON,\n PublishResultModelToJSONTyped,\n} from './PublishResultModel';\nimport type { SapContext } from './SapContext';\nimport {\n SapContextFromJSON,\n SapContextFromJSONTyped,\n SapContextToJSON,\n SapContextToJSONTyped,\n} from './SapContext';\nimport type { ProjectPackageModel } from './ProjectPackageModel';\nimport {\n ProjectPackageModelFromJSON,\n ProjectPackageModelFromJSONTyped,\n ProjectPackageModelToJSON,\n ProjectPackageModelToJSONTyped,\n} from './ProjectPackageModel';\n\n/**\n * \n * @export\n * @interface ProjectDbModel\n */\nexport interface ProjectDbModel {\n /**\n * \n * @type {string}\n * @memberof ProjectDbModel\n */\n id?: string;\n /**\n * \n * @type {string}\n * @memberof ProjectDbModel\n */\n designId?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectDbModel\n */\n previousProjectId?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectDbModel\n */\n userId?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectDbModel\n */\n organisationId?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectDbModel\n */\n name?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectDbModel\n */\n solutionId?: string | null;\n /**\n * \n * @type {Date}\n * @memberof ProjectDbModel\n */\n deletionDate?: Date | null;\n /**\n * \n * @type {ProjectStatus}\n * @memberof ProjectDbModel\n */\n status?: ProjectStatus;\n /**\n * \n * @type {boolean}\n * @memberof ProjectDbModel\n */\n fakeProjectTemplateEdit?: boolean;\n /**\n * \n * @type {boolean}\n * @memberof ProjectDbModel\n */\n isHidden?: boolean;\n /**\n * \n * @type {TargetFramework}\n * @memberof ProjectDbModel\n */\n targetFramework?: TargetFramework;\n /**\n * \n * @type {string}\n * @memberof ProjectDbModel\n */\n projectType?: string | null;\n /**\n * \n * @type {Date}\n * @memberof ProjectDbModel\n */\n creationTime?: Date;\n /**\n * \n * @type {Date}\n * @memberof ProjectDbModel\n */\n lastModifiedTime?: Date;\n /**\n * \n * @type {string}\n * @memberof ProjectDbModel\n */\n expressionLanguage?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectDbModel\n */\n nameLower?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectDbModel\n */\n description?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectDbModel\n */\n descriptionLower?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectDbModel\n */\n jitVersion?: string | null;\n /**\n * \n * @type {Array<ProjectPackageModel>}\n * @memberof ProjectDbModel\n */\n dependencies?: Array<ProjectPackageModel> | null;\n /**\n * \n * @type {Date}\n * @memberof ProjectDbModel\n */\n pinDate?: Date | null;\n /**\n * \n * @type {ProjectLockModel}\n * @memberof ProjectDbModel\n */\n lock?: ProjectLockModel;\n /**\n * \n * @type {boolean}\n * @memberof ProjectDbModel\n */\n hasTrigger?: boolean;\n /**\n * \n * @type {string}\n * @memberof ProjectDbModel\n */\n tenantId?: string | null;\n /**\n * \n * @type {SapContext}\n * @memberof ProjectDbModel\n */\n sapContext?: SapContext;\n /**\n * \n * @type {string}\n * @memberof ProjectDbModel\n */\n rowVersion?: string | null;\n /**\n * \n * @type {Date}\n * @memberof ProjectDbModel\n */\n disableAutoUpdateUntilDate?: Date | null;\n /**\n * \n * @type {ProjectStructure}\n * @memberof ProjectDbModel\n */\n structure?: ProjectStructure;\n /**\n * \n * @type {UserMessageDbModel}\n * @memberof ProjectDbModel\n */\n userMessage?: UserMessageDbModel;\n /**\n * \n * @type {string}\n * @memberof ProjectDbModel\n */\n triggerType?: string | null;\n /**\n * \n * @type {TriggerMetadataModel}\n * @memberof ProjectDbModel\n */\n trigger?: TriggerMetadataModel;\n /**\n * \n * @type {Array<ConnectionMetadataModel>}\n * @memberof ProjectDbModel\n */\n connections?: Array<ConnectionMetadataModel> | null;\n /**\n * \n * @type {Array<PinnedProject>}\n * @memberof ProjectDbModel\n */\n pins?: Array<PinnedProject> | null;\n /**\n * \n * @type {Array<UserBindingProfileModel>}\n * @memberof ProjectDbModel\n */\n bindingProfiles?: Array<UserBindingProfileModel> | null;\n /**\n * \n * @type {number}\n * @memberof ProjectDbModel\n */\n lastAppliedProfileId?: number | null;\n /**\n * \n * @type {UserBindingProfileModel}\n * @memberof ProjectDbModel\n */\n lastAppliedProfile?: UserBindingProfileModel;\n /**\n * \n * @type {boolean}\n * @memberof ProjectDbModel\n */\n hasDefaultName?: boolean;\n /**\n * \n * @type {Array<ProjectAppliedProfileModel>}\n * @memberof ProjectDbModel\n */\n projectAppliedProfiles?: Array<ProjectAppliedProfileModel> | null;\n /**\n * \n * @type {Array<ProjectConnectionModel>}\n * @memberof ProjectDbModel\n */\n projectConnections?: Array<ProjectConnectionModel> | null;\n /**\n * \n * @type {Array<AdditionalBindingProperties>}\n * @memberof ProjectDbModel\n */\n additionalBindingProperties?: Array<AdditionalBindingProperties> | null;\n /**\n * \n * @type {Array<PublishResultModel>}\n * @memberof ProjectDbModel\n */\n publishHistory?: Array<PublishResultModel> | null;\n /**\n * \n * @type {ProjectAppModel}\n * @memberof ProjectDbModel\n */\n projectAppMetadata?: ProjectAppModel;\n /**\n * \n * @type {TestManagerMetadataModel}\n * @memberof ProjectDbModel\n */\n testManagerMetadata?: TestManagerMetadataModel;\n /**\n * \n * @type {Array<SharedProject>}\n * @memberof ProjectDbModel\n */\n shares?: Array<SharedProject> | null;\n /**\n * \n * @type {ProjectMetadataModel}\n * @memberof ProjectDbModel\n */\n metadata?: ProjectMetadataModel;\n /**\n * \n * @type {boolean}\n * @memberof ProjectDbModel\n */\n isPreview?: boolean;\n /**\n * \n * @type {string}\n * @memberof ProjectDbModel\n */\n errorList?: string | null;\n /**\n * \n * @type {boolean}\n * @memberof ProjectDbModel\n */\n requirePreprocessing?: boolean;\n /**\n * \n * @type {string}\n * @memberof ProjectDbModel\n */\n relativePath?: string | null;\n}\n\n\n\n/**\n * Check if a given object implements the ProjectDbModel interface.\n */\nexport function instanceOfProjectDbModel(value: object): value is ProjectDbModel {\n return true;\n}\n\nexport function ProjectDbModelFromJSON(json: any): ProjectDbModel {\n return ProjectDbModelFromJSONTyped(json, false);\n}\n\nexport function ProjectDbModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProjectDbModel {\n if (json == null) {\n return json;\n }\n return {\n \n 'id': json['id'] == null ? undefined : json['id'],\n 'designId': json['designId'] == null ? undefined : json['designId'],\n 'previousProjectId': json['previousProjectId'] == null ? undefined : json['previousProjectId'],\n 'userId': json['userId'] == null ? undefined : json['userId'],\n 'organisationId': json['organisationId'] == null ? undefined : json['organisationId'],\n 'name': json['name'] == null ? undefined : json['name'],\n 'solutionId': json['solutionId'] == null ? undefined : json['solutionId'],\n 'deletionDate': json['deletionDate'] == null ? undefined : (new Date(json['deletionDate'])),\n 'status': json['status'] == null ? undefined : ProjectStatusFromJSON(json['status']),\n 'fakeProjectTemplateEdit': json['fakeProjectTemplateEdit'] == null ? undefined : json['fakeProjectTemplateEdit'],\n 'isHidden': json['isHidden'] == null ? undefined : json['isHidden'],\n 'targetFramework': json['targetFramework'] == null ? undefined : TargetFrameworkFromJSON(json['targetFramework']),\n 'projectType': json['projectType'] == null ? undefined : json['projectType'],\n 'creationTime': json['creationTime'] == null ? undefined : (new Date(json['creationTime'])),\n 'lastModifiedTime': json['lastModifiedTime'] == null ? undefined : (new Date(json['lastModifiedTime'])),\n 'expressionLanguage': json['expressionLanguage'] == null ? undefined : json['expressionLanguage'],\n 'nameLower': json['nameLower'] == null ? undefined : json['nameLower'],\n 'description': json['description'] == null ? undefined : json['description'],\n 'descriptionLower': json['descriptionLower'] == null ? undefined : json['descriptionLower'],\n 'jitVersion': json['jitVersion'] == null ? undefined : json['jitVersion'],\n 'dependencies': json['dependencies'] == null ? undefined : ((json['dependencies'] as Array<any>).map(ProjectPackageModelFromJSON)),\n 'pinDate': json['pinDate'] == null ? undefined : (new Date(json['pinDate'])),\n 'lock': json['lock'] == null ? undefined : ProjectLockModelFromJSON(json['lock']),\n 'hasTrigger': json['hasTrigger'] == null ? undefined : json['hasTrigger'],\n 'tenantId': json['tenantId'] == null ? undefined : json['tenantId'],\n 'sapContext': json['sapContext'] == null ? undefined : SapContextFromJSON(json['sapContext']),\n 'rowVersion': json['rowVersion'] == null ? undefined : json['rowVersion'],\n 'disableAutoUpdateUntilDate': json['disableAutoUpdateUntilDate'] == null ? undefined : (new Date(json['disableAutoUpdateUntilDate'])),\n 'structure': json['structure'] == null ? undefined : ProjectStructureFromJSON(json['structure']),\n 'userMessage': json['userMessage'] == null ? undefined : UserMessageDbModelFromJSON(json['userMessage']),\n 'triggerType': json['triggerType'] == null ? undefined : json['triggerType'],\n 'trigger': json['trigger'] == null ? undefined : TriggerMetadataModelFromJSON(json['trigger']),\n 'connections': json['connections'] == null ? undefined : ((json['connections'] as Array<any>).map(ConnectionMetadataModelFromJSON)),\n 'pins': json['pins'] == null ? undefined : ((json['pins'] as Array<any>).map(PinnedProjectFromJSON)),\n 'bindingProfiles': json['bindingProfiles'] == null ? undefined : ((json['bindingProfiles'] as Array<any>).map(UserBindingProfileModelFromJSON)),\n 'lastAppliedProfileId': json['lastAppliedProfileId'] == null ? undefined : json['lastAppliedProfileId'],\n 'lastAppliedProfile': json['lastAppliedProfile'] == null ? undefined : UserBindingProfileModelFromJSON(json['lastAppliedProfile']),\n 'hasDefaultName': json['hasDefaultName'] == null ? undefined : json['hasDefaultName'],\n 'projectAppliedProfiles': json['projectAppliedProfiles'] == null ? undefined : ((json['projectAppliedProfiles'] as Array<any>).map(ProjectAppliedProfileModelFromJSON)),\n 'projectConnections': json['projectConnections'] == null ? undefined : ((json['projectConnections'] as Array<any>).map(ProjectConnectionModelFromJSON)),\n 'additionalBindingProperties': json['additionalBindingProperties'] == null ? undefined : ((json['additionalBindingProperties'] as Array<any>).map(AdditionalBindingPropertiesFromJSON)),\n 'publishHistory': json['publishHistory'] == null ? undefined : ((json['publishHistory'] as Array<any>).map(PublishResultModelFromJSON)),\n 'projectAppMetadata': json['projectAppMetadata'] == null ? undefined : ProjectAppModelFromJSON(json['projectAppMetadata']),\n 'testManagerMetadata': json['testManagerMetadata'] == null ? undefined : TestManagerMetadataModelFromJSON(json['testManagerMetadata']),\n 'shares': json['shares'] == null ? undefined : ((json['shares'] as Array<any>).map(SharedProjectFromJSON)),\n 'metadata': json['metadata'] == null ? undefined : ProjectMetadataModelFromJSON(json['metadata']),\n 'isPreview': json['isPreview'] == null ? undefined : json['isPreview'],\n 'errorList': json['errorList'] == null ? undefined : json['errorList'],\n 'requirePreprocessing': json['requirePreprocessing'] == null ? undefined : json['requirePreprocessing'],\n 'relativePath': json['relativePath'] == null ? undefined : json['relativePath'],\n };\n}\n\nexport function ProjectDbModelToJSON(json: any): ProjectDbModel {\n return ProjectDbModelToJSONTyped(json, false);\n}\n\nexport function ProjectDbModelToJSONTyped(value?: ProjectDbModel | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'id': value['id'],\n 'designId': value['designId'],\n 'previousProjectId': value['previousProjectId'],\n 'userId': value['userId'],\n 'organisationId': value['organisationId'],\n 'name': value['name'],\n 'solutionId': value['solutionId'],\n 'deletionDate': value['deletionDate'] == null ? value['deletionDate'] : value['deletionDate'].toISOString(),\n 'status': ProjectStatusToJSON(value['status']),\n 'fakeProjectTemplateEdit': value['fakeProjectTemplateEdit'],\n 'isHidden': value['isHidden'],\n 'targetFramework': TargetFrameworkToJSON(value['targetFramework']),\n 'projectType': value['projectType'],\n 'creationTime': value['creationTime'] == null ? value['creationTime'] : value['creationTime'].toISOString(),\n 'lastModifiedTime': value['lastModifiedTime'] == null ? value['lastModifiedTime'] : value['lastModifiedTime'].toISOString(),\n 'expressionLanguage': value['expressionLanguage'],\n 'nameLower': value['nameLower'],\n 'description': value['description'],\n 'descriptionLower': value['descriptionLower'],\n 'jitVersion': value['jitVersion'],\n 'dependencies': value['dependencies'] == null ? undefined : ((value['dependencies'] as Array<any>).map(ProjectPackageModelToJSON)),\n 'pinDate': value['pinDate'] == null ? value['pinDate'] : value['pinDate'].toISOString(),\n 'lock': ProjectLockModelToJSON(value['lock']),\n 'hasTrigger': value['hasTrigger'],\n 'tenantId': value['tenantId'],\n 'sapContext': SapContextToJSON(value['sapContext']),\n 'rowVersion': value['rowVersion'],\n 'disableAutoUpdateUntilDate': value['disableAutoUpdateUntilDate'] == null ? value['disableAutoUpdateUntilDate'] : value['disableAutoUpdateUntilDate'].toISOString(),\n 'structure': ProjectStructureToJSON(value['structure']),\n 'userMessage': UserMessageDbModelToJSON(value['userMessage']),\n 'triggerType': value['triggerType'],\n 'trigger': TriggerMetadataModelToJSON(value['trigger']),\n 'connections': value['connections'] == null ? undefined : ((value['connections'] as Array<any>).map(ConnectionMetadataModelToJSON)),\n 'pins': value['pins'] == null ? undefined : ((value['pins'] as Array<any>).map(PinnedProjectToJSON)),\n 'bindingProfiles': value['bindingProfiles'] == null ? undefined : ((value['bindingProfiles'] as Array<any>).map(UserBindingProfileModelToJSON)),\n 'lastAppliedProfileId': value['lastAppliedProfileId'],\n 'lastAppliedProfile': UserBindingProfileModelToJSON(value['lastAppliedProfile']),\n 'hasDefaultName': value['hasDefaultName'],\n 'projectAppliedProfiles': value['projectAppliedProfiles'] == null ? undefined : ((value['projectAppliedProfiles'] as Array<any>).map(ProjectAppliedProfileModelToJSON)),\n 'projectConnections': value['projectConnections'] == null ? undefined : ((value['projectConnections'] as Array<any>).map(ProjectConnectionModelToJSON)),\n 'additionalBindingProperties': value['additionalBindingProperties'] == null ? undefined : ((value['additionalBindingProperties'] as Array<any>).map(AdditionalBindingPropertiesToJSON)),\n 'publishHistory': value['publishHistory'] == null ? undefined : ((value['publishHistory'] as Array<any>).map(PublishResultModelToJSON)),\n 'projectAppMetadata': ProjectAppModelToJSON(value['projectAppMetadata']),\n 'testManagerMetadata': TestManagerMetadataModelToJSON(value['testManagerMetadata']),\n 'shares': value['shares'] == null ? undefined : ((value['shares'] as Array<any>).map(SharedProjectToJSON)),\n 'metadata': ProjectMetadataModelToJSON(value['metadata']),\n 'isPreview': value['isPreview'],\n 'errorList': value['errorList'],\n 'requirePreprocessing': value['requirePreprocessing'],\n 'relativePath': value['relativePath'],\n };\n}\n\n",
|
|
132
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ProjectDbModel } from './ProjectDbModel';\nimport {\n ProjectDbModelFromJSON,\n ProjectDbModelFromJSONTyped,\n ProjectDbModelToJSON,\n ProjectDbModelToJSONTyped,\n} from './ProjectDbModel';\n\n/**\n * \n * @export\n * @interface AdditionalBindingProperties\n */\nexport interface AdditionalBindingProperties {\n /**\n * \n * @type {string}\n * @memberof AdditionalBindingProperties\n */\n projectId?: string;\n /**\n * \n * @type {ProjectDbModel}\n * @memberof AdditionalBindingProperties\n */\n project?: ProjectDbModel;\n /**\n * \n * @type {string}\n * @memberof AdditionalBindingProperties\n */\n workflowFileId?: string | null;\n /**\n * \n * @type {string}\n * @memberof AdditionalBindingProperties\n */\n resourceType?: string | null;\n /**\n * \n * @type {string}\n * @memberof AdditionalBindingProperties\n */\n resourceKey?: string | null;\n /**\n * \n * @type {string}\n * @memberof AdditionalBindingProperties\n */\n purpose?: string | null;\n}\n\n/**\n * Check if a given object implements the AdditionalBindingProperties interface.\n */\nexport function instanceOfAdditionalBindingProperties(value: object): value is AdditionalBindingProperties {\n return true;\n}\n\nexport function AdditionalBindingPropertiesFromJSON(json: any): AdditionalBindingProperties {\n return AdditionalBindingPropertiesFromJSONTyped(json, false);\n}\n\nexport function AdditionalBindingPropertiesFromJSONTyped(json: any, ignoreDiscriminator: boolean): AdditionalBindingProperties {\n if (json == null) {\n return json;\n }\n return {\n \n 'projectId': json['projectId'] == null ? undefined : json['projectId'],\n 'project': json['project'] == null ? undefined : ProjectDbModelFromJSON(json['project']),\n 'workflowFileId': json['workflowFileId'] == null ? undefined : json['workflowFileId'],\n 'resourceType': json['resourceType'] == null ? undefined : json['resourceType'],\n 'resourceKey': json['resourceKey'] == null ? undefined : json['resourceKey'],\n 'purpose': json['purpose'] == null ? undefined : json['purpose'],\n };\n}\n\nexport function AdditionalBindingPropertiesToJSON(json: any): AdditionalBindingProperties {\n return AdditionalBindingPropertiesToJSONTyped(json, false);\n}\n\nexport function AdditionalBindingPropertiesToJSONTyped(value?: AdditionalBindingProperties | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'projectId': value['projectId'],\n 'project': ProjectDbModelToJSON(value['project']),\n 'workflowFileId': value['workflowFileId'],\n 'resourceType': value['resourceType'],\n 'resourceKey': value['resourceKey'],\n 'purpose': value['purpose'],\n };\n}\n\n",
|
|
133
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface AdditionalBindingPropertiesDto\n */\nexport interface AdditionalBindingPropertiesDto {\n /**\n * \n * @type {string}\n * @memberof AdditionalBindingPropertiesDto\n */\n resourceType?: string | null;\n /**\n * \n * @type {string}\n * @memberof AdditionalBindingPropertiesDto\n */\n resourceKey?: string | null;\n /**\n * \n * @type {string}\n * @memberof AdditionalBindingPropertiesDto\n */\n purpose?: string | null;\n /**\n * \n * @type {string}\n * @memberof AdditionalBindingPropertiesDto\n */\n workflowFileId?: string | null;\n}\n\n/**\n * Check if a given object implements the AdditionalBindingPropertiesDto interface.\n */\nexport function instanceOfAdditionalBindingPropertiesDto(value: object): value is AdditionalBindingPropertiesDto {\n return true;\n}\n\nexport function AdditionalBindingPropertiesDtoFromJSON(json: any): AdditionalBindingPropertiesDto {\n return AdditionalBindingPropertiesDtoFromJSONTyped(json, false);\n}\n\nexport function AdditionalBindingPropertiesDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): AdditionalBindingPropertiesDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'resourceType': json['resourceType'] == null ? undefined : json['resourceType'],\n 'resourceKey': json['resourceKey'] == null ? undefined : json['resourceKey'],\n 'purpose': json['purpose'] == null ? undefined : json['purpose'],\n 'workflowFileId': json['workflowFileId'] == null ? undefined : json['workflowFileId'],\n };\n}\n\nexport function AdditionalBindingPropertiesDtoToJSON(json: any): AdditionalBindingPropertiesDto {\n return AdditionalBindingPropertiesDtoToJSONTyped(json, false);\n}\n\nexport function AdditionalBindingPropertiesDtoToJSONTyped(value?: AdditionalBindingPropertiesDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'resourceType': value['resourceType'],\n 'resourceKey': value['resourceKey'],\n 'purpose': value['purpose'],\n 'workflowFileId': value['workflowFileId'],\n };\n}\n\n",
|
|
134
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const AppUsageType = {\n Standard: 'standard',\n ActionView: 'actionView'\n} as const;\nexport type AppUsageType = typeof AppUsageType[keyof typeof AppUsageType];\n\n\nexport function instanceOfAppUsageType(value: any): boolean {\n for (const key in AppUsageType) {\n if (Object.prototype.hasOwnProperty.call(AppUsageType, key)) {\n if (AppUsageType[key as keyof typeof AppUsageType] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function AppUsageTypeFromJSON(json: any): AppUsageType {\n return AppUsageTypeFromJSONTyped(json, false);\n}\n\nexport function AppUsageTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): AppUsageType {\n return json as AppUsageType;\n}\n\nexport function AppUsageTypeToJSON(value?: AppUsageType | null): any {\n return value as any;\n}\n\nexport function AppUsageTypeToJSONTyped(value: any, ignoreDiscriminator: boolean): AppUsageType {\n return value as AppUsageType;\n}\n\n",
|
|
135
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const FileType = {\n OtherType: 'otherType',\n Workflow: 'workflow',\n TestCase: 'testCase'\n} as const;\nexport type FileType = typeof FileType[keyof typeof FileType];\n\n\nexport function instanceOfFileType(value: any): boolean {\n for (const key in FileType) {\n if (Object.prototype.hasOwnProperty.call(FileType, key)) {\n if (FileType[key as keyof typeof FileType] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function FileTypeFromJSON(json: any): FileType {\n return FileTypeFromJSONTyped(json, false);\n}\n\nexport function FileTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): FileType {\n return json as FileType;\n}\n\nexport function FileTypeToJSON(value?: FileType | null): any {\n return value as any;\n}\n\nexport function FileTypeToJSONTyped(value: any, ignoreDiscriminator: boolean): FileType {\n return value as FileType;\n}\n\n",
|
|
136
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { FileType } from './FileType';\nimport {\n FileTypeFromJSON,\n FileTypeFromJSONTyped,\n FileTypeToJSON,\n FileTypeToJSONTyped,\n} from './FileType';\n\n/**\n * \n * @export\n * @interface FileDto\n */\nexport interface FileDto {\n /**\n * \n * @type {string}\n * @memberof FileDto\n */\n id?: string | null;\n /**\n * \n * @type {string}\n * @memberof FileDto\n */\n name?: string | null;\n /**\n * \n * @type {boolean}\n * @memberof FileDto\n */\n isMain?: boolean;\n /**\n * \n * @type {FileType}\n * @memberof FileDto\n */\n fileType?: FileType;\n /**\n * \n * @type {boolean}\n * @memberof FileDto\n */\n isEntryPoint?: boolean;\n /**\n * \n * @type {boolean}\n * @memberof FileDto\n */\n ignoredFromPublish?: boolean;\n /**\n * \n * @type {string}\n * @memberof FileDto\n */\n appFormId?: string | null;\n /**\n * \n * @type {string}\n * @memberof FileDto\n */\n externalAutomationId?: string | null;\n /**\n * \n * @type {string}\n * @memberof FileDto\n */\n testCaseId?: string | null;\n /**\n * \n * @type {string}\n * @memberof FileDto\n */\n contentSignature?: string | null;\n}\n\n\n\n/**\n * Check if a given object implements the FileDto interface.\n */\nexport function instanceOfFileDto(value: object): value is FileDto {\n return true;\n}\n\nexport function FileDtoFromJSON(json: any): FileDto {\n return FileDtoFromJSONTyped(json, false);\n}\n\nexport function FileDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): FileDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'id': json['id'] == null ? undefined : json['id'],\n 'name': json['name'] == null ? undefined : json['name'],\n 'isMain': json['isMain'] == null ? undefined : json['isMain'],\n 'fileType': json['fileType'] == null ? undefined : FileTypeFromJSON(json['fileType']),\n 'isEntryPoint': json['isEntryPoint'] == null ? undefined : json['isEntryPoint'],\n 'ignoredFromPublish': json['ignoredFromPublish'] == null ? undefined : json['ignoredFromPublish'],\n 'appFormId': json['appFormId'] == null ? undefined : json['appFormId'],\n 'externalAutomationId': json['externalAutomationId'] == null ? undefined : json['externalAutomationId'],\n 'testCaseId': json['testCaseId'] == null ? undefined : json['testCaseId'],\n 'contentSignature': json['contentSignature'] == null ? undefined : json['contentSignature'],\n };\n}\n\nexport function FileDtoToJSON(json: any): FileDto {\n return FileDtoToJSONTyped(json, false);\n}\n\nexport function FileDtoToJSONTyped(value?: FileDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'id': value['id'],\n 'name': value['name'],\n 'isMain': value['isMain'],\n 'fileType': FileTypeToJSON(value['fileType']),\n 'isEntryPoint': value['isEntryPoint'],\n 'ignoredFromPublish': value['ignoredFromPublish'],\n 'appFormId': value['appFormId'],\n 'externalAutomationId': value['externalAutomationId'],\n 'testCaseId': value['testCaseId'],\n 'contentSignature': value['contentSignature'],\n };\n}\n\n",
|
|
137
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const SpecialFolderType = {\n Regular: 'regular',\n ScreenShot: 'screenShot',\n Entities: 'entities',\n Local: 'local',\n Project: 'project',\n TestData: 'testData',\n Templates: 'templates',\n Mocks: 'mocks',\n Settings: 'settings',\n Tmh: 'tmh',\n Storage: 'storage',\n Objects: 'objects'\n} as const;\nexport type SpecialFolderType = typeof SpecialFolderType[keyof typeof SpecialFolderType];\n\n\nexport function instanceOfSpecialFolderType(value: any): boolean {\n for (const key in SpecialFolderType) {\n if (Object.prototype.hasOwnProperty.call(SpecialFolderType, key)) {\n if (SpecialFolderType[key as keyof typeof SpecialFolderType] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function SpecialFolderTypeFromJSON(json: any): SpecialFolderType {\n return SpecialFolderTypeFromJSONTyped(json, false);\n}\n\nexport function SpecialFolderTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): SpecialFolderType {\n return json as SpecialFolderType;\n}\n\nexport function SpecialFolderTypeToJSON(value?: SpecialFolderType | null): any {\n return value as any;\n}\n\nexport function SpecialFolderTypeToJSONTyped(value: any, ignoreDiscriminator: boolean): SpecialFolderType {\n return value as SpecialFolderType;\n}\n\n",
|
|
138
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { FileDto } from './FileDto';\nimport {\n FileDtoFromJSON,\n FileDtoFromJSONTyped,\n FileDtoToJSON,\n FileDtoToJSONTyped,\n} from './FileDto';\nimport type { SpecialFolderType } from './SpecialFolderType';\nimport {\n SpecialFolderTypeFromJSON,\n SpecialFolderTypeFromJSONTyped,\n SpecialFolderTypeToJSON,\n SpecialFolderTypeToJSONTyped,\n} from './SpecialFolderType';\n\n/**\n * \n * @export\n * @interface FolderDto\n */\nexport interface FolderDto {\n /**\n * \n * @type {string}\n * @memberof FolderDto\n */\n id?: string | null;\n /**\n * \n * @type {string}\n * @memberof FolderDto\n */\n name?: string | null;\n /**\n * \n * @type {Array<FolderDto>}\n * @memberof FolderDto\n */\n folders?: Array<FolderDto> | null;\n /**\n * \n * @type {Array<FileDto>}\n * @memberof FolderDto\n */\n files?: Array<FileDto> | null;\n /**\n * \n * @type {SpecialFolderType}\n * @memberof FolderDto\n */\n folderType?: SpecialFolderType;\n}\n\n\n\n/**\n * Check if a given object implements the FolderDto interface.\n */\nexport function instanceOfFolderDto(value: object): value is FolderDto {\n return true;\n}\n\nexport function FolderDtoFromJSON(json: any): FolderDto {\n return FolderDtoFromJSONTyped(json, false);\n}\n\nexport function FolderDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): FolderDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'id': json['id'] == null ? undefined : json['id'],\n 'name': json['name'] == null ? undefined : json['name'],\n 'folders': json['folders'] == null ? undefined : ((json['folders'] as Array<any>).map(FolderDtoFromJSON)),\n 'files': json['files'] == null ? undefined : ((json['files'] as Array<any>).map(FileDtoFromJSON)),\n 'folderType': json['folderType'] == null ? undefined : SpecialFolderTypeFromJSON(json['folderType']),\n };\n}\n\nexport function FolderDtoToJSON(json: any): FolderDto {\n return FolderDtoToJSONTyped(json, false);\n}\n\nexport function FolderDtoToJSONTyped(value?: FolderDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'id': value['id'],\n 'name': value['name'],\n 'folders': value['folders'] == null ? undefined : ((value['folders'] as Array<any>).map(FolderDtoToJSON)),\n 'files': value['files'] == null ? undefined : ((value['files'] as Array<any>).map(FileDtoToJSON)),\n 'folderType': SpecialFolderTypeToJSON(value['folderType']),\n };\n}\n\n",
|
|
139
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface MetadataConnectionDto\n */\nexport interface MetadataConnectionDto {\n /**\n * \n * @type {string}\n * @memberof MetadataConnectionDto\n */\n connectionId?: string | null;\n /**\n * \n * @type {string}\n * @memberof MetadataConnectionDto\n */\n connector?: string | null;\n /**\n * \n * @type {string}\n * @memberof MetadataConnectionDto\n */\n purpose?: string | null;\n /**\n * \n * @type {string}\n * @memberof MetadataConnectionDto\n */\n workflowFileId?: string | null;\n}\n\n/**\n * Check if a given object implements the MetadataConnectionDto interface.\n */\nexport function instanceOfMetadataConnectionDto(value: object): value is MetadataConnectionDto {\n return true;\n}\n\nexport function MetadataConnectionDtoFromJSON(json: any): MetadataConnectionDto {\n return MetadataConnectionDtoFromJSONTyped(json, false);\n}\n\nexport function MetadataConnectionDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): MetadataConnectionDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'connectionId': json['connectionId'] == null ? undefined : json['connectionId'],\n 'connector': json['connector'] == null ? undefined : json['connector'],\n 'purpose': json['purpose'] == null ? undefined : json['purpose'],\n 'workflowFileId': json['workflowFileId'] == null ? undefined : json['workflowFileId'],\n };\n}\n\nexport function MetadataConnectionDtoToJSON(json: any): MetadataConnectionDto {\n return MetadataConnectionDtoToJSONTyped(json, false);\n}\n\nexport function MetadataConnectionDtoToJSONTyped(value?: MetadataConnectionDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'connectionId': value['connectionId'],\n 'connector': value['connector'],\n 'purpose': value['purpose'],\n 'workflowFileId': value['workflowFileId'],\n };\n}\n\n",
|
|
140
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { MetadataConnectionDto } from './MetadataConnectionDto';\nimport {\n MetadataConnectionDtoFromJSON,\n MetadataConnectionDtoFromJSONTyped,\n MetadataConnectionDtoToJSON,\n MetadataConnectionDtoToJSONTyped,\n} from './MetadataConnectionDto';\n\n/**\n * \n * @export\n * @interface MetadataTriggerDto\n */\nexport interface MetadataTriggerDto {\n /**\n * \n * @type {MetadataConnectionDto}\n * @memberof MetadataTriggerDto\n */\n connection?: MetadataConnectionDto;\n /**\n * \n * @type {string}\n * @memberof MetadataTriggerDto\n */\n operation?: string | null;\n /**\n * \n * @type {string}\n * @memberof MetadataTriggerDto\n */\n triggerId?: string | null;\n /**\n * \n * @type {string}\n * @memberof MetadataTriggerDto\n */\n defaultDisplayName?: string | null;\n /**\n * \n * @type {string}\n * @memberof MetadataTriggerDto\n */\n displayName?: string | null;\n}\n\n/**\n * Check if a given object implements the MetadataTriggerDto interface.\n */\nexport function instanceOfMetadataTriggerDto(value: object): value is MetadataTriggerDto {\n return true;\n}\n\nexport function MetadataTriggerDtoFromJSON(json: any): MetadataTriggerDto {\n return MetadataTriggerDtoFromJSONTyped(json, false);\n}\n\nexport function MetadataTriggerDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): MetadataTriggerDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'connection': json['connection'] == null ? undefined : MetadataConnectionDtoFromJSON(json['connection']),\n 'operation': json['operation'] == null ? undefined : json['operation'],\n 'triggerId': json['triggerId'] == null ? undefined : json['triggerId'],\n 'defaultDisplayName': json['defaultDisplayName'] == null ? undefined : json['defaultDisplayName'],\n 'displayName': json['displayName'] == null ? undefined : json['displayName'],\n };\n}\n\nexport function MetadataTriggerDtoToJSON(json: any): MetadataTriggerDto {\n return MetadataTriggerDtoToJSONTyped(json, false);\n}\n\nexport function MetadataTriggerDtoToJSONTyped(value?: MetadataTriggerDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'connection': MetadataConnectionDtoToJSON(value['connection']),\n 'operation': value['operation'],\n 'triggerId': value['triggerId'],\n 'defaultDisplayName': value['defaultDisplayName'],\n 'displayName': value['displayName'],\n };\n}\n\n",
|
|
141
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface PackageDto\n */\nexport interface PackageDto {\n /**\n * \n * @type {string}\n * @memberof PackageDto\n */\n name: string;\n /**\n * \n * @type {string}\n * @memberof PackageDto\n */\n version: string;\n /**\n * \n * @type {boolean}\n * @memberof PackageDto\n */\n isRestricted?: boolean;\n}\n\n/**\n * Check if a given object implements the PackageDto interface.\n */\nexport function instanceOfPackageDto(value: object): value is PackageDto {\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('version' in value) || value['version'] === undefined) return false;\n return true;\n}\n\nexport function PackageDtoFromJSON(json: any): PackageDto {\n return PackageDtoFromJSONTyped(json, false);\n}\n\nexport function PackageDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): PackageDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'name': json['name'],\n 'version': json['version'],\n 'isRestricted': json['isRestricted'] == null ? undefined : json['isRestricted'],\n };\n}\n\nexport function PackageDtoToJSON(json: any): PackageDto {\n return PackageDtoToJSONTyped(json, false);\n}\n\nexport function PackageDtoToJSONTyped(value?: PackageDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'name': value['name'],\n 'version': value['version'],\n 'isRestricted': value['isRestricted'],\n };\n}\n\n",
|
|
142
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TestManagerMetadataDto\n */\nexport interface TestManagerMetadataDto {\n /**\n * \n * @type {string}\n * @memberof TestManagerMetadataDto\n */\n testManagerProjectId?: string | null;\n /**\n * \n * @type {Date}\n * @memberof TestManagerMetadataDto\n */\n creationTime?: Date;\n}\n\n/**\n * Check if a given object implements the TestManagerMetadataDto interface.\n */\nexport function instanceOfTestManagerMetadataDto(value: object): value is TestManagerMetadataDto {\n return true;\n}\n\nexport function TestManagerMetadataDtoFromJSON(json: any): TestManagerMetadataDto {\n return TestManagerMetadataDtoFromJSONTyped(json, false);\n}\n\nexport function TestManagerMetadataDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): TestManagerMetadataDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'testManagerProjectId': json['testManagerProjectId'] == null ? undefined : json['testManagerProjectId'],\n 'creationTime': json['creationTime'] == null ? undefined : (new Date(json['creationTime'])),\n };\n}\n\nexport function TestManagerMetadataDtoToJSON(json: any): TestManagerMetadataDto {\n return TestManagerMetadataDtoToJSONTyped(json, false);\n}\n\nexport function TestManagerMetadataDtoToJSONTyped(value?: TestManagerMetadataDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'testManagerProjectId': value['testManagerProjectId'],\n 'creationTime': value['creationTime'] == null ? value['creationTime'] : value['creationTime'].toISOString(),\n };\n}\n\n",
|
|
143
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const ProjectErrorCode = {\n UnauthorizedProjectAccess: 'unauthorizedProjectAccess',\n InvalidOrUnsupportedArchive: 'invalidOrUnsupportedArchive',\n ImportProjectJsonMissing: 'importProjectJsonMissing',\n ImportProjectInvalidProjectFile: 'importProjectInvalidProjectFile',\n ImportProjectNoMainWorkflowFile: 'importProjectNoMainWorkflowFile',\n PublishProjectInvalidIconName: 'publishProjectInvalidIconName',\n ImportProjectDisabled: 'importProjectDisabled',\n ImportProjectJsonInvalidContent: 'importProjectJsonInvalidContent',\n ImportProjectInvalidMainFilePathInProjectJson: 'importProjectInvalidMainFilePathInProjectJson',\n ImportProjectRootFolderDoesNotContainMainFile: 'importProjectRootFolderDoesNotContainMainFile',\n ImportProjectInvalidTargetFramework: 'importProjectInvalidTargetFramework',\n ImportProjectXamlRefersBannedAssembly: 'importProjectXamlRefersBannedAssembly',\n RestoreDependenciesFailedGeneric: 'restoreDependenciesFailedGeneric',\n RestoreDependenciesFailedUnresolvablePackages: 'restoreDependenciesFailedUnresolvablePackages',\n RestoreDependenciesFailedNoPackagesReceived: 'restoreDependenciesFailedNoPackagesReceived',\n RestoreDependenciesFailedInvalidPackageFormat: 'restoreDependenciesFailedInvalidPackageFormat',\n ImportProjectFailedGeneric: 'importProjectFailedGeneric',\n ImportProjectXamlRefersBannedActivity: 'importProjectXamlRefersBannedActivity',\n ImportProjectMultipleXamlFiles: 'importProjectMultipleXamlFiles',\n ImportProjectInvalidOutputType: 'importProjectInvalidOutputType',\n ImportProjectInvalidProjectLanguage: 'importProjectInvalidProjectLanguage',\n ImportProjectInvalidXamlStructure: 'importProjectInvalidXamlStructure',\n ImportProjectEmptyProjectName: 'importProjectEmptyProjectName',\n ImportProjectTooLongName: 'importProjectTooLongName',\n ImportProjectInvalidCharacters: 'importProjectInvalidCharacters',\n ImportProjectMultipleEntryPoints: 'importProjectMultipleEntryPoints',\n ImportAppProjectPackageMissing: 'importAppProjectPackageMissing',\n ImportAppProjectInvalidPackage: 'importAppProjectInvalidPackage',\n ImportAppProjectCreationFailed: 'importAppProjectCreationFailed',\n ImportAppProjectInvalidCreatedApp: 'importAppProjectInvalidCreatedApp',\n ImportProjectTimedOut: 'importProjectTimedOut',\n UnauthorizedPublishAccess: 'unauthorizedPublishAccess',\n ProjectContainsGlobalVariables: 'projectContainsGlobalVariables',\n ProjectReferencesUnsupportedPackage: 'projectReferencesUnsupportedPackage',\n ImportAppDisabledUnifiedBuildFeatureFlag: 'importAppDisabledUnifiedBuildFeatureFlag',\n DeleteSolutionProjectFailed: 'deleteSolutionProjectFailed',\n SolutionOverwriteFailed: 'solutionOverwriteFailed',\n SolutionDefinitionValidationFailed: 'solutionDefinitionValidationFailed',\n UnauthorizedUbTypeAccess: 'unauthorizedUbTypeAccess',\n HasCodedWorkflows: 'hasCodedWorkflows',\n ImportAppProjectMissingModelFiles: 'importAppProjectMissingModelFiles',\n JitUpgradeFailed: 'jitUpgradeFailed'\n} as const;\nexport type ProjectErrorCode = typeof ProjectErrorCode[keyof typeof ProjectErrorCode];\n\n\nexport function instanceOfProjectErrorCode(value: any): boolean {\n for (const key in ProjectErrorCode) {\n if (Object.prototype.hasOwnProperty.call(ProjectErrorCode, key)) {\n if (ProjectErrorCode[key as keyof typeof ProjectErrorCode] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function ProjectErrorCodeFromJSON(json: any): ProjectErrorCode {\n return ProjectErrorCodeFromJSONTyped(json, false);\n}\n\nexport function ProjectErrorCodeFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProjectErrorCode {\n return json as ProjectErrorCode;\n}\n\nexport function ProjectErrorCodeToJSON(value?: ProjectErrorCode | null): any {\n return value as any;\n}\n\nexport function ProjectErrorCodeToJSONTyped(value: any, ignoreDiscriminator: boolean): ProjectErrorCode {\n return value as ProjectErrorCode;\n}\n\n",
|
|
144
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ProjectErrorCode } from './ProjectErrorCode';\nimport {\n ProjectErrorCodeFromJSON,\n ProjectErrorCodeFromJSONTyped,\n ProjectErrorCodeToJSON,\n ProjectErrorCodeToJSONTyped,\n} from './ProjectErrorCode';\n\n/**\n * \n * @export\n * @interface ProjectErrorInformation\n */\nexport interface ProjectErrorInformation {\n /**\n * \n * @type {ProjectErrorCode}\n * @memberof ProjectErrorInformation\n */\n errorCode?: ProjectErrorCode;\n /**\n * \n * @type {string}\n * @memberof ProjectErrorInformation\n */\n metadata?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectErrorInformation\n */\n readonly errorMessage?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectErrorInformation\n */\n locationId?: string | null;\n /**\n * \n * @type {boolean}\n * @memberof ProjectErrorInformation\n */\n readonly isSpecialLocation?: boolean;\n}\n\n\n\n/**\n * Check if a given object implements the ProjectErrorInformation interface.\n */\nexport function instanceOfProjectErrorInformation(value: object): value is ProjectErrorInformation {\n return true;\n}\n\nexport function ProjectErrorInformationFromJSON(json: any): ProjectErrorInformation {\n return ProjectErrorInformationFromJSONTyped(json, false);\n}\n\nexport function ProjectErrorInformationFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProjectErrorInformation {\n if (json == null) {\n return json;\n }\n return {\n \n 'errorCode': json['errorCode'] == null ? undefined : ProjectErrorCodeFromJSON(json['errorCode']),\n 'metadata': json['metadata'] == null ? undefined : json['metadata'],\n 'errorMessage': json['errorMessage'] == null ? undefined : json['errorMessage'],\n 'locationId': json['locationId'] == null ? undefined : json['locationId'],\n 'isSpecialLocation': json['isSpecialLocation'] == null ? undefined : json['isSpecialLocation'],\n };\n}\n\nexport function ProjectErrorInformationToJSON(json: any): ProjectErrorInformation {\n return ProjectErrorInformationToJSONTyped(json, false);\n}\n\nexport function ProjectErrorInformationToJSONTyped(value?: Omit<ProjectErrorInformation, 'errorMessage'|'isSpecialLocation'> | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'errorCode': ProjectErrorCodeToJSON(value['errorCode']),\n 'metadata': value['metadata'],\n 'locationId': value['locationId'],\n };\n}\n\n",
|
|
145
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface SapContextDto\n */\nexport interface SapContextDto {\n /**\n * \n * @type {string}\n * @memberof SapContextDto\n */\n tenantId?: string;\n /**\n * \n * @type {boolean}\n * @memberof SapContextDto\n */\n isPrimaryProject?: boolean;\n /**\n * \n * @type {string}\n * @memberof SapContextDto\n */\n externalProjectId?: string | null;\n}\n\n/**\n * Check if a given object implements the SapContextDto interface.\n */\nexport function instanceOfSapContextDto(value: object): value is SapContextDto {\n return true;\n}\n\nexport function SapContextDtoFromJSON(json: any): SapContextDto {\n return SapContextDtoFromJSONTyped(json, false);\n}\n\nexport function SapContextDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): SapContextDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'tenantId': json['tenantId'] == null ? undefined : json['tenantId'],\n 'isPrimaryProject': json['isPrimaryProject'] == null ? undefined : json['isPrimaryProject'],\n 'externalProjectId': json['externalProjectId'] == null ? undefined : json['externalProjectId'],\n };\n}\n\nexport function SapContextDtoToJSON(json: any): SapContextDto {\n return SapContextDtoToJSONTyped(json, false);\n}\n\nexport function SapContextDtoToJSONTyped(value?: SapContextDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'tenantId': value['tenantId'],\n 'isPrimaryProject': value['isPrimaryProject'],\n 'externalProjectId': value['externalProjectId'],\n };\n}\n\n",
|
|
146
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface WorkflowUiState\n */\nexport interface WorkflowUiState {\n /**\n * \n * @type {string}\n * @memberof WorkflowUiState\n */\n id?: string;\n /**\n * \n * @type {string}\n * @memberof WorkflowUiState\n */\n workflowId?: string;\n /**\n * \n * @type {string}\n * @memberof WorkflowUiState\n */\n json?: string | null;\n /**\n * \n * @type {string}\n * @memberof WorkflowUiState\n */\n projectId?: string;\n}\n\n/**\n * Check if a given object implements the WorkflowUiState interface.\n */\nexport function instanceOfWorkflowUiState(value: object): value is WorkflowUiState {\n return true;\n}\n\nexport function WorkflowUiStateFromJSON(json: any): WorkflowUiState {\n return WorkflowUiStateFromJSONTyped(json, false);\n}\n\nexport function WorkflowUiStateFromJSONTyped(json: any, ignoreDiscriminator: boolean): WorkflowUiState {\n if (json == null) {\n return json;\n }\n return {\n \n 'id': json['id'] == null ? undefined : json['id'],\n 'workflowId': json['workflowId'] == null ? undefined : json['workflowId'],\n 'json': json['json'] == null ? undefined : json['json'],\n 'projectId': json['projectId'] == null ? undefined : json['projectId'],\n };\n}\n\nexport function WorkflowUiStateToJSON(json: any): WorkflowUiState {\n return WorkflowUiStateToJSONTyped(json, false);\n}\n\nexport function WorkflowUiStateToJSONTyped(value?: WorkflowUiState | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'id': value['id'],\n 'workflowId': value['workflowId'],\n 'json': value['json'],\n 'projectId': value['projectId'],\n };\n}\n\n",
|
|
147
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const TargetPlatform = {\n CrossPlatform: 'crossPlatform',\n Windows: 'windows'\n} as const;\nexport type TargetPlatform = typeof TargetPlatform[keyof typeof TargetPlatform];\n\n\nexport function instanceOfTargetPlatform(value: any): boolean {\n for (const key in TargetPlatform) {\n if (Object.prototype.hasOwnProperty.call(TargetPlatform, key)) {\n if (TargetPlatform[key as keyof typeof TargetPlatform] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function TargetPlatformFromJSON(json: any): TargetPlatform {\n return TargetPlatformFromJSONTyped(json, false);\n}\n\nexport function TargetPlatformFromJSONTyped(json: any, ignoreDiscriminator: boolean): TargetPlatform {\n return json as TargetPlatform;\n}\n\nexport function TargetPlatformToJSON(value?: TargetPlatform | null): any {\n return value as any;\n}\n\nexport function TargetPlatformToJSONTyped(value: any, ignoreDiscriminator: boolean): TargetPlatform {\n return value as TargetPlatform;\n}\n\n",
|
|
148
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { MetadataConnectionDto } from './MetadataConnectionDto';\nimport {\n MetadataConnectionDtoFromJSON,\n MetadataConnectionDtoFromJSONTyped,\n MetadataConnectionDtoToJSON,\n MetadataConnectionDtoToJSONTyped,\n} from './MetadataConnectionDto';\nimport type { AdditionalBindingPropertiesDto } from './AdditionalBindingPropertiesDto';\nimport {\n AdditionalBindingPropertiesDtoFromJSON,\n AdditionalBindingPropertiesDtoFromJSONTyped,\n AdditionalBindingPropertiesDtoToJSON,\n AdditionalBindingPropertiesDtoToJSONTyped,\n} from './AdditionalBindingPropertiesDto';\nimport type { TestManagerMetadataDto } from './TestManagerMetadataDto';\nimport {\n TestManagerMetadataDtoFromJSON,\n TestManagerMetadataDtoFromJSONTyped,\n TestManagerMetadataDtoToJSON,\n TestManagerMetadataDtoToJSONTyped,\n} from './TestManagerMetadataDto';\nimport type { PackageDto } from './PackageDto';\nimport {\n PackageDtoFromJSON,\n PackageDtoFromJSONTyped,\n PackageDtoToJSON,\n PackageDtoToJSONTyped,\n} from './PackageDto';\nimport type { SharingPermissions } from './SharingPermissions';\nimport {\n SharingPermissionsFromJSON,\n SharingPermissionsFromJSONTyped,\n SharingPermissionsToJSON,\n SharingPermissionsToJSONTyped,\n} from './SharingPermissions';\nimport type { ProjectErrorInformation } from './ProjectErrorInformation';\nimport {\n ProjectErrorInformationFromJSON,\n ProjectErrorInformationFromJSONTyped,\n ProjectErrorInformationToJSON,\n ProjectErrorInformationToJSONTyped,\n} from './ProjectErrorInformation';\nimport type { SapContextDto } from './SapContextDto';\nimport {\n SapContextDtoFromJSON,\n SapContextDtoFromJSONTyped,\n SapContextDtoToJSON,\n SapContextDtoToJSONTyped,\n} from './SapContextDto';\nimport type { AccessStatus } from './AccessStatus';\nimport {\n AccessStatusFromJSON,\n AccessStatusFromJSONTyped,\n AccessStatusToJSON,\n AccessStatusToJSONTyped,\n} from './AccessStatus';\nimport type { MetadataTriggerDto } from './MetadataTriggerDto';\nimport {\n MetadataTriggerDtoFromJSON,\n MetadataTriggerDtoFromJSONTyped,\n MetadataTriggerDtoToJSON,\n MetadataTriggerDtoToJSONTyped,\n} from './MetadataTriggerDto';\nimport type { ProjectStatus } from './ProjectStatus';\nimport {\n ProjectStatusFromJSON,\n ProjectStatusFromJSONTyped,\n ProjectStatusToJSON,\n ProjectStatusToJSONTyped,\n} from './ProjectStatus';\nimport type { FolderDto } from './FolderDto';\nimport {\n FolderDtoFromJSON,\n FolderDtoFromJSONTyped,\n FolderDtoToJSON,\n FolderDtoToJSONTyped,\n} from './FolderDto';\nimport type { WorkflowUiState } from './WorkflowUiState';\nimport {\n WorkflowUiStateFromJSON,\n WorkflowUiStateFromJSONTyped,\n WorkflowUiStateToJSON,\n WorkflowUiStateToJSONTyped,\n} from './WorkflowUiState';\nimport type { TargetPlatform } from './TargetPlatform';\nimport {\n TargetPlatformFromJSON,\n TargetPlatformFromJSONTyped,\n TargetPlatformToJSON,\n TargetPlatformToJSONTyped,\n} from './TargetPlatform';\nimport type { AppUsageType } from './AppUsageType';\nimport {\n AppUsageTypeFromJSON,\n AppUsageTypeFromJSONTyped,\n AppUsageTypeToJSON,\n AppUsageTypeToJSONTyped,\n} from './AppUsageType';\nimport type { PublishResultModel } from './PublishResultModel';\nimport {\n PublishResultModelFromJSON,\n PublishResultModelFromJSONTyped,\n PublishResultModelToJSON,\n PublishResultModelToJSONTyped,\n} from './PublishResultModel';\n\n/**\n * \n * @export\n * @interface ProjectDto\n */\nexport interface ProjectDto {\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n id?: string;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n designId?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n expressionLanguage?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n projectType?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n name?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n description?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n tenantId?: string | null;\n /**\n * \n * @type {ProjectStatus}\n * @memberof ProjectDto\n */\n status?: ProjectStatus;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n message?: string | null;\n /**\n * \n * @type {Date}\n * @memberof ProjectDto\n */\n lastModifiedTime?: Date;\n /**\n * \n * @type {Date}\n * @memberof ProjectDto\n */\n pinDate?: Date | null;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n triggerType?: string | null;\n /**\n * \n * @type {MetadataTriggerDto}\n * @memberof ProjectDto\n */\n trigger?: MetadataTriggerDto;\n /**\n * \n * @type {Array<MetadataConnectionDto>}\n * @memberof ProjectDto\n */\n connections?: Array<MetadataConnectionDto> | null;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n lockedBy?: string | null;\n /**\n * \n * @type {boolean}\n * @memberof ProjectDto\n */\n isSharedByMe?: boolean;\n /**\n * \n * @type {boolean}\n * @memberof ProjectDto\n */\n isSharedWithMe?: boolean;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n projectAppId?: string | null;\n /**\n * \n * @type {boolean}\n * @memberof ProjectDto\n */\n isSwFileSystemEnabledForApps?: boolean;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n ownerId?: string | null;\n /**\n * \n * @type {SapContextDto}\n * @memberof ProjectDto\n */\n sapContext?: SapContextDto;\n /**\n * \n * @type {boolean}\n * @memberof ProjectDto\n */\n hasDefaultName?: boolean;\n /**\n * \n * @type {Array<ProjectErrorInformation>}\n * @memberof ProjectDto\n */\n errorList?: Array<ProjectErrorInformation> | null;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n solutionId?: string | null;\n /**\n * \n * @type {TestManagerMetadataDto}\n * @memberof ProjectDto\n */\n testManagerMetadata?: TestManagerMetadataDto;\n /**\n * \n * @type {boolean}\n * @memberof ProjectDto\n */\n isPreview?: boolean;\n /**\n * \n * @type {PublishResultModel}\n * @memberof ProjectDto\n */\n lastPublishedVersion?: PublishResultModel;\n /**\n * \n * @type {Array<string>}\n * @memberof ProjectDto\n */\n publishedToFeeds?: Array<string> | null;\n /**\n * \n * @type {number}\n * @memberof ProjectDto\n */\n sortIndex?: number;\n /**\n * \n * @type {boolean}\n * @memberof ProjectDto\n */\n hasTestCases?: boolean | null;\n /**\n * \n * @type {boolean}\n * @memberof ProjectDto\n */\n isApp?: boolean;\n /**\n * \n * @type {TargetPlatform}\n * @memberof ProjectDto\n */\n targetPlatform?: TargetPlatform;\n /**\n * \n * @type {Date}\n * @memberof ProjectDto\n */\n creationTime?: Date;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n userId?: string | null;\n /**\n * \n * @type {FolderDto}\n * @memberof ProjectDto\n */\n rootFolder?: FolderDto;\n /**\n * \n * @type {Array<PackageDto>}\n * @memberof ProjectDto\n */\n dependencies?: Array<PackageDto> | null;\n /**\n * \n * @type {Array<WorkflowUiState>}\n * @memberof ProjectDto\n * @deprecated\n */\n uiStateWorkflows?: Array<WorkflowUiState> | null;\n /**\n * \n * @type {boolean}\n * @memberof ProjectDto\n */\n hasTrigger?: boolean;\n /**\n * \n * @type {boolean}\n * @memberof ProjectDto\n */\n disableAutoUpdate?: boolean;\n /**\n * \n * @type {AccessStatus}\n * @memberof ProjectDto\n */\n userAccessStatus?: AccessStatus;\n /**\n * \n * @type {boolean}\n * @memberof ProjectDto\n */\n hasUnsavedEdits?: boolean;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n projectJson?: string | null;\n /**\n * \n * @type {boolean}\n * @memberof ProjectDto\n */\n isReadOnly?: boolean | null;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n version?: string | null;\n /**\n * \n * @type {Array<AdditionalBindingPropertiesDto>}\n * @memberof ProjectDto\n */\n additionalBindingProperties?: Array<AdditionalBindingPropertiesDto> | null;\n /**\n * \n * @type {Array<string>}\n * @memberof ProjectDto\n */\n workflowsWithErrors?: Array<string> | null;\n /**\n * \n * @type {boolean}\n * @memberof ProjectDto\n */\n requirePreprocessing?: boolean;\n /**\n * \n * @type {SharingPermissions}\n * @memberof ProjectDto\n */\n permissions?: SharingPermissions;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n projectSubType?: string | null;\n /**\n * \n * @type {AppUsageType}\n * @memberof ProjectDto\n */\n appUsageType?: AppUsageType;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n parentProjectId?: string | null;\n /**\n * \n * @type {string}\n * @memberof ProjectDto\n */\n jitVersion?: string | null;\n}\n\n\n\n/**\n * Check if a given object implements the ProjectDto interface.\n */\nexport function instanceOfProjectDto(value: object): value is ProjectDto {\n return true;\n}\n\nexport function ProjectDtoFromJSON(json: any): ProjectDto {\n return ProjectDtoFromJSONTyped(json, false);\n}\n\nexport function ProjectDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProjectDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'id': json['id'] == null ? undefined : json['id'],\n 'designId': json['designId'] == null ? undefined : json['designId'],\n 'expressionLanguage': json['expressionLanguage'] == null ? undefined : json['expressionLanguage'],\n 'projectType': json['projectType'] == null ? undefined : json['projectType'],\n 'name': json['name'] == null ? undefined : json['name'],\n 'description': json['description'] == null ? undefined : json['description'],\n 'tenantId': json['tenantId'] == null ? undefined : json['tenantId'],\n 'status': json['status'] == null ? undefined : ProjectStatusFromJSON(json['status']),\n 'message': json['message'] == null ? undefined : json['message'],\n 'lastModifiedTime': json['lastModifiedTime'] == null ? undefined : (new Date(json['lastModifiedTime'])),\n 'pinDate': json['pinDate'] == null ? undefined : (new Date(json['pinDate'])),\n 'triggerType': json['triggerType'] == null ? undefined : json['triggerType'],\n 'trigger': json['trigger'] == null ? undefined : MetadataTriggerDtoFromJSON(json['trigger']),\n 'connections': json['connections'] == null ? undefined : ((json['connections'] as Array<any>).map(MetadataConnectionDtoFromJSON)),\n 'lockedBy': json['lockedBy'] == null ? undefined : json['lockedBy'],\n 'isSharedByMe': json['isSharedByMe'] == null ? undefined : json['isSharedByMe'],\n 'isSharedWithMe': json['isSharedWithMe'] == null ? undefined : json['isSharedWithMe'],\n 'projectAppId': json['projectAppId'] == null ? undefined : json['projectAppId'],\n 'isSwFileSystemEnabledForApps': json['isSwFileSystemEnabledForApps'] == null ? undefined : json['isSwFileSystemEnabledForApps'],\n 'ownerId': json['ownerId'] == null ? undefined : json['ownerId'],\n 'sapContext': json['sapContext'] == null ? undefined : SapContextDtoFromJSON(json['sapContext']),\n 'hasDefaultName': json['hasDefaultName'] == null ? undefined : json['hasDefaultName'],\n 'errorList': json['errorList'] == null ? undefined : ((json['errorList'] as Array<any>).map(ProjectErrorInformationFromJSON)),\n 'solutionId': json['solutionId'] == null ? undefined : json['solutionId'],\n 'testManagerMetadata': json['testManagerMetadata'] == null ? undefined : TestManagerMetadataDtoFromJSON(json['testManagerMetadata']),\n 'isPreview': json['isPreview'] == null ? undefined : json['isPreview'],\n 'lastPublishedVersion': json['lastPublishedVersion'] == null ? undefined : PublishResultModelFromJSON(json['lastPublishedVersion']),\n 'publishedToFeeds': json['publishedToFeeds'] == null ? undefined : json['publishedToFeeds'],\n 'sortIndex': json['sortIndex'] == null ? undefined : json['sortIndex'],\n 'hasTestCases': json['hasTestCases'] == null ? undefined : json['hasTestCases'],\n 'isApp': json['isApp'] == null ? undefined : json['isApp'],\n 'targetPlatform': json['targetPlatform'] == null ? undefined : TargetPlatformFromJSON(json['targetPlatform']),\n 'creationTime': json['creationTime'] == null ? undefined : (new Date(json['creationTime'])),\n 'userId': json['userId'] == null ? undefined : json['userId'],\n 'rootFolder': json['rootFolder'] == null ? undefined : FolderDtoFromJSON(json['rootFolder']),\n 'dependencies': json['dependencies'] == null ? undefined : ((json['dependencies'] as Array<any>).map(PackageDtoFromJSON)),\n 'uiStateWorkflows': json['uiStateWorkflows'] == null ? undefined : ((json['uiStateWorkflows'] as Array<any>).map(WorkflowUiStateFromJSON)),\n 'hasTrigger': json['hasTrigger'] == null ? undefined : json['hasTrigger'],\n 'disableAutoUpdate': json['disableAutoUpdate'] == null ? undefined : json['disableAutoUpdate'],\n 'userAccessStatus': json['userAccessStatus'] == null ? undefined : AccessStatusFromJSON(json['userAccessStatus']),\n 'hasUnsavedEdits': json['hasUnsavedEdits'] == null ? undefined : json['hasUnsavedEdits'],\n 'projectJson': json['projectJson'] == null ? undefined : json['projectJson'],\n 'isReadOnly': json['isReadOnly'] == null ? undefined : json['isReadOnly'],\n 'version': json['version'] == null ? undefined : json['version'],\n 'additionalBindingProperties': json['additionalBindingProperties'] == null ? undefined : ((json['additionalBindingProperties'] as Array<any>).map(AdditionalBindingPropertiesDtoFromJSON)),\n 'workflowsWithErrors': json['workflowsWithErrors'] == null ? undefined : json['workflowsWithErrors'],\n 'requirePreprocessing': json['requirePreprocessing'] == null ? undefined : json['requirePreprocessing'],\n 'permissions': json['permissions'] == null ? undefined : SharingPermissionsFromJSON(json['permissions']),\n 'projectSubType': json['projectSubType'] == null ? undefined : json['projectSubType'],\n 'appUsageType': json['appUsageType'] == null ? undefined : AppUsageTypeFromJSON(json['appUsageType']),\n 'parentProjectId': json['parentProjectId'] == null ? undefined : json['parentProjectId'],\n 'jitVersion': json['jitVersion'] == null ? undefined : json['jitVersion'],\n };\n}\n\nexport function ProjectDtoToJSON(json: any): ProjectDto {\n return ProjectDtoToJSONTyped(json, false);\n}\n\nexport function ProjectDtoToJSONTyped(value?: ProjectDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'id': value['id'],\n 'designId': value['designId'],\n 'expressionLanguage': value['expressionLanguage'],\n 'projectType': value['projectType'],\n 'name': value['name'],\n 'description': value['description'],\n 'tenantId': value['tenantId'],\n 'status': ProjectStatusToJSON(value['status']),\n 'message': value['message'],\n 'lastModifiedTime': value['lastModifiedTime'] == null ? value['lastModifiedTime'] : value['lastModifiedTime'].toISOString(),\n 'pinDate': value['pinDate'] == null ? value['pinDate'] : value['pinDate'].toISOString(),\n 'triggerType': value['triggerType'],\n 'trigger': MetadataTriggerDtoToJSON(value['trigger']),\n 'connections': value['connections'] == null ? undefined : ((value['connections'] as Array<any>).map(MetadataConnectionDtoToJSON)),\n 'lockedBy': value['lockedBy'],\n 'isSharedByMe': value['isSharedByMe'],\n 'isSharedWithMe': value['isSharedWithMe'],\n 'projectAppId': value['projectAppId'],\n 'isSwFileSystemEnabledForApps': value['isSwFileSystemEnabledForApps'],\n 'ownerId': value['ownerId'],\n 'sapContext': SapContextDtoToJSON(value['sapContext']),\n 'hasDefaultName': value['hasDefaultName'],\n 'errorList': value['errorList'] == null ? undefined : ((value['errorList'] as Array<any>).map(ProjectErrorInformationToJSON)),\n 'solutionId': value['solutionId'],\n 'testManagerMetadata': TestManagerMetadataDtoToJSON(value['testManagerMetadata']),\n 'isPreview': value['isPreview'],\n 'lastPublishedVersion': PublishResultModelToJSON(value['lastPublishedVersion']),\n 'publishedToFeeds': value['publishedToFeeds'],\n 'sortIndex': value['sortIndex'],\n 'hasTestCases': value['hasTestCases'],\n 'isApp': value['isApp'],\n 'targetPlatform': TargetPlatformToJSON(value['targetPlatform']),\n 'creationTime': value['creationTime'] == null ? value['creationTime'] : value['creationTime'].toISOString(),\n 'userId': value['userId'],\n 'rootFolder': FolderDtoToJSON(value['rootFolder']),\n 'dependencies': value['dependencies'] == null ? undefined : ((value['dependencies'] as Array<any>).map(PackageDtoToJSON)),\n 'uiStateWorkflows': value['uiStateWorkflows'] == null ? undefined : ((value['uiStateWorkflows'] as Array<any>).map(WorkflowUiStateToJSON)),\n 'hasTrigger': value['hasTrigger'],\n 'disableAutoUpdate': value['disableAutoUpdate'],\n 'userAccessStatus': AccessStatusToJSON(value['userAccessStatus']),\n 'hasUnsavedEdits': value['hasUnsavedEdits'],\n 'projectJson': value['projectJson'],\n 'isReadOnly': value['isReadOnly'],\n 'version': value['version'],\n 'additionalBindingProperties': value['additionalBindingProperties'] == null ? undefined : ((value['additionalBindingProperties'] as Array<any>).map(AdditionalBindingPropertiesDtoToJSON)),\n 'workflowsWithErrors': value['workflowsWithErrors'],\n 'requirePreprocessing': value['requirePreprocessing'],\n 'permissions': SharingPermissionsToJSON(value['permissions']),\n 'projectSubType': value['projectSubType'],\n 'appUsageType': AppUsageTypeToJSON(value['appUsageType']),\n 'parentProjectId': value['parentProjectId'],\n 'jitVersion': value['jitVersion'],\n };\n}\n\n",
|
|
149
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const SolutionStatus = {\n Ready: 'ready',\n Error: 'error',\n Processing: 'processing'\n} as const;\nexport type SolutionStatus = typeof SolutionStatus[keyof typeof SolutionStatus];\n\n\nexport function instanceOfSolutionStatus(value: any): boolean {\n for (const key in SolutionStatus) {\n if (Object.prototype.hasOwnProperty.call(SolutionStatus, key)) {\n if (SolutionStatus[key as keyof typeof SolutionStatus] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function SolutionStatusFromJSON(json: any): SolutionStatus {\n return SolutionStatusFromJSONTyped(json, false);\n}\n\nexport function SolutionStatusFromJSONTyped(json: any, ignoreDiscriminator: boolean): SolutionStatus {\n return json as SolutionStatus;\n}\n\nexport function SolutionStatusToJSON(value?: SolutionStatus | null): any {\n return value as any;\n}\n\nexport function SolutionStatusToJSONTyped(value: any, ignoreDiscriminator: boolean): SolutionStatus {\n return value as SolutionStatus;\n}\n\n",
|
|
150
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const SolutionPublishStatus = {\n Draft: 'draft',\n Published: 'published',\n Deployed: 'deployed'\n} as const;\nexport type SolutionPublishStatus = typeof SolutionPublishStatus[keyof typeof SolutionPublishStatus];\n\n\nexport function instanceOfSolutionPublishStatus(value: any): boolean {\n for (const key in SolutionPublishStatus) {\n if (Object.prototype.hasOwnProperty.call(SolutionPublishStatus, key)) {\n if (SolutionPublishStatus[key as keyof typeof SolutionPublishStatus] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function SolutionPublishStatusFromJSON(json: any): SolutionPublishStatus {\n return SolutionPublishStatusFromJSONTyped(json, false);\n}\n\nexport function SolutionPublishStatusFromJSONTyped(json: any, ignoreDiscriminator: boolean): SolutionPublishStatus {\n return json as SolutionPublishStatus;\n}\n\nexport function SolutionPublishStatusToJSON(value?: SolutionPublishStatus | null): any {\n return value as any;\n}\n\nexport function SolutionPublishStatusToJSONTyped(value: any, ignoreDiscriminator: boolean): SolutionPublishStatus {\n return value as SolutionPublishStatus;\n}\n\n",
|
|
151
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ProjectDto } from './ProjectDto';\nimport {\n ProjectDtoFromJSON,\n ProjectDtoFromJSONTyped,\n ProjectDtoToJSON,\n ProjectDtoToJSONTyped,\n} from './ProjectDto';\nimport type { SolutionStatus } from './SolutionStatus';\nimport {\n SolutionStatusFromJSON,\n SolutionStatusFromJSONTyped,\n SolutionStatusToJSON,\n SolutionStatusToJSONTyped,\n} from './SolutionStatus';\nimport type { SolutionPublishStatus } from './SolutionPublishStatus';\nimport {\n SolutionPublishStatusFromJSON,\n SolutionPublishStatusFromJSONTyped,\n SolutionPublishStatusToJSON,\n SolutionPublishStatusToJSONTyped,\n} from './SolutionPublishStatus';\nimport type { SharingPermissions } from './SharingPermissions';\nimport {\n SharingPermissionsFromJSON,\n SharingPermissionsFromJSONTyped,\n SharingPermissionsToJSON,\n SharingPermissionsToJSONTyped,\n} from './SharingPermissions';\n\n/**\n * \n * @export\n * @interface SolutionDto\n */\nexport interface SolutionDto {\n /**\n * \n * @type {string}\n * @memberof SolutionDto\n */\n id?: string;\n /**\n * \n * @type {string}\n * @memberof SolutionDto\n */\n name?: string | null;\n /**\n * \n * @type {string}\n * @memberof SolutionDto\n */\n description?: string | null;\n /**\n * \n * @type {string}\n * @memberof SolutionDto\n */\n userId?: string | null;\n /**\n * \n * @type {string}\n * @memberof SolutionDto\n */\n organizationId?: string;\n /**\n * \n * @type {SolutionStatus}\n * @memberof SolutionDto\n */\n status?: SolutionStatus;\n /**\n * \n * @type {Array<ProjectDto>}\n * @memberof SolutionDto\n */\n projects?: Array<ProjectDto> | null;\n /**\n * \n * @type {boolean}\n * @memberof SolutionDto\n */\n isSharedWithMe?: boolean;\n /**\n * \n * @type {boolean}\n * @memberof SolutionDto\n */\n isSharedByMe?: boolean;\n /**\n * \n * @type {SharingPermissions}\n * @memberof SolutionDto\n */\n permissions?: SharingPermissions;\n /**\n * \n * @type {Date}\n * @memberof SolutionDto\n */\n lastModifiedTime?: Date;\n /**\n * \n * @type {Date}\n * @memberof SolutionDto\n */\n resourcesLastModifiedTime?: Date;\n /**\n * \n * @type {boolean}\n * @memberof SolutionDto\n */\n hasDraftEdits?: boolean;\n /**\n * \n * @type {SolutionPublishStatus}\n * @memberof SolutionDto\n */\n publishStatus?: SolutionPublishStatus;\n /**\n * \n * @type {string}\n * @memberof SolutionDto\n */\n lastAccessedTenantId?: string | null;\n /**\n * \n * @type {string}\n * @memberof SolutionDto\n */\n automationHubIdeaUrl?: string | null;\n}\n\n\n\n/**\n * Check if a given object implements the SolutionDto interface.\n */\nexport function instanceOfSolutionDto(value: object): value is SolutionDto {\n return true;\n}\n\nexport function SolutionDtoFromJSON(json: any): SolutionDto {\n return SolutionDtoFromJSONTyped(json, false);\n}\n\nexport function SolutionDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): SolutionDto {\n if (json == null) {\n return json;\n }\n return {\n \n 'id': json['id'] == null ? undefined : json['id'],\n 'name': json['name'] == null ? undefined : json['name'],\n 'description': json['description'] == null ? undefined : json['description'],\n 'userId': json['userId'] == null ? undefined : json['userId'],\n 'organizationId': json['organizationId'] == null ? undefined : json['organizationId'],\n 'status': json['status'] == null ? undefined : SolutionStatusFromJSON(json['status']),\n 'projects': json['projects'] == null ? undefined : ((json['projects'] as Array<any>).map(ProjectDtoFromJSON)),\n 'isSharedWithMe': json['isSharedWithMe'] == null ? undefined : json['isSharedWithMe'],\n 'isSharedByMe': json['isSharedByMe'] == null ? undefined : json['isSharedByMe'],\n 'permissions': json['permissions'] == null ? undefined : SharingPermissionsFromJSON(json['permissions']),\n 'lastModifiedTime': json['lastModifiedTime'] == null ? undefined : (new Date(json['lastModifiedTime'])),\n 'resourcesLastModifiedTime': json['resourcesLastModifiedTime'] == null ? undefined : (new Date(json['resourcesLastModifiedTime'])),\n 'hasDraftEdits': json['hasDraftEdits'] == null ? undefined : json['hasDraftEdits'],\n 'publishStatus': json['publishStatus'] == null ? undefined : SolutionPublishStatusFromJSON(json['publishStatus']),\n 'lastAccessedTenantId': json['lastAccessedTenantId'] == null ? undefined : json['lastAccessedTenantId'],\n 'automationHubIdeaUrl': json['automationHubIdeaUrl'] == null ? undefined : json['automationHubIdeaUrl'],\n };\n}\n\nexport function SolutionDtoToJSON(json: any): SolutionDto {\n return SolutionDtoToJSONTyped(json, false);\n}\n\nexport function SolutionDtoToJSONTyped(value?: SolutionDto | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'id': value['id'],\n 'name': value['name'],\n 'description': value['description'],\n 'userId': value['userId'],\n 'organizationId': value['organizationId'],\n 'status': SolutionStatusToJSON(value['status']),\n 'projects': value['projects'] == null ? undefined : ((value['projects'] as Array<any>).map(ProjectDtoToJSON)),\n 'isSharedWithMe': value['isSharedWithMe'],\n 'isSharedByMe': value['isSharedByMe'],\n 'permissions': SharingPermissionsToJSON(value['permissions']),\n 'lastModifiedTime': value['lastModifiedTime'] == null ? value['lastModifiedTime'] : value['lastModifiedTime'].toISOString(),\n 'resourcesLastModifiedTime': value['resourcesLastModifiedTime'] == null ? value['resourcesLastModifiedTime'] : value['resourcesLastModifiedTime'].toISOString(),\n 'hasDraftEdits': value['hasDraftEdits'],\n 'publishStatus': SolutionPublishStatusToJSON(value['publishStatus']),\n 'lastAccessedTenantId': value['lastAccessedTenantId'],\n 'automationHubIdeaUrl': value['automationHubIdeaUrl'],\n };\n}\n\n",
|
|
152
|
+
"/* tslint:disable */\n/* eslint-disable */\n/**\n * Studio Web API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.5.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n SolutionDto,\n} from '../models/index';\nimport {\n SolutionDtoFromJSON,\n SolutionDtoToJSON,\n} from '../models/index';\n\nexport interface SolutionGetSolutionRequest {\n solutionId: string;\n includeReconciliationContext?: boolean;\n apiVersion?: string;\n}\n\nexport interface SolutionImportSolutionRequest {\n uploadFile: Blob;\n apiVersion?: string;\n isHidden?: boolean;\n createSnapshot?: boolean;\n}\n\nexport interface SolutionOverwriteSolutionRequest {\n solutionId: string;\n uploadFile: Blob;\n xUiPathSWLockKey?: string;\n apiVersion?: string;\n isHidden?: boolean;\n createSnapshot?: boolean;\n}\n\n/**\n * \n */\nexport class SolutionApi extends runtime.BaseAPI {\n\n /**\n * Gets a solution with its projects\n */\n async solutionGetSolutionRaw(requestParameters: SolutionGetSolutionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SolutionDto>> {\n if (requestParameters['solutionId'] == null) {\n throw new runtime.RequiredError(\n 'solutionId',\n 'Required parameter \"solutionId\" was null or undefined when calling solutionGetSolution().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['includeReconciliationContext'] != null) {\n queryParameters['includeReconciliationContext'] = requestParameters['includeReconciliationContext'];\n }\n\n if (requestParameters['apiVersion'] != null) {\n queryParameters['api-version'] = requestParameters['apiVersion'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"Bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/api/Solution/{solutionId}`;\n urlPath = urlPath.replace(`{${\"solutionId\"}}`, encodeURIComponent(String(requestParameters['solutionId'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SolutionDtoFromJSON(jsonValue));\n }\n\n /**\n * Gets a solution with its projects\n */\n async solutionGetSolution(requestParameters: SolutionGetSolutionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SolutionDto> {\n const response = await this.solutionGetSolutionRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Import a solution from a zip file\n */\n async solutionImportSolutionRaw(requestParameters: SolutionImportSolutionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SolutionDto>> {\n if (requestParameters['uploadFile'] == null) {\n throw new runtime.RequiredError(\n 'uploadFile',\n 'Required parameter \"uploadFile\" was null or undefined when calling solutionImportSolution().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['apiVersion'] != null) {\n queryParameters['api-version'] = requestParameters['apiVersion'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"Bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n // use FormData to transmit files using content-type \"multipart/form-data\"\n useForm = canConsumeForm;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters['uploadFile'] != null) {\n formParams.append('uploadFile', requestParameters['uploadFile'] as any);\n }\n\n if (requestParameters['isHidden'] != null) {\n formParams.append('isHidden', requestParameters['isHidden'] as any);\n }\n\n if (requestParameters['createSnapshot'] != null) {\n formParams.append('createSnapshot', requestParameters['createSnapshot'] as any);\n }\n\n\n let urlPath = `/api/Solution/Import`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SolutionDtoFromJSON(jsonValue));\n }\n\n /**\n * Import a solution from a zip file\n */\n async solutionImportSolution(requestParameters: SolutionImportSolutionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SolutionDto> {\n const response = await this.solutionImportSolutionRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Overwrites an existing solution with a new solution from a zip file\n */\n async solutionOverwriteSolutionRaw(requestParameters: SolutionOverwriteSolutionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SolutionDto>> {\n if (requestParameters['solutionId'] == null) {\n throw new runtime.RequiredError(\n 'solutionId',\n 'Required parameter \"solutionId\" was null or undefined when calling solutionOverwriteSolution().'\n );\n }\n\n if (requestParameters['uploadFile'] == null) {\n throw new runtime.RequiredError(\n 'uploadFile',\n 'Required parameter \"uploadFile\" was null or undefined when calling solutionOverwriteSolution().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['apiVersion'] != null) {\n queryParameters['api-version'] = requestParameters['apiVersion'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (requestParameters['xUiPathSWLockKey'] != null) {\n headerParameters['x-UiPath-SW-LockKey'] = String(requestParameters['xUiPathSWLockKey']);\n }\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"Bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n // use FormData to transmit files using content-type \"multipart/form-data\"\n useForm = canConsumeForm;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters['uploadFile'] != null) {\n formParams.append('uploadFile', requestParameters['uploadFile'] as any);\n }\n\n if (requestParameters['isHidden'] != null) {\n formParams.append('isHidden', requestParameters['isHidden'] as any);\n }\n\n if (requestParameters['createSnapshot'] != null) {\n formParams.append('createSnapshot', requestParameters['createSnapshot'] as any);\n }\n\n\n let urlPath = `/api/Solution/{solutionId}/Overwrite`;\n urlPath = urlPath.replace(`{${\"solutionId\"}}`, encodeURIComponent(String(requestParameters['solutionId'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SolutionDtoFromJSON(jsonValue));\n }\n\n /**\n * Overwrites an existing solution with a new solution from a zip file\n */\n async solutionOverwriteSolution(requestParameters: SolutionOverwriteSolutionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SolutionDto> {\n const response = await this.solutionOverwriteSolutionRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n",
|
|
153
|
+
"/**\n * Configuration plumbing for the generated Studio Web client.\n *\n * The generated `SolutionApi` (see `generated/src/apis/SolutionApi.ts`)\n * expects a `Configuration` built against the tenant-scoped Studio Web\n * backend (`<baseUrl>/<org>/studio_/backend`). This module is the single\n * source of truth for that URL composition + the default headers Studio Web\n * needs (`Authorization`, `x-uipath-tenantid`).\n */\n\nimport { Configuration, SolutionApi } from \"../generated/src/index\";\nimport type { StudioWebConfig } from \"./types\";\n\n/**\n * Build the absolute basePath the generated `Configuration` should target.\n * Exported for the rare caller that needs to compose an ad-hoc fetch URL on\n * the same origin (e.g. an endpoint not yet covered by the generator filter).\n */\nexport function studioWebBasePath(\n config: StudioWebConfig,\n organizationName: string,\n): string {\n return `${config.baseUrl}/${organizationName}/studio_/backend`;\n}\n\n/**\n * Build a generated-client `Configuration` for the given Studio Web target.\n * Always returns a fresh instance — keeping a singleton would tie the\n * configuration to whichever caller built it first.\n */\nexport function buildStudioWebConfiguration(\n config: StudioWebConfig,\n organizationName: string,\n): Configuration {\n const headers: Record<string, string> = {};\n if (config.tenantId) {\n headers[\"x-uipath-tenantid\"] = config.tenantId;\n }\n return new Configuration({\n basePath: studioWebBasePath(config, organizationName),\n accessToken: config.authToken,\n headers,\n });\n}\n\n/**\n * Convenience: build a `SolutionApi` against the given Studio Web target.\n */\nexport function createSolutionApi(\n config: StudioWebConfig,\n organizationName: string,\n): SolutionApi {\n return new SolutionApi(\n buildStudioWebConfiguration(config, organizationName),\n );\n}\n",
|
|
154
|
+
"/**\n * Upload/overwrite solutions to UiPath Studio Web.\n * Consolidates the upload logic previously duplicated in solution-tool and maestro-sdk.\n */\n\nimport { catchError, logger } from \"@uipath/common\";\nimport { addSdkUserAgentHeader } from \"@uipath/common/sdk-user-agent\";\nimport type { IFileSystem } from \"@uipath/filesystem\";\nimport { createSolutionApi, ResponseError } from \"@uipath/studioweb-sdk\";\nimport type { SolutionImportResponse, StudioWebConfig } from \"./types\";\nimport { SDK_USER_AGENT } from \"./user-agent.js\";\n\nclass HttpError extends Error {\n constructor(\n public readonly status: number,\n message: string,\n ) {\n super(message);\n }\n}\n\n/**\n * Probe Studio Web for the existence of a solution by id.\n * Returns true on 2xx, false on 404. Throws on any other status so callers\n * don't silently treat transient errors (auth, 5xx) as \"missing\".\n *\n * Routes through `@uipath/studioweb-sdk`'s generated `SolutionApi`\n * (`Solution_GetSolution` → `GET /api/Solution/{solutionId}`) so the URL,\n * auth header composition, and tenant routing come from the Studio Web\n * swagger instead of being hand-typed here. The `Raw` variant is used so we\n * can branch on response status (404 = missing) without forcing the body\n * parse.\n */\nexport async function solutionExistsOnStudioWeb(\n config: StudioWebConfig,\n organizationName: string,\n solutionId: string,\n): Promise<boolean> {\n const api = createSolutionApi(config, organizationName);\n try {\n await api.solutionGetSolutionRaw({ solutionId });\n return true;\n } catch (error) {\n if (error instanceof ResponseError) {\n if (error.response.status === 404) {\n return false;\n }\n const text = await error.response.text().catch(() => \"\");\n throw new HttpError(\n error.response.status,\n `Studio Web solution existence probe failed (${error.response.status}): ${text}`,\n );\n }\n throw error;\n }\n}\n\n/**\n * Upload a .uis file to Studio Web Import endpoint (new solution).\n */\nexport async function importSolution(\n config: StudioWebConfig,\n organizationName: string,\n fileBuffer: Uint8Array,\n fileName: string,\n): Promise<SolutionImportResponse> {\n const importUrl = `${config.baseUrl}/${organizationName}/studio_/backend/api/Solution/Import?desktopJit=true&useFileRest=true&enableUnifiedBuild=true`;\n\n const formData = new FormData();\n const fileBlob = new Blob([fileBuffer], {\n type: \"application/octet-stream\",\n });\n formData.append(\"uploadFile\", fileBlob, fileName);\n formData.append(\"telemetryData\", JSON.stringify({ FirstRun: false }));\n\n const headers: Record<string, string> = addSdkUserAgentHeader(\n {\n Authorization: `Bearer ${config.authToken}`,\n },\n SDK_USER_AGENT,\n );\n if (config.tenantId) {\n headers[\"x-uipath-tenantid\"] = config.tenantId;\n }\n\n const response = await fetch(importUrl, {\n method: \"POST\",\n headers,\n body: formData,\n });\n\n if (!response.ok) {\n const text = await response.text();\n throw new HttpError(\n response.status,\n `Import failed (${response.status}): ${text}`,\n );\n }\n\n return (await response.json()) as SolutionImportResponse;\n}\n\n/**\n * Overwrite an existing solution on Studio Web.\n */\nexport async function overwriteSolution(\n config: StudioWebConfig,\n organizationName: string,\n fileBuffer: Uint8Array,\n fileName: string,\n solutionId: string,\n): Promise<SolutionImportResponse> {\n const overwriteUrl = `${config.baseUrl}/${organizationName}/studio_/backend/api/Solution/${solutionId}/Overwrite`;\n\n const formData = new FormData();\n const fileBlob = new Blob([fileBuffer], {\n type: \"application/octet-stream\",\n });\n formData.append(\"UploadFile\", fileBlob, fileName);\n\n const headers: Record<string, string> = addSdkUserAgentHeader(\n {\n Authorization: `Bearer ${config.authToken}`,\n },\n SDK_USER_AGENT,\n );\n if (config.tenantId) {\n headers[\"x-uipath-tenantid\"] = config.tenantId;\n }\n\n const response = await fetch(overwriteUrl, {\n method: \"POST\",\n headers,\n body: formData,\n });\n\n if (!response.ok) {\n const text = await response.text();\n throw new HttpError(\n response.status,\n `Overwrite failed (${response.status}): ${text}`,\n );\n }\n\n return (await response.json()) as SolutionImportResponse;\n}\n\n/**\n * Upload or overwrite a solution on Studio Web.\n * If solutionId is provided, tries overwrite first with 404 fallback to import.\n *\n * Accepts either a file buffer or a file path (reads the file using fs).\n */\nexport async function uploadOrOverwriteSolution(\n config: StudioWebConfig,\n organizationName: string,\n fileBufferOrPath: Uint8Array | string,\n solutionId: string | undefined,\n fs?: IFileSystem,\n): Promise<SolutionImportResponse> {\n let fileBuffer: Uint8Array;\n let fileName: string;\n\n if (typeof fileBufferOrPath === \"string\") {\n if (!fs) {\n throw new Error(\n \"IFileSystem is required when passing a file path to uploadOrOverwriteSolution\",\n );\n }\n const content = await fs.readFile(fileBufferOrPath);\n if (content === null) {\n throw new Error(`Failed to read file: ${fileBufferOrPath}`);\n }\n fileBuffer = new Uint8Array(content);\n fileName = fs.path.basename(fileBufferOrPath);\n } else {\n fileBuffer = fileBufferOrPath;\n fileName = \"solution.uis\";\n }\n\n if (solutionId) {\n logger.info(\n `Attempting to overwrite existing solution ${solutionId} on Studio Web...`,\n );\n const [overwriteError, overwriteResult] = await catchError(\n overwriteSolution(\n config,\n organizationName,\n fileBuffer,\n fileName,\n solutionId,\n ),\n );\n if (!overwriteError) {\n logger.info(\"Solution overwritten successfully.\");\n return overwriteResult;\n }\n if (\n overwriteError instanceof HttpError &&\n overwriteError.status === 404\n ) {\n logger.info(\n `Solution ${solutionId} not found on Studio Web. Importing as new solution...`,\n );\n } else {\n throw overwriteError;\n }\n }\n\n logger.info(\"Importing new solution to Studio Web...\");\n return importSolution(config, organizationName, fileBuffer, fileName);\n}\n"
|
|
155
|
+
],
|
|
156
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGA,MAAM,uBAAuB,MAAM;AAAA,IAOjC,WAAW,CAAC,UAAU,MAAM,SAAS;AAAA,MACnC,MAAM,OAAO;AAAA,MAEb,MAAM,kBAAkB,MAAM,KAAK,WAAW;AAAA,MAC9C,KAAK,OAAO,KAAK,YAAY;AAAA,MAC7B,KAAK,OAAO;AAAA,MACZ,KAAK,WAAW;AAAA,MAChB,KAAK,cAAc;AAAA;AAAA,EAEvB;AAAA;AAAA,EAKA,MAAM,6BAA6B,eAAe;AAAA,IAKhD,WAAW,CAAC,SAAS;AAAA,MACnB,MAAM,GAAG,6BAA6B,OAAO;AAAA,MAE7C,MAAM,kBAAkB,MAAM,KAAK,WAAW;AAAA,MAC9C,KAAK,OAAO,KAAK,YAAY;AAAA;AAAA,EAEjC;AAAA,EAEQ,yBAAiB;AAAA,EACjB,+BAAuB;AAAA;;;;ECtC/B,MAAQ;AAAA;AAAA,EAER,MAAM,SAAS;AAAA,IAUb,WAAW,CAAC,MAAM,aAAa;AAAA,MAC7B,KAAK,cAAc,eAAe;AAAA,MAClC,KAAK,WAAW;AAAA,MAChB,KAAK,WAAW;AAAA,MAChB,KAAK,eAAe;AAAA,MACpB,KAAK,0BAA0B;AAAA,MAC/B,KAAK,aAAa;AAAA,MAElB,QAAQ,KAAK;AAAA,aACN;AAAA,UACH,KAAK,WAAW;AAAA,UAChB,KAAK,QAAQ,KAAK,MAAM,GAAG,EAAE;AAAA,UAC7B;AAAA,aACG;AAAA,UACH,KAAK,WAAW;AAAA,UAChB,KAAK,QAAQ,KAAK,MAAM,GAAG,EAAE;AAAA,UAC7B;AAAA;AAAA,UAEA,KAAK,WAAW;AAAA,UAChB,KAAK,QAAQ;AAAA,UACb;AAAA;AAAA,MAGJ,IAAI,KAAK,MAAM,SAAS,KAAK,GAAG;AAAA,QAC9B,KAAK,WAAW;AAAA,QAChB,KAAK,QAAQ,KAAK,MAAM,MAAM,GAAG,EAAE;AAAA,MACrC;AAAA;AAAA,IASF,IAAI,GAAG;AAAA,MACL,OAAO,KAAK;AAAA;AAAA,IAOd,aAAa,CAAC,OAAO,UAAU;AAAA,MAC7B,IAAI,aAAa,KAAK,gBAAgB,CAAC,MAAM,QAAQ,QAAQ,GAAG;AAAA,QAC9D,OAAO,CAAC,KAAK;AAAA,MACf;AAAA,MAEA,SAAS,KAAK,KAAK;AAAA,MACnB,OAAO;AAAA;AAAA,IAWT,OAAO,CAAC,OAAO,aAAa;AAAA,MAC1B,KAAK,eAAe;AAAA,MACpB,KAAK,0BAA0B;AAAA,MAC/B,OAAO;AAAA;AAAA,IAUT,SAAS,CAAC,IAAI;AAAA,MACZ,KAAK,WAAW;AAAA,MAChB,OAAO;AAAA;AAAA,IAUT,OAAO,CAAC,QAAQ;AAAA,MACd,KAAK,aAAa,OAAO,MAAM;AAAA,MAC/B,KAAK,WAAW,CAAC,KAAK,aAAa;AAAA,QACjC,IAAI,CAAC,KAAK,WAAW,SAAS,GAAG,GAAG;AAAA,UAClC,MAAM,IAAI,qBACR,uBAAuB,KAAK,WAAW,KAAK,IAAI,IAClD;AAAA,QACF;AAAA,QACA,IAAI,KAAK,UAAU;AAAA,UACjB,OAAO,KAAK,cAAc,KAAK,QAAQ;AAAA,QACzC;AAAA,QACA,OAAO;AAAA;AAAA,MAET,OAAO;AAAA;AAAA,IAQT,WAAW,GAAG;AAAA,MACZ,KAAK,WAAW;AAAA,MAChB,OAAO;AAAA;AAAA,IAQT,WAAW,GAAG;AAAA,MACZ,KAAK,WAAW;AAAA,MAChB,OAAO;AAAA;AAAA,EAEX;AAAA,EAUA,SAAS,oBAAoB,CAAC,KAAK;AAAA,IACjC,MAAM,aAAa,IAAI,KAAK,KAAK,IAAI,aAAa,OAAO,QAAQ;AAAA,IAEjE,OAAO,IAAI,WAAW,MAAM,aAAa,MAAM,MAAM,aAAa;AAAA;AAAA,EAG5D,mBAAW;AAAA,EACX,+BAAuB;AAAA;;;;ECrJ/B,MAAQ;AAAA;AAAA,EAWR,MAAM,KAAK;AAAA,IACT,WAAW,GAAG;AAAA,MACZ,KAAK,YAAY;AAAA,MACjB,KAAK,iBAAiB;AAAA,MACtB,KAAK,kBAAkB;AAAA,MACvB,KAAK,cAAc;AAAA,MACnB,KAAK,oBAAoB;AAAA;AAAA,IAW3B,cAAc,CAAC,gBAAgB;AAAA,MAC7B,KAAK,YAAY,KAAK,aAAa,eAAe,aAAa;AAAA;AAAA,IAUjE,eAAe,CAAC,KAAK;AAAA,MACnB,MAAM,kBAAkB,IAAI,SAAS,OAAO,CAAC,SAAQ,CAAC,KAAI,OAAO;AAAA,MACjE,MAAM,cAAc,IAAI,gBAAgB;AAAA,MACxC,IAAI,eAAe,CAAC,YAAY,SAAS;AAAA,QACvC,gBAAgB,KAAK,WAAW;AAAA,MAClC;AAAA,MACA,IAAI,KAAK,iBAAiB;AAAA,QACxB,gBAAgB,KAAK,CAAC,GAAG,MAAM;AAAA,UAE7B,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,CAAC;AAAA,SACvC;AAAA,MACH;AAAA,MACA,OAAO;AAAA;AAAA,IAUT,cAAc,CAAC,GAAG,GAAG;AAAA,MACnB,MAAM,aAAa,CAAC,WAAW;AAAA,QAE7B,OAAO,OAAO,QACV,OAAO,MAAM,QAAQ,MAAM,EAAE,IAC7B,OAAO,KAAK,QAAQ,OAAO,EAAE;AAAA;AAAA,MAEnC,OAAO,WAAW,CAAC,EAAE,cAAc,WAAW,CAAC,CAAC;AAAA;AAAA,IAUlD,cAAc,CAAC,KAAK;AAAA,MAClB,MAAM,iBAAiB,IAAI,QAAQ,OAAO,CAAC,WAAW,CAAC,OAAO,MAAM;AAAA,MAEpE,MAAM,aAAa,IAAI,eAAe;AAAA,MACtC,IAAI,cAAc,CAAC,WAAW,QAAQ;AAAA,QAEpC,MAAM,cAAc,WAAW,SAAS,IAAI,YAAY,WAAW,KAAK;AAAA,QACxE,MAAM,aAAa,WAAW,QAAQ,IAAI,YAAY,WAAW,IAAI;AAAA,QACrE,IAAI,CAAC,eAAe,CAAC,YAAY;AAAA,UAC/B,eAAe,KAAK,UAAU;AAAA,QAChC,EAAO,SAAI,WAAW,QAAQ,CAAC,YAAY;AAAA,UACzC,eAAe,KACb,IAAI,aAAa,WAAW,MAAM,WAAW,WAAW,CAC1D;AAAA,QACF,EAAO,SAAI,WAAW,SAAS,CAAC,aAAa;AAAA,UAC3C,eAAe,KACb,IAAI,aAAa,WAAW,OAAO,WAAW,WAAW,CAC3D;AAAA,QACF;AAAA,MACF;AAAA,MACA,IAAI,KAAK,aAAa;AAAA,QACpB,eAAe,KAAK,KAAK,cAAc;AAAA,MACzC;AAAA,MACA,OAAO;AAAA;AAAA,IAUT,oBAAoB,CAAC,KAAK;AAAA,MACxB,IAAI,CAAC,KAAK;AAAA,QAAmB,OAAO,CAAC;AAAA,MAErC,MAAM,gBAAgB,CAAC;AAAA,MACvB,SACM,cAAc,IAAI,OACtB,aACA,cAAc,YAAY,QAC1B;AAAA,QACA,MAAM,iBAAiB,YAAY,QAAQ,OACzC,CAAC,WAAW,CAAC,OAAO,MACtB;AAAA,QACA,cAAc,KAAK,GAAG,cAAc;AAAA,MACtC;AAAA,MACA,IAAI,KAAK,aAAa;AAAA,QACpB,cAAc,KAAK,KAAK,cAAc;AAAA,MACxC;AAAA,MACA,OAAO;AAAA;AAAA,IAUT,gBAAgB,CAAC,KAAK;AAAA,MAEpB,IAAI,IAAI,kBAAkB;AAAA,QACxB,IAAI,oBAAoB,QAAQ,CAAC,aAAa;AAAA,UAC5C,SAAS,cACP,SAAS,eAAe,IAAI,iBAAiB,SAAS,KAAK,MAAM;AAAA,SACpE;AAAA,MACH;AAAA,MAGA,IAAI,IAAI,oBAAoB,KAAK,CAAC,aAAa,SAAS,WAAW,GAAG;AAAA,QACpE,OAAO,IAAI;AAAA,MACb;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,IAUV,cAAc,CAAC,KAAK;AAAA,MAElB,MAAM,OAAO,IAAI,oBACd,IAAI,CAAC,QAAQ,qBAAqB,GAAG,CAAC,EACtC,KAAK,GAAG;AAAA,MACX,OACE,IAAI,SACH,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,OAC1C,IAAI,QAAQ,SAAS,eAAe,OACpC,OAAO,MAAM,OAAO;AAAA;AAAA,IAWzB,UAAU,CAAC,QAAQ;AAAA,MACjB,OAAO,OAAO;AAAA;AAAA,IAUhB,YAAY,CAAC,UAAU;AAAA,MACrB,OAAO,SAAS,KAAK;AAAA;AAAA,IAWvB,2BAA2B,CAAC,KAAK,QAAQ;AAAA,MACvC,OAAO,OAAO,gBAAgB,GAAG,EAAE,OAAO,CAAC,KAAK,YAAY;AAAA,QAC1D,OAAO,KAAK,IACV,KACA,KAAK,aACH,OAAO,oBAAoB,OAAO,eAAe,OAAO,CAAC,CAC3D,CACF;AAAA,SACC,CAAC;AAAA;AAAA,IAWN,uBAAuB,CAAC,KAAK,QAAQ;AAAA,MACnC,OAAO,OAAO,eAAe,GAAG,EAAE,OAAO,CAAC,KAAK,WAAW;AAAA,QACxD,OAAO,KAAK,IACV,KACA,KAAK,aAAa,OAAO,gBAAgB,OAAO,WAAW,MAAM,CAAC,CAAC,CACrE;AAAA,SACC,CAAC;AAAA;AAAA,IAWN,6BAA6B,CAAC,KAAK,QAAQ;AAAA,MACzC,OAAO,OAAO,qBAAqB,GAAG,EAAE,OAAO,CAAC,KAAK,WAAW;AAAA,QAC9D,OAAO,KAAK,IACV,KACA,KAAK,aAAa,OAAO,gBAAgB,OAAO,WAAW,MAAM,CAAC,CAAC,CACrE;AAAA,SACC,CAAC;AAAA;AAAA,IAWN,yBAAyB,CAAC,KAAK,QAAQ;AAAA,MACrC,OAAO,OAAO,iBAAiB,GAAG,EAAE,OAAO,CAAC,KAAK,aAAa;AAAA,QAC5D,OAAO,KAAK,IACV,KACA,KAAK,aACH,OAAO,kBAAkB,OAAO,aAAa,QAAQ,CAAC,CACxD,CACF;AAAA,SACC,CAAC;AAAA;AAAA,IAUN,YAAY,CAAC,KAAK;AAAA,MAEhB,IAAI,UAAU,IAAI;AAAA,MAClB,IAAI,IAAI,SAAS,IAAI;AAAA,QACnB,UAAU,UAAU,MAAM,IAAI,SAAS;AAAA,MACzC;AAAA,MACA,IAAI,mBAAmB;AAAA,MACvB,SACM,cAAc,IAAI,OACtB,aACA,cAAc,YAAY,QAC1B;AAAA,QACA,mBAAmB,YAAY,KAAK,IAAI,MAAM;AAAA,MAChD;AAAA,MACA,OAAO,mBAAmB,UAAU,MAAM,IAAI,MAAM;AAAA;AAAA,IAUtD,kBAAkB,CAAC,KAAK;AAAA,MAEtB,OAAO,IAAI,YAAY;AAAA;AAAA,IAWzB,qBAAqB,CAAC,KAAK;AAAA,MAEzB,OAAO,IAAI,QAAQ,KAAK,IAAI,YAAY;AAAA;AAAA,IAU1C,iBAAiB,CAAC,QAAQ;AAAA,MACxB,MAAM,YAAY,CAAC;AAAA,MAEnB,IAAI,OAAO,YAAY;AAAA,QACrB,UAAU,KAER,YAAY,OAAO,WAAW,IAAI,CAAC,WAAW,KAAK,UAAU,MAAM,CAAC,EAAE,KAAK,IAAI,GACjF;AAAA,MACF;AAAA,MACA,IAAI,OAAO,iBAAiB,WAAW;AAAA,QAGrC,MAAM,cACJ,OAAO,YACP,OAAO,YACN,OAAO,UAAU,KAAK,OAAO,OAAO,iBAAiB;AAAA,QACxD,IAAI,aAAa;AAAA,UACf,UAAU,KACR,YAAY,OAAO,2BAA2B,KAAK,UAAU,OAAO,YAAY,GAClF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,IAAI,OAAO,cAAc,aAAa,OAAO,UAAU;AAAA,QACrD,UAAU,KAAK,WAAW,KAAK,UAAU,OAAO,SAAS,GAAG;AAAA,MAC9D;AAAA,MACA,IAAI,OAAO,WAAW,WAAW;AAAA,QAC/B,UAAU,KAAK,QAAQ,OAAO,QAAQ;AAAA,MACxC;AAAA,MACA,IAAI,UAAU,SAAS,GAAG;AAAA,QACxB,MAAM,mBAAmB,IAAI,UAAU,KAAK,IAAI;AAAA,QAChD,IAAI,OAAO,aAAa;AAAA,UACtB,OAAO,GAAG,OAAO,eAAe;AAAA,QAClC;AAAA,QACA,OAAO;AAAA,MACT;AAAA,MAEA,OAAO,OAAO;AAAA;AAAA,IAUhB,mBAAmB,CAAC,UAAU;AAAA,MAC5B,MAAM,YAAY,CAAC;AAAA,MACnB,IAAI,SAAS,YAAY;AAAA,QACvB,UAAU,KAER,YAAY,SAAS,WAAW,IAAI,CAAC,WAAW,KAAK,UAAU,MAAM,CAAC,EAAE,KAAK,IAAI,GACnF;AAAA,MACF;AAAA,MACA,IAAI,SAAS,iBAAiB,WAAW;AAAA,QACvC,UAAU,KACR,YAAY,SAAS,2BAA2B,KAAK,UAAU,SAAS,YAAY,GACtF;AAAA,MACF;AAAA,MACA,IAAI,UAAU,SAAS,GAAG;AAAA,QACxB,MAAM,mBAAmB,IAAI,UAAU,KAAK,IAAI;AAAA,QAChD,IAAI,SAAS,aAAa;AAAA,UACxB,OAAO,GAAG,SAAS,eAAe;AAAA,QACpC;AAAA,QACA,OAAO;AAAA,MACT;AAAA,MACA,OAAO,SAAS;AAAA;AAAA,IAWlB,cAAc,CAAC,SAAS,OAAO,QAAQ;AAAA,MACrC,IAAI,MAAM,WAAW;AAAA,QAAG,OAAO,CAAC;AAAA,MAEhC,OAAO,CAAC,OAAO,WAAW,OAAO,GAAG,GAAG,OAAO,EAAE;AAAA;AAAA,IAWlD,UAAU,CAAC,eAAe,cAAc,UAAU;AAAA,MAChD,MAAM,SAAS,IAAI;AAAA,MAEnB,cAAc,QAAQ,CAAC,SAAS;AAAA,QAC9B,MAAM,QAAQ,SAAS,IAAI;AAAA,QAC3B,IAAI,CAAC,OAAO,IAAI,KAAK;AAAA,UAAG,OAAO,IAAI,OAAO,CAAC,CAAC;AAAA,OAC7C;AAAA,MAED,aAAa,QAAQ,CAAC,SAAS;AAAA,QAC7B,MAAM,QAAQ,SAAS,IAAI;AAAA,QAC3B,IAAI,CAAC,OAAO,IAAI,KAAK,GAAG;AAAA,UACtB,OAAO,IAAI,OAAO,CAAC,CAAC;AAAA,QACtB;AAAA,QACA,OAAO,IAAI,KAAK,EAAE,KAAK,IAAI;AAAA,OAC5B;AAAA,MACD,OAAO;AAAA;AAAA,IAWT,UAAU,CAAC,KAAK,QAAQ;AAAA,MACtB,MAAM,YAAY,OAAO,SAAS,KAAK,MAAM;AAAA,MAC7C,MAAM,YAAY,OAAO,aAAa;AAAA,MAEtC,SAAS,cAAc,CAAC,MAAM,aAAa;AAAA,QACzC,OAAO,OAAO,WAAW,MAAM,WAAW,aAAa,MAAM;AAAA;AAAA,MAI/D,IAAI,SAAS;AAAA,QACX,GAAG,OAAO,WAAW,QAAQ,KAAK,OAAO,WAAW,OAAO,aAAa,GAAG,CAAC;AAAA,QAC5E;AAAA,MACF;AAAA,MAGA,MAAM,qBAAqB,OAAO,mBAAmB,GAAG;AAAA,MACxD,IAAI,mBAAmB,SAAS,GAAG;AAAA,QACjC,SAAS,OAAO,OAAO;AAAA,UACrB,OAAO,QACL,OAAO,wBAAwB,kBAAkB,GACjD,SACF;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MAGA,MAAM,eAAe,OAAO,iBAAiB,GAAG,EAAE,IAAI,CAAC,aAAa;AAAA,QAClE,OAAO,eACL,OAAO,kBAAkB,OAAO,aAAa,QAAQ,CAAC,GACtD,OAAO,yBAAyB,OAAO,oBAAoB,QAAQ,CAAC,CACtE;AAAA,OACD;AAAA,MACD,SAAS,OAAO,OACd,KAAK,eAAe,cAAc,cAAc,MAAM,CACxD;AAAA,MAGA,MAAM,eAAe,KAAK,WACxB,IAAI,SACJ,OAAO,eAAe,GAAG,GACzB,CAAC,WAAW,OAAO,oBAAoB,UACzC;AAAA,MACA,aAAa,QAAQ,CAAC,SAAS,UAAU;AAAA,QACvC,MAAM,aAAa,QAAQ,IAAI,CAAC,WAAW;AAAA,UACzC,OAAO,eACL,OAAO,gBAAgB,OAAO,WAAW,MAAM,CAAC,GAChD,OAAO,uBAAuB,OAAO,kBAAkB,MAAM,CAAC,CAChE;AAAA,SACD;AAAA,QACD,SAAS,OAAO,OAAO,KAAK,eAAe,OAAO,YAAY,MAAM,CAAC;AAAA,OACtE;AAAA,MAED,IAAI,OAAO,mBAAmB;AAAA,QAC5B,MAAM,mBAAmB,OACtB,qBAAqB,GAAG,EACxB,IAAI,CAAC,WAAW;AAAA,UACf,OAAO,eACL,OAAO,gBAAgB,OAAO,WAAW,MAAM,CAAC,GAChD,OAAO,uBAAuB,OAAO,kBAAkB,MAAM,CAAC,CAChE;AAAA,SACD;AAAA,QACH,SAAS,OAAO,OACd,KAAK,eAAe,mBAAmB,kBAAkB,MAAM,CACjE;AAAA,MACF;AAAA,MAGA,MAAM,gBAAgB,KAAK,WACzB,IAAI,UACJ,OAAO,gBAAgB,GAAG,GAC1B,CAAC,QAAQ,IAAI,UAAU,KAAK,WAC9B;AAAA,MACA,cAAc,QAAQ,CAAC,UAAU,UAAU;AAAA,QACzC,MAAM,cAAc,SAAS,IAAI,CAAC,QAAQ;AAAA,UACxC,OAAO,eACL,OAAO,oBAAoB,OAAO,eAAe,GAAG,CAAC,GACrD,OAAO,2BAA2B,OAAO,sBAAsB,GAAG,CAAC,CACrE;AAAA,SACD;AAAA,QACD,SAAS,OAAO,OAAO,KAAK,eAAe,OAAO,aAAa,MAAM,CAAC;AAAA,OACvE;AAAA,MAED,OAAO,OAAO,KAAK;AAAA,CAAI;AAAA;AAAA,IASzB,YAAY,CAAC,KAAK;AAAA,MAChB,OAAO,WAAW,GAAG,EAAE;AAAA;AAAA,IASzB,UAAU,CAAC,KAAK;AAAA,MACd,OAAO;AAAA;AAAA,IAGT,UAAU,CAAC,KAAK;AAAA,MAGd,OAAO,IACJ,MAAM,GAAG,EACT,IAAI,CAAC,SAAS;AAAA,QACb,IAAI,SAAS;AAAA,UAAa,OAAO,KAAK,gBAAgB,IAAI;AAAA,QAC1D,IAAI,SAAS;AAAA,UAAa,OAAO,KAAK,oBAAoB,IAAI;AAAA,QAC9D,IAAI,KAAK,OAAO,OAAO,KAAK,OAAO;AAAA,UACjC,OAAO,KAAK,kBAAkB,IAAI;AAAA,QACpC,OAAO,KAAK,iBAAiB,IAAI;AAAA,OAClC,EACA,KAAK,GAAG;AAAA;AAAA,IAEb,uBAAuB,CAAC,KAAK;AAAA,MAC3B,OAAO,KAAK,qBAAqB,GAAG;AAAA;AAAA,IAEtC,sBAAsB,CAAC,KAAK;AAAA,MAC1B,OAAO,KAAK,qBAAqB,GAAG;AAAA;AAAA,IAEtC,0BAA0B,CAAC,KAAK;AAAA,MAC9B,OAAO,KAAK,qBAAqB,GAAG;AAAA;AAAA,IAEtC,wBAAwB,CAAC,KAAK;AAAA,MAC5B,OAAO,KAAK,qBAAqB,GAAG;AAAA;AAAA,IAEtC,oBAAoB,CAAC,KAAK;AAAA,MACxB,OAAO;AAAA;AAAA,IAET,eAAe,CAAC,KAAK;AAAA,MACnB,OAAO,KAAK,gBAAgB,GAAG;AAAA;AAAA,IAEjC,mBAAmB,CAAC,KAAK;AAAA,MAGvB,OAAO,IACJ,MAAM,GAAG,EACT,IAAI,CAAC,SAAS;AAAA,QACb,IAAI,SAAS;AAAA,UAAa,OAAO,KAAK,gBAAgB,IAAI;AAAA,QAC1D,IAAI,KAAK,OAAO,OAAO,KAAK,OAAO;AAAA,UACjC,OAAO,KAAK,kBAAkB,IAAI;AAAA,QACpC,OAAO,KAAK,oBAAoB,IAAI;AAAA,OACrC,EACA,KAAK,GAAG;AAAA;AAAA,IAEb,iBAAiB,CAAC,KAAK;AAAA,MACrB,OAAO,KAAK,kBAAkB,GAAG;AAAA;AAAA,IAEnC,eAAe,CAAC,KAAK;AAAA,MACnB,OAAO;AAAA;AAAA,IAET,iBAAiB,CAAC,KAAK;AAAA,MACrB,OAAO;AAAA;AAAA,IAET,mBAAmB,CAAC,KAAK;AAAA,MACvB,OAAO;AAAA;AAAA,IAET,gBAAgB,CAAC,KAAK;AAAA,MACpB,OAAO;AAAA;AAAA,IAWT,QAAQ,CAAC,KAAK,QAAQ;AAAA,MACpB,OAAO,KAAK,IACV,OAAO,wBAAwB,KAAK,MAAM,GAC1C,OAAO,8BAA8B,KAAK,MAAM,GAChD,OAAO,4BAA4B,KAAK,MAAM,GAC9C,OAAO,0BAA0B,KAAK,MAAM,CAC9C;AAAA;AAAA,IASF,YAAY,CAAC,KAAK;AAAA,MAChB,OAAO,cAAc,KAAK,GAAG;AAAA;AAAA,IAgB/B,UAAU,CAAC,MAAM,WAAW,aAAa,QAAQ;AAAA,MAC/C,MAAM,aAAa;AAAA,MACnB,MAAM,gBAAgB,IAAI,OAAO,UAAU;AAAA,MAC3C,IAAI,CAAC;AAAA,QAAa,OAAO,gBAAgB;AAAA,MAGzC,MAAM,aAAa,KAAK,OACtB,YAAY,KAAK,SAAS,OAAO,aAAa,IAAI,CACpD;AAAA,MAGA,MAAM,cAAc;AAAA,MACpB,MAAM,YAAY,KAAK,aAAa;AAAA,MACpC,MAAM,iBAAiB,YAAY,YAAY,cAAc;AAAA,MAC7D,IAAI;AAAA,MACJ,IACE,iBAAiB,KAAK,kBACtB,OAAO,aAAa,WAAW,GAC/B;AAAA,QACA,uBAAuB;AAAA,MACzB,EAAO;AAAA,QACL,MAAM,qBAAqB,OAAO,QAAQ,aAAa,cAAc;AAAA,QACrE,uBAAuB,mBAAmB,QACxC,OACA;AAAA,IAAO,IAAI,OAAO,YAAY,WAAW,CAC3C;AAAA;AAAA,MAIF,OACE,gBACA,aACA,IAAI,OAAO,WAAW,IACtB,qBAAqB,QAAQ,OAAO;AAAA,EAAK,eAAe;AAAA;AAAA,IAY5D,OAAO,CAAC,KAAK,OAAO;AAAA,MAClB,IAAI,QAAQ,KAAK;AAAA,QAAgB,OAAO;AAAA,MAExC,MAAM,WAAW,IAAI,MAAM,SAAS;AAAA,MAEpC,MAAM,eAAe;AAAA,MACrB,MAAM,eAAe,CAAC;AAAA,MACtB,SAAS,QAAQ,CAAC,SAAS;AAAA,QACzB,MAAM,SAAS,KAAK,MAAM,YAAY;AAAA,QACtC,IAAI,WAAW,MAAM;AAAA,UACnB,aAAa,KAAK,EAAE;AAAA,UACpB;AAAA,QACF;AAAA,QAEA,IAAI,YAAY,CAAC,OAAO,MAAM,CAAC;AAAA,QAC/B,IAAI,WAAW,KAAK,aAAa,UAAU,EAAE;AAAA,QAC7C,OAAO,QAAQ,CAAC,UAAU;AAAA,UACxB,MAAM,eAAe,KAAK,aAAa,KAAK;AAAA,UAE5C,IAAI,WAAW,gBAAgB,OAAO;AAAA,YACpC,UAAU,KAAK,KAAK;AAAA,YACpB,YAAY;AAAA,YACZ;AAAA,UACF;AAAA,UACA,aAAa,KAAK,UAAU,KAAK,EAAE,CAAC;AAAA,UAEpC,MAAM,YAAY,MAAM,UAAU;AAAA,UAClC,YAAY,CAAC,SAAS;AAAA,UACtB,WAAW,KAAK,aAAa,SAAS;AAAA,SACvC;AAAA,QACD,aAAa,KAAK,UAAU,KAAK,EAAE,CAAC;AAAA,OACrC;AAAA,MAED,OAAO,aAAa,KAAK;AAAA,CAAI;AAAA;AAAA,EAEjC;AAAA,EAUA,SAAS,UAAU,CAAC,KAAK;AAAA,IAEvB,MAAM,aAAa;AAAA,IACnB,OAAO,IAAI,QAAQ,YAAY,EAAE;AAAA;AAAA,EAG3B,eAAO;AAAA,EACP,qBAAa;AAAA;;;;EC1uBrB,MAAQ;AAAA;AAAA,EAER,MAAM,OAAO;AAAA,IAQX,WAAW,CAAC,OAAO,aAAa;AAAA,MAC9B,KAAK,QAAQ;AAAA,MACb,KAAK,cAAc,eAAe;AAAA,MAElC,KAAK,WAAW,MAAM,SAAS,GAAG;AAAA,MAClC,KAAK,WAAW,MAAM,SAAS,GAAG;AAAA,MAElC,KAAK,WAAW,iBAAiB,KAAK,KAAK;AAAA,MAC3C,KAAK,YAAY;AAAA,MACjB,MAAM,cAAc,iBAAiB,KAAK;AAAA,MAC1C,KAAK,QAAQ,YAAY;AAAA,MACzB,KAAK,OAAO,YAAY;AAAA,MACxB,KAAK,SAAS;AAAA,MACd,IAAI,KAAK,MAAM;AAAA,QACb,KAAK,SAAS,KAAK,KAAK,WAAW,OAAO;AAAA,MAC5C;AAAA,MACA,KAAK,eAAe;AAAA,MACpB,KAAK,0BAA0B;AAAA,MAC/B,KAAK,YAAY;AAAA,MACjB,KAAK,SAAS;AAAA,MACd,KAAK,WAAW;AAAA,MAChB,KAAK,SAAS;AAAA,MACd,KAAK,aAAa;AAAA,MAClB,KAAK,gBAAgB,CAAC;AAAA,MACtB,KAAK,UAAU;AAAA,MACf,KAAK,mBAAmB;AAAA;AAAA,IAW1B,OAAO,CAAC,OAAO,aAAa;AAAA,MAC1B,KAAK,eAAe;AAAA,MACpB,KAAK,0BAA0B;AAAA,MAC/B,OAAO;AAAA;AAAA,IAeT,MAAM,CAAC,KAAK;AAAA,MACV,KAAK,YAAY;AAAA,MACjB,OAAO;AAAA;AAAA,IAeT,SAAS,CAAC,OAAO;AAAA,MACf,KAAK,gBAAgB,KAAK,cAAc,OAAO,KAAK;AAAA,MACpD,OAAO;AAAA;AAAA,IAgBT,OAAO,CAAC,qBAAqB;AAAA,MAC3B,IAAI,aAAa;AAAA,MACjB,IAAI,OAAO,wBAAwB,UAAU;AAAA,QAE3C,aAAa,GAAG,sBAAsB,KAAK;AAAA,MAC7C;AAAA,MACA,KAAK,UAAU,OAAO,OAAO,KAAK,WAAW,CAAC,GAAG,UAAU;AAAA,MAC3D,OAAO;AAAA;AAAA,IAaT,GAAG,CAAC,MAAM;AAAA,MACR,KAAK,SAAS;AAAA,MACd,OAAO;AAAA;AAAA,IAUT,SAAS,CAAC,IAAI;AAAA,MACZ,KAAK,WAAW;AAAA,MAChB,OAAO;AAAA;AAAA,IAUT,mBAAmB,CAAC,YAAY,MAAM;AAAA,MACpC,KAAK,YAAY,CAAC,CAAC;AAAA,MACnB,OAAO;AAAA;AAAA,IAUT,QAAQ,CAAC,OAAO,MAAM;AAAA,MACpB,KAAK,SAAS,CAAC,CAAC;AAAA,MAChB,OAAO;AAAA;AAAA,IAOT,aAAa,CAAC,OAAO,UAAU;AAAA,MAC7B,IAAI,aAAa,KAAK,gBAAgB,CAAC,MAAM,QAAQ,QAAQ,GAAG;AAAA,QAC9D,OAAO,CAAC,KAAK;AAAA,MACf;AAAA,MAEA,SAAS,KAAK,KAAK;AAAA,MACnB,OAAO;AAAA;AAAA,IAUT,OAAO,CAAC,QAAQ;AAAA,MACd,KAAK,aAAa,OAAO,MAAM;AAAA,MAC/B,KAAK,WAAW,CAAC,KAAK,aAAa;AAAA,QACjC,IAAI,CAAC,KAAK,WAAW,SAAS,GAAG,GAAG;AAAA,UAClC,MAAM,IAAI,qBACR,uBAAuB,KAAK,WAAW,KAAK,IAAI,IAClD;AAAA,QACF;AAAA,QACA,IAAI,KAAK,UAAU;AAAA,UACjB,OAAO,KAAK,cAAc,KAAK,QAAQ;AAAA,QACzC;AAAA,QACA,OAAO;AAAA;AAAA,MAET,OAAO;AAAA;AAAA,IAST,IAAI,GAAG;AAAA,MACL,IAAI,KAAK,MAAM;AAAA,QACb,OAAO,KAAK,KAAK,QAAQ,OAAO,EAAE;AAAA,MACpC;AAAA,MACA,OAAO,KAAK,MAAM,QAAQ,MAAM,EAAE;AAAA;AAAA,IAUpC,aAAa,GAAG;AAAA,MACd,IAAI,KAAK,QAAQ;AAAA,QACf,OAAO,UAAU,KAAK,KAAK,EAAE,QAAQ,QAAQ,EAAE,CAAC;AAAA,MAClD;AAAA,MACA,OAAO,UAAU,KAAK,KAAK,CAAC;AAAA;AAAA,IAS9B,SAAS,CAAC,SAAS;AAAA,MACjB,KAAK,mBAAmB;AAAA,MACxB,OAAO;AAAA;AAAA,IAWT,EAAE,CAAC,KAAK;AAAA,MACN,OAAO,KAAK,UAAU,OAAO,KAAK,SAAS;AAAA;AAAA,IAY7C,SAAS,GAAG;AAAA,MACV,OAAO,CAAC,KAAK,YAAY,CAAC,KAAK,YAAY,CAAC,KAAK;AAAA;AAAA,EAErD;AAAA;AAAA,EASA,MAAM,YAAY;AAAA,IAIhB,WAAW,CAAC,SAAS;AAAA,MACnB,KAAK,kBAAkB,IAAI;AAAA,MAC3B,KAAK,kBAAkB,IAAI;AAAA,MAC3B,KAAK,cAAc,IAAI;AAAA,MACvB,QAAQ,QAAQ,CAAC,WAAW;AAAA,QAC1B,IAAI,OAAO,QAAQ;AAAA,UACjB,KAAK,gBAAgB,IAAI,OAAO,cAAc,GAAG,MAAM;AAAA,QACzD,EAAO;AAAA,UACL,KAAK,gBAAgB,IAAI,OAAO,cAAc,GAAG,MAAM;AAAA;AAAA,OAE1D;AAAA,MACD,KAAK,gBAAgB,QAAQ,CAAC,OAAO,QAAQ;AAAA,QAC3C,IAAI,KAAK,gBAAgB,IAAI,GAAG,GAAG;AAAA,UACjC,KAAK,YAAY,IAAI,GAAG;AAAA,QAC1B;AAAA,OACD;AAAA;AAAA,IAUH,eAAe,CAAC,OAAO,QAAQ;AAAA,MAC7B,MAAM,YAAY,OAAO,cAAc;AAAA,MACvC,IAAI,CAAC,KAAK,YAAY,IAAI,SAAS;AAAA,QAAG,OAAO;AAAA,MAG7C,MAAM,SAAS,KAAK,gBAAgB,IAAI,SAAS,EAAE;AAAA,MACnD,MAAM,gBAAgB,WAAW,YAAY,SAAS;AAAA,MACtD,OAAO,OAAO,YAAY,kBAAkB;AAAA;AAAA,EAEhD;AAAA,EAUA,SAAS,SAAS,CAAC,KAAK;AAAA,IACtB,OAAO,IAAI,MAAM,GAAG,EAAE,OAAO,CAAC,MAAK,SAAS;AAAA,MAC1C,OAAO,OAAM,KAAK,GAAG,YAAY,IAAI,KAAK,MAAM,CAAC;AAAA,KAClD;AAAA;AAAA,EASH,SAAS,gBAAgB,CAAC,OAAO;AAAA,IAC/B,IAAI;AAAA,IACJ,IAAI;AAAA,IAEJ,MAAM,eAAe;AAAA,IAErB,MAAM,cAAc;AAAA,IAEpB,MAAM,YAAY,MAAM,MAAM,QAAQ,EAAE,OAAO,OAAO;AAAA,IAEtD,IAAI,aAAa,KAAK,UAAU,EAAE;AAAA,MAAG,YAAY,UAAU,MAAM;AAAA,IACjE,IAAI,YAAY,KAAK,UAAU,EAAE;AAAA,MAAG,WAAW,UAAU,MAAM;AAAA,IAE/D,IAAI,CAAC,aAAa,aAAa,KAAK,UAAU,EAAE;AAAA,MAC9C,YAAY,UAAU,MAAM;AAAA,IAG9B,IAAI,CAAC,aAAa,YAAY,KAAK,UAAU,EAAE,GAAG;AAAA,MAChD,YAAY;AAAA,MACZ,WAAW,UAAU,MAAM;AAAA,IAC7B;AAAA,IAGA,IAAI,UAAU,GAAG,WAAW,GAAG,GAAG;AAAA,MAChC,MAAM,kBAAkB,UAAU;AAAA,MAClC,MAAM,YAAY,kCAAkC,qCAAqC;AAAA,MACzF,IAAI,aAAa,KAAK,eAAe;AAAA,QACnC,MAAM,IAAI,MACR,GAAG;AAAA;AAAA;AAAA,wFAIL;AAAA,MACF,IAAI,aAAa,KAAK,eAAe;AAAA,QACnC,MAAM,IAAI,MAAM,GAAG;AAAA,uBACF;AAAA,MACnB,IAAI,YAAY,KAAK,eAAe;AAAA,QAClC,MAAM,IAAI,MAAM,GAAG;AAAA,sBACH;AAAA,MAElB,MAAM,IAAI,MAAM,GAAG;AAAA,2BACI;AAAA,IACzB;AAAA,IACA,IAAI,cAAc,aAAa,aAAa;AAAA,MAC1C,MAAM,IAAI,MACR,oDAAoD,SACtD;AAAA,IAEF,OAAO,EAAE,WAAW,SAAS;AAAA;AAAA,EAGvB,iBAAS;AAAA,EACT,sBAAc;AAAA;;;;EC3XtB,IAAM,cAAc;AAAA,EAEpB,SAAS,YAAY,CAAC,GAAG,GAAG;AAAA,IAM1B,IAAI,KAAK,IAAI,EAAE,SAAS,EAAE,MAAM,IAAI;AAAA,MAClC,OAAO,KAAK,IAAI,EAAE,QAAQ,EAAE,MAAM;AAAA,IAGpC,MAAM,IAAI,CAAC;AAAA,IAGX,SAAS,IAAI,EAAG,KAAK,EAAE,QAAQ,KAAK;AAAA,MAClC,EAAE,KAAK,CAAC,CAAC;AAAA,IACX;AAAA,IAEA,SAAS,IAAI,EAAG,KAAK,EAAE,QAAQ,KAAK;AAAA,MAClC,EAAE,GAAG,KAAK;AAAA,IACZ;AAAA,IAGA,SAAS,IAAI,EAAG,KAAK,EAAE,QAAQ,KAAK;AAAA,MAClC,SAAS,IAAI,EAAG,KAAK,EAAE,QAAQ,KAAK;AAAA,QAClC,IAAI,OAAO;AAAA,QACX,IAAI,EAAE,IAAI,OAAO,EAAE,IAAI,IAAI;AAAA,UACzB,OAAO;AAAA,QACT,EAAO;AAAA,UACL,OAAO;AAAA;AAAA,QAET,EAAE,GAAG,KAAK,KAAK,IACb,EAAE,IAAI,GAAG,KAAK,GACd,EAAE,GAAG,IAAI,KAAK,GACd,EAAE,IAAI,GAAG,IAAI,KAAK,IACpB;AAAA,QAEA,IAAI,IAAI,KAAK,IAAI,KAAK,EAAE,IAAI,OAAO,EAAE,IAAI,MAAM,EAAE,IAAI,OAAO,EAAE,IAAI,IAAI;AAAA,UACpE,EAAE,GAAG,KAAK,KAAK,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,CAAC;AAAA,QACjD;AAAA,MACF;AAAA,IACF;AAAA,IAEA,OAAO,EAAE,EAAE,QAAQ,EAAE;AAAA;AAAA,EAWvB,SAAS,cAAc,CAAC,MAAM,YAAY;AAAA,IACxC,IAAI,CAAC,cAAc,WAAW,WAAW;AAAA,MAAG,OAAO;AAAA,IAEnD,aAAa,MAAM,KAAK,IAAI,IAAI,UAAU,CAAC;AAAA,IAE3C,MAAM,mBAAmB,KAAK,WAAW,IAAI;AAAA,IAC7C,IAAI,kBAAkB;AAAA,MACpB,OAAO,KAAK,MAAM,CAAC;AAAA,MACnB,aAAa,WAAW,IAAI,CAAC,cAAc,UAAU,MAAM,CAAC,CAAC;AAAA,IAC/D;AAAA,IAEA,IAAI,UAAU,CAAC;AAAA,IACf,IAAI,eAAe;AAAA,IACnB,MAAM,gBAAgB;AAAA,IACtB,WAAW,QAAQ,CAAC,cAAc;AAAA,MAChC,IAAI,UAAU,UAAU;AAAA,QAAG;AAAA,MAE3B,MAAM,WAAW,aAAa,MAAM,SAAS;AAAA,MAC7C,MAAM,SAAS,KAAK,IAAI,KAAK,QAAQ,UAAU,MAAM;AAAA,MACrD,MAAM,cAAc,SAAS,YAAY;AAAA,MACzC,IAAI,aAAa,eAAe;AAAA,QAC9B,IAAI,WAAW,cAAc;AAAA,UAE3B,eAAe;AAAA,UACf,UAAU,CAAC,SAAS;AAAA,QACtB,EAAO,SAAI,aAAa,cAAc;AAAA,UACpC,QAAQ,KAAK,SAAS;AAAA,QACxB;AAAA,MACF;AAAA,KACD;AAAA,IAED,QAAQ,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAAA,IACzC,IAAI,kBAAkB;AAAA,MACpB,UAAU,QAAQ,IAAI,CAAC,cAAc,KAAK,WAAW;AAAA,IACvD;AAAA,IAEA,IAAI,QAAQ,SAAS,GAAG;AAAA,MACtB,OAAO;AAAA,uBAA0B,QAAQ,KAAK,IAAI;AAAA,IACpD;AAAA,IACA,IAAI,QAAQ,WAAW,GAAG;AAAA,MACxB,OAAO;AAAA,gBAAmB,QAAQ;AAAA,IACpC;AAAA,IACA,OAAO;AAAA;AAAA,EAGD,yBAAiB;AAAA;;;;ECpGzB,IAAM,wCAAsC;AAAA,EAC5C,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EAEN,MAAQ,UAAU;AAAA,EAClB,MAAQ;AAAA,EACR,MAAQ,MAAM;AAAA,EACd,MAAQ,QAAQ;AAAA,EAChB,MAAQ;AAAA;AAAA,EAER,MAAM,gBAAgB,aAAa;AAAA,IAOjC,WAAW,CAAC,MAAM;AAAA,MAChB,MAAM;AAAA,MAEN,KAAK,WAAW,CAAC;AAAA,MAEjB,KAAK,UAAU,CAAC;AAAA,MAChB,KAAK,SAAS;AAAA,MACd,KAAK,sBAAsB;AAAA,MAC3B,KAAK,wBAAwB;AAAA,MAE7B,KAAK,sBAAsB,CAAC;AAAA,MAC5B,KAAK,QAAQ,KAAK;AAAA,MAElB,KAAK,OAAO,CAAC;AAAA,MACb,KAAK,UAAU,CAAC;AAAA,MAChB,KAAK,gBAAgB,CAAC;AAAA,MACtB,KAAK,cAAc;AAAA,MACnB,KAAK,QAAQ,QAAQ;AAAA,MACrB,KAAK,gBAAgB,CAAC;AAAA,MACtB,KAAK,sBAAsB,CAAC;AAAA,MAC5B,KAAK,4BAA4B;AAAA,MACjC,KAAK,iBAAiB;AAAA,MACtB,KAAK,qBAAqB;AAAA,MAC1B,KAAK,kBAAkB;AAAA,MACvB,KAAK,iBAAiB;AAAA,MACtB,KAAK,sBAAsB;AAAA,MAC3B,KAAK,gBAAgB;AAAA,MACrB,KAAK,WAAW,CAAC;AAAA,MACjB,KAAK,+BAA+B;AAAA,MACpC,KAAK,eAAe;AAAA,MACpB,KAAK,WAAW;AAAA,MAChB,KAAK,mBAAmB;AAAA,MACxB,KAAK,2BAA2B;AAAA,MAChC,KAAK,sBAAsB;AAAA,MAC3B,KAAK,kBAAkB,CAAC;AAAA,MAExB,KAAK,sBAAsB;AAAA,MAC3B,KAAK,4BAA4B;AAAA,MACjC,KAAK,cAAc;AAAA,MAGnB,KAAK,uBAAuB;AAAA,QAC1B,UAAU,CAAC,QAAQ,SAAQ,OAAO,MAAM,GAAG;AAAA,QAC3C,UAAU,CAAC,QAAQ,SAAQ,OAAO,MAAM,GAAG;AAAA,QAC3C,aAAa,CAAC,KAAK,UAAU,MAAM,GAAG;AAAA,QACtC,iBAAiB,MACf,SAAQ,OAAO,QAAQ,SAAQ,OAAO,UAAU;AAAA,QAClD,iBAAiB,MACf,SAAQ,OAAO,QAAQ,SAAQ,OAAO,UAAU;AAAA,QAClD,iBAAiB,MACf,SAAS,MAAM,SAAQ,OAAO,SAAS,SAAQ,OAAO,YAAY;AAAA,QACpE,iBAAiB,MACf,SAAS,MAAM,SAAQ,OAAO,SAAS,SAAQ,OAAO,YAAY;AAAA,QACpE,YAAY,CAAC,QAAQ,WAAW,GAAG;AAAA,MACrC;AAAA,MAEA,KAAK,UAAU;AAAA,MAEf,KAAK,cAAc;AAAA,MACnB,KAAK,0BAA0B;AAAA,MAE/B,KAAK,eAAe;AAAA,MACpB,KAAK,qBAAqB,CAAC;AAAA,MAE3B,KAAK,oBAAoB;AAAA,MAEzB,KAAK,uBAAuB;AAAA,MAE5B,KAAK,sBAAsB;AAAA;AAAA,IAW7B,qBAAqB,CAAC,eAAe;AAAA,MACnC,KAAK,uBAAuB,cAAc;AAAA,MAC1C,KAAK,cAAc,cAAc;AAAA,MACjC,KAAK,eAAe,cAAc;AAAA,MAClC,KAAK,qBAAqB,cAAc;AAAA,MACxC,KAAK,gBAAgB,cAAc;AAAA,MACnC,KAAK,4BAA4B,cAAc;AAAA,MAC/C,KAAK,+BACH,cAAc;AAAA,MAChB,KAAK,wBAAwB,cAAc;AAAA,MAC3C,KAAK,2BAA2B,cAAc;AAAA,MAC9C,KAAK,sBAAsB,cAAc;AAAA,MACzC,KAAK,4BAA4B,cAAc;AAAA,MAE/C,OAAO;AAAA;AAAA,IAQT,uBAAuB,GAAG;AAAA,MACxB,MAAM,SAAS,CAAC;AAAA,MAEhB,SAAS,UAAU,KAAM,SAAS,UAAU,QAAQ,QAAQ;AAAA,QAC1D,OAAO,KAAK,OAAO;AAAA,MACrB;AAAA,MACA,OAAO;AAAA;AAAA,IA4BT,OAAO,CAAC,aAAa,sBAAsB,UAAU;AAAA,MACnD,IAAI,OAAO;AAAA,MACX,IAAI,OAAO;AAAA,MACX,IAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAAA,QAC7C,OAAO;AAAA,QACP,OAAO;AAAA,MACT;AAAA,MACA,OAAO,QAAQ,CAAC;AAAA,MAChB,SAAS,MAAM,QAAQ,YAAY,MAAM,eAAe;AAAA,MAExD,MAAM,MAAM,KAAK,cAAc,IAAI;AAAA,MACnC,IAAI,MAAM;AAAA,QACR,IAAI,YAAY,IAAI;AAAA,QACpB,IAAI,qBAAqB;AAAA,MAC3B;AAAA,MACA,IAAI,KAAK;AAAA,QAAW,KAAK,sBAAsB,IAAI;AAAA,MACnD,IAAI,UAAU,CAAC,EAAE,KAAK,UAAU,KAAK;AAAA,MACrC,IAAI,kBAAkB,KAAK,kBAAkB;AAAA,MAC7C,IAAI;AAAA,QAAM,IAAI,UAAU,IAAI;AAAA,MAC5B,KAAK,iBAAiB,GAAG;AAAA,MACzB,IAAI,SAAS;AAAA,MACb,IAAI,sBAAsB,IAAI;AAAA,MAE9B,IAAI;AAAA,QAAM,OAAO;AAAA,MACjB,OAAO;AAAA;AAAA,IAaT,aAAa,CAAC,MAAM;AAAA,MAClB,OAAO,IAAI,QAAQ,IAAI;AAAA;AAAA,IAUzB,UAAU,GAAG;AAAA,MACX,OAAO,OAAO,OAAO,IAAI,MAAQ,KAAK,cAAc,CAAC;AAAA;AAAA,IAWvD,aAAa,CAAC,eAAe;AAAA,MAC3B,IAAI,kBAAkB;AAAA,QAAW,OAAO,KAAK;AAAA,MAE7C,KAAK,qBAAqB;AAAA,MAC1B,OAAO;AAAA;AAAA,IA0BT,eAAe,CAAC,eAAe;AAAA,MAC7B,IAAI,kBAAkB;AAAA,QAAW,OAAO,KAAK;AAAA,MAE7C,KAAK,uBAAuB;AAAA,WACvB,KAAK;AAAA,WACL;AAAA,MACL;AAAA,MACA,OAAO;AAAA;AAAA,IAST,kBAAkB,CAAC,cAAc,MAAM;AAAA,MACrC,IAAI,OAAO,gBAAgB;AAAA,QAAU,cAAc,CAAC,CAAC;AAAA,MACrD,KAAK,sBAAsB;AAAA,MAC3B,OAAO;AAAA;AAAA,IAST,wBAAwB,CAAC,oBAAoB,MAAM;AAAA,MACjD,KAAK,4BAA4B,CAAC,CAAC;AAAA,MACnC,OAAO;AAAA;AAAA,IAaT,UAAU,CAAC,KAAK,MAAM;AAAA,MACpB,IAAI,CAAC,IAAI,OAAO;AAAA,QACd,MAAM,IAAI,MAAM;AAAA,2DACqC;AAAA,MACvD;AAAA,MAEA,OAAO,QAAQ,CAAC;AAAA,MAChB,IAAI,KAAK;AAAA,QAAW,KAAK,sBAAsB,IAAI;AAAA,MACnD,IAAI,KAAK,UAAU,KAAK;AAAA,QAAQ,IAAI,UAAU;AAAA,MAE9C,KAAK,iBAAiB,GAAG;AAAA,MACzB,IAAI,SAAS;AAAA,MACb,IAAI,2BAA2B;AAAA,MAE/B,OAAO;AAAA;AAAA,IAcT,cAAc,CAAC,MAAM,aAAa;AAAA,MAChC,OAAO,IAAI,SAAS,MAAM,WAAW;AAAA;AAAA,IAmBvC,QAAQ,CAAC,MAAM,aAAa,UAAU,cAAc;AAAA,MAClD,MAAM,WAAW,KAAK,eAAe,MAAM,WAAW;AAAA,MACtD,IAAI,OAAO,aAAa,YAAY;AAAA,QAClC,SAAS,QAAQ,YAAY,EAAE,UAAU,QAAQ;AAAA,MACnD,EAAO;AAAA,QACL,SAAS,QAAQ,QAAQ;AAAA;AAAA,MAE3B,KAAK,YAAY,QAAQ;AAAA,MACzB,OAAO;AAAA;AAAA,IAeT,SAAS,CAAC,OAAO;AAAA,MACf,MACG,KAAK,EACL,MAAM,IAAI,EACV,QAAQ,CAAC,WAAW;AAAA,QACnB,KAAK,SAAS,MAAM;AAAA,OACrB;AAAA,MACH,OAAO;AAAA;AAAA,IAST,WAAW,CAAC,UAAU;AAAA,MACpB,MAAM,mBAAmB,KAAK,oBAAoB,MAAM,EAAE,EAAE;AAAA,MAC5D,IAAI,kBAAkB,UAAU;AAAA,QAC9B,MAAM,IAAI,MACR,2CAA2C,iBAAiB,KAAK,IACnE;AAAA,MACF;AAAA,MACA,IACE,SAAS,YACT,SAAS,iBAAiB,aAC1B,SAAS,aAAa,WACtB;AAAA,QACA,MAAM,IAAI,MACR,2DAA2D,SAAS,KAAK,IAC3E;AAAA,MACF;AAAA,MACA,KAAK,oBAAoB,KAAK,QAAQ;AAAA,MACtC,OAAO;AAAA;AAAA,IAiBT,WAAW,CAAC,qBAAqB,aAAa;AAAA,MAC5C,IAAI,OAAO,wBAAwB,WAAW;AAAA,QAC5C,KAAK,0BAA0B;AAAA,QAC/B,IAAI,uBAAuB,KAAK,sBAAsB;AAAA,UAEpD,KAAK,kBAAkB,KAAK,gBAAgB,CAAC;AAAA,QAC/C;AAAA,QACA,OAAO;AAAA,MACT;AAAA,MAEA,MAAM,cAAc,uBAAuB;AAAA,MAC3C,SAAS,UAAU,YAAY,YAAY,MAAM,eAAe;AAAA,MAChE,MAAM,kBAAkB,eAAe;AAAA,MAEvC,MAAM,cAAc,KAAK,cAAc,QAAQ;AAAA,MAC/C,YAAY,WAAW,KAAK;AAAA,MAC5B,IAAI;AAAA,QAAU,YAAY,UAAU,QAAQ;AAAA,MAC5C,IAAI;AAAA,QAAiB,YAAY,YAAY,eAAe;AAAA,MAE5D,KAAK,0BAA0B;AAAA,MAC/B,KAAK,eAAe;AAAA,MAEpB,IAAI,uBAAuB;AAAA,QAAa,KAAK,kBAAkB,WAAW;AAAA,MAE1E,OAAO;AAAA;AAAA,IAUT,cAAc,CAAC,aAAa,uBAAuB;AAAA,MAGjD,IAAI,OAAO,gBAAgB,UAAU;AAAA,QACnC,KAAK,YAAY,aAAa,qBAAqB;AAAA,QACnD,OAAO;AAAA,MACT;AAAA,MAEA,KAAK,0BAA0B;AAAA,MAC/B,KAAK,eAAe;AAAA,MACpB,KAAK,kBAAkB,WAAW;AAAA,MAClC,OAAO;AAAA;AAAA,IAST,eAAe,GAAG;AAAA,MAChB,MAAM,yBACJ,KAAK,4BACJ,KAAK,SAAS,UACb,CAAC,KAAK,kBACN,CAAC,KAAK,aAAa,MAAM;AAAA,MAE7B,IAAI,wBAAwB;AAAA,QAC1B,IAAI,KAAK,iBAAiB,WAAW;AAAA,UACnC,KAAK,YAAY,WAAW,SAAS;AAAA,QACvC;AAAA,QACA,OAAO,KAAK;AAAA,MACd;AAAA,MACA,OAAO;AAAA;AAAA,IAWT,IAAI,CAAC,OAAO,UAAU;AAAA,MACpB,MAAM,gBAAgB,CAAC,iBAAiB,aAAa,YAAY;AAAA,MACjE,IAAI,CAAC,cAAc,SAAS,KAAK,GAAG;AAAA,QAClC,MAAM,IAAI,MAAM,gDAAgD;AAAA,oBAClD,cAAc,KAAK,MAAM,IAAI;AAAA,MAC7C;AAAA,MACA,IAAI,KAAK,gBAAgB,QAAQ;AAAA,QAC/B,KAAK,gBAAgB,OAAO,KAAK,QAAQ;AAAA,MAC3C,EAAO;AAAA,QACL,KAAK,gBAAgB,SAAS,CAAC,QAAQ;AAAA;AAAA,MAEzC,OAAO;AAAA;AAAA,IAUT,YAAY,CAAC,IAAI;AAAA,MACf,IAAI,IAAI;AAAA,QACN,KAAK,gBAAgB;AAAA,MACvB,EAAO;AAAA,QACL,KAAK,gBAAgB,CAAC,QAAQ;AAAA,UAC5B,IAAI,IAAI,SAAS,oCAAoC;AAAA,YACnD,MAAM;AAAA,UACR;AAAA;AAAA;AAAA,MAKJ,OAAO;AAAA;AAAA,IAaT,KAAK,CAAC,UAAU,MAAM,SAAS;AAAA,MAC7B,IAAI,KAAK,eAAe;AAAA,QACtB,KAAK,cAAc,IAAI,eAAe,UAAU,MAAM,OAAO,CAAC;AAAA,MAEhE;AAAA,MACA,SAAQ,KAAK,QAAQ;AAAA;AAAA,IAkBvB,MAAM,CAAC,IAAI;AAAA,MACT,MAAM,WAAW,CAAC,SAAS;AAAA,QAEzB,MAAM,oBAAoB,KAAK,oBAAoB;AAAA,QACnD,MAAM,aAAa,KAAK,MAAM,GAAG,iBAAiB;AAAA,QAClD,IAAI,KAAK,2BAA2B;AAAA,UAClC,WAAW,qBAAqB;AAAA,QAClC,EAAO;AAAA,UACL,WAAW,qBAAqB,KAAK,KAAK;AAAA;AAAA,QAE5C,WAAW,KAAK,IAAI;AAAA,QAEpB,OAAO,GAAG,MAAM,MAAM,UAAU;AAAA;AAAA,MAElC,KAAK,iBAAiB;AAAA,MACtB,OAAO;AAAA;AAAA,IAcT,YAAY,CAAC,OAAO,aAAa;AAAA,MAC/B,OAAO,IAAI,OAAO,OAAO,WAAW;AAAA;AAAA,IAatC,aAAa,CAAC,QAAQ,OAAO,UAAU,wBAAwB;AAAA,MAC7D,IAAI;AAAA,QACF,OAAO,OAAO,SAAS,OAAO,QAAQ;AAAA,QACtC,OAAO,KAAK;AAAA,QACZ,IAAI,IAAI,SAAS,6BAA6B;AAAA,UAC5C,MAAM,UAAU,GAAG,0BAA0B,IAAI;AAAA,UACjD,KAAK,MAAM,SAAS,EAAE,UAAU,IAAI,UAAU,MAAM,IAAI,KAAK,CAAC;AAAA,QAChE;AAAA,QACA,MAAM;AAAA;AAAA;AAAA,IAYV,eAAe,CAAC,QAAQ;AAAA,MACtB,MAAM,iBACH,OAAO,SAAS,KAAK,YAAY,OAAO,KAAK,KAC7C,OAAO,QAAQ,KAAK,YAAY,OAAO,IAAI;AAAA,MAC9C,IAAI,gBAAgB;AAAA,QAClB,MAAM,eACJ,OAAO,QAAQ,KAAK,YAAY,OAAO,IAAI,IACvC,OAAO,OACP,OAAO;AAAA,QACb,MAAM,IAAI,MAAM,sBAAsB,OAAO,SAAS,KAAK,SAAS,gBAAgB,KAAK,qCAAqC;AAAA,6BACvG,eAAe,QAAQ;AAAA,MAChD;AAAA,MAEA,KAAK,iBAAiB,MAAM;AAAA,MAC5B,KAAK,QAAQ,KAAK,MAAM;AAAA;AAAA,IAW1B,gBAAgB,CAAC,SAAS;AAAA,MACxB,MAAM,UAAU,CAAC,QAAQ;AAAA,QACvB,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,OAAO,IAAI,QAAQ,CAAC;AAAA;AAAA,MAG1C,MAAM,cAAc,QAAQ,OAAO,EAAE,KAAK,CAAC,SACzC,KAAK,aAAa,IAAI,CACxB;AAAA,MACA,IAAI,aAAa;AAAA,QACf,MAAM,cAAc,QAAQ,KAAK,aAAa,WAAW,CAAC,EAAE,KAAK,GAAG;AAAA,QACpE,MAAM,SAAS,QAAQ,OAAO,EAAE,KAAK,GAAG;AAAA,QACxC,MAAM,IAAI,MACR,uBAAuB,oCAAoC,cAC7D;AAAA,MACF;AAAA,MAEA,KAAK,kBAAkB,OAAO;AAAA,MAC9B,KAAK,SAAS,KAAK,OAAO;AAAA;AAAA,IAS5B,SAAS,CAAC,QAAQ;AAAA,MAChB,KAAK,gBAAgB,MAAM;AAAA,MAE3B,MAAM,QAAQ,OAAO,KAAK;AAAA,MAC1B,MAAM,OAAO,OAAO,cAAc;AAAA,MAGlC,IAAI,OAAO,QAAQ;AAAA,QAEjB,MAAM,mBAAmB,OAAO,KAAK,QAAQ,UAAU,IAAI;AAAA,QAC3D,IAAI,CAAC,KAAK,YAAY,gBAAgB,GAAG;AAAA,UACvC,KAAK,yBACH,MACA,OAAO,iBAAiB,YAAY,OAAO,OAAO,cAClD,SACF;AAAA,QACF;AAAA,MACF,EAAO,SAAI,OAAO,iBAAiB,WAAW;AAAA,QAC5C,KAAK,yBAAyB,MAAM,OAAO,cAAc,SAAS;AAAA,MACpE;AAAA,MAGA,MAAM,oBAAoB,CAAC,KAAK,qBAAqB,gBAAgB;AAAA,QAGnE,IAAI,OAAO,QAAQ,OAAO,cAAc,WAAW;AAAA,UACjD,MAAM,OAAO;AAAA,QACf;AAAA,QAGA,MAAM,WAAW,KAAK,eAAe,IAAI;AAAA,QACzC,IAAI,QAAQ,QAAQ,OAAO,UAAU;AAAA,UACnC,MAAM,KAAK,cAAc,QAAQ,KAAK,UAAU,mBAAmB;AAAA,QACrE,EAAO,SAAI,QAAQ,QAAQ,OAAO,UAAU;AAAA,UAC1C,MAAM,OAAO,cAAc,KAAK,QAAQ;AAAA,QAC1C;AAAA,QAGA,IAAI,OAAO,MAAM;AAAA,UACf,IAAI,OAAO,QAAQ;AAAA,YACjB,MAAM;AAAA,UACR,EAAO,SAAI,OAAO,UAAU,KAAK,OAAO,UAAU;AAAA,YAChD,MAAM;AAAA,UACR,EAAO;AAAA,YACL,MAAM;AAAA;AAAA,QAEV;AAAA,QACA,KAAK,yBAAyB,MAAM,KAAK,WAAW;AAAA;AAAA,MAGtD,KAAK,GAAG,YAAY,OAAO,CAAC,QAAQ;AAAA,QAClC,MAAM,sBAAsB,kBAAkB,OAAO,oBAAoB;AAAA,QACzE,kBAAkB,KAAK,qBAAqB,KAAK;AAAA,OAClD;AAAA,MAED,IAAI,OAAO,QAAQ;AAAA,QACjB,KAAK,GAAG,eAAe,OAAO,CAAC,QAAQ;AAAA,UACrC,MAAM,sBAAsB,kBAAkB,OAAO,iBAAiB,kBAAkB,OAAO;AAAA,UAC/F,kBAAkB,KAAK,qBAAqB,KAAK;AAAA,SAClD;AAAA,MACH;AAAA,MAEA,OAAO;AAAA;AAAA,IAST,SAAS,CAAC,QAAQ,OAAO,aAAa,IAAI,cAAc;AAAA,MACtD,IAAI,OAAO,UAAU,YAAY,iBAAiB,QAAQ;AAAA,QACxD,MAAM,IAAI,MACR,iFACF;AAAA,MACF;AAAA,MACA,MAAM,SAAS,KAAK,aAAa,OAAO,WAAW;AAAA,MACnD,OAAO,oBAAoB,CAAC,CAAC,OAAO,SAAS;AAAA,MAC7C,IAAI,OAAO,OAAO,YAAY;AAAA,QAC5B,OAAO,QAAQ,YAAY,EAAE,UAAU,EAAE;AAAA,MAC3C,EAAO,SAAI,cAAc,QAAQ;AAAA,QAE/B,MAAM,QAAQ;AAAA,QACd,KAAK,CAAC,KAAK,QAAQ;AAAA,UACjB,MAAM,IAAI,MAAM,KAAK,GAAG;AAAA,UACxB,OAAO,IAAI,EAAE,KAAK;AAAA;AAAA,QAEpB,OAAO,QAAQ,YAAY,EAAE,UAAU,EAAE;AAAA,MAC3C,EAAO;AAAA,QACL,OAAO,QAAQ,EAAE;AAAA;AAAA,MAGnB,OAAO,KAAK,UAAU,MAAM;AAAA;AAAA,IAyB9B,MAAM,CAAC,OAAO,aAAa,UAAU,cAAc;AAAA,MACjD,OAAO,KAAK,UAAU,CAAC,GAAG,OAAO,aAAa,UAAU,YAAY;AAAA;AAAA,IAgBtE,cAAc,CAAC,OAAO,aAAa,UAAU,cAAc;AAAA,MACzD,OAAO,KAAK,UACV,EAAE,WAAW,KAAK,GAClB,OACA,aACA,UACA,YACF;AAAA;AAAA,IAcF,2BAA2B,CAAC,UAAU,MAAM;AAAA,MAC1C,KAAK,+BAA+B,CAAC,CAAC;AAAA,MACtC,OAAO;AAAA;AAAA,IAST,kBAAkB,CAAC,eAAe,MAAM;AAAA,MACtC,KAAK,sBAAsB,CAAC,CAAC;AAAA,MAC7B,OAAO;AAAA;AAAA,IAST,oBAAoB,CAAC,cAAc,MAAM;AAAA,MACvC,KAAK,wBAAwB,CAAC,CAAC;AAAA,MAC/B,OAAO;AAAA;AAAA,IAWT,uBAAuB,CAAC,aAAa,MAAM;AAAA,MACzC,KAAK,2BAA2B,CAAC,CAAC;AAAA,MAClC,OAAO;AAAA;AAAA,IAYT,kBAAkB,CAAC,cAAc,MAAM;AAAA,MACrC,KAAK,sBAAsB,CAAC,CAAC;AAAA,MAC7B,KAAK,2BAA2B;AAAA,MAChC,OAAO;AAAA;AAAA,IAOT,0BAA0B,GAAG;AAAA,MAC3B,IACE,KAAK,UACL,KAAK,uBACL,CAAC,KAAK,OAAO,0BACb;AAAA,QACA,MAAM,IAAI,MACR,0CAA0C,KAAK,yEACjD;AAAA,MACF;AAAA;AAAA,IAWF,wBAAwB,CAAC,oBAAoB,MAAM;AAAA,MACjD,IAAI,KAAK,QAAQ,QAAQ;AAAA,QACvB,MAAM,IAAI,MAAM,wDAAwD;AAAA,MAC1E;AAAA,MACA,IAAI,OAAO,KAAK,KAAK,aAAa,EAAE,QAAQ;AAAA,QAC1C,MAAM,IAAI,MACR,+DACF;AAAA,MACF;AAAA,MACA,KAAK,4BAA4B,CAAC,CAAC;AAAA,MACnC,OAAO;AAAA;AAAA,IAUT,cAAc,CAAC,KAAK;AAAA,MAClB,IAAI,KAAK,2BAA2B;AAAA,QAClC,OAAO,KAAK;AAAA,MACd;AAAA,MACA,OAAO,KAAK,cAAc;AAAA;AAAA,IAW5B,cAAc,CAAC,KAAK,OAAO;AAAA,MACzB,OAAO,KAAK,yBAAyB,KAAK,OAAO,SAAS;AAAA;AAAA,IAY5D,wBAAwB,CAAC,KAAK,OAAO,QAAQ;AAAA,MAC3C,IAAI,KAAK,2BAA2B;AAAA,QAClC,KAAK,OAAO;AAAA,MACd,EAAO;AAAA,QACL,KAAK,cAAc,OAAO;AAAA;AAAA,MAE5B,KAAK,oBAAoB,OAAO;AAAA,MAChC,OAAO;AAAA;AAAA,IAWT,oBAAoB,CAAC,KAAK;AAAA,MACxB,OAAO,KAAK,oBAAoB;AAAA;AAAA,IAWlC,+BAA+B,CAAC,KAAK;AAAA,MAEnC,IAAI;AAAA,MACJ,KAAK,wBAAwB,EAAE,QAAQ,CAAC,QAAQ;AAAA,QAC9C,IAAI,IAAI,qBAAqB,GAAG,MAAM,WAAW;AAAA,UAC/C,SAAS,IAAI,qBAAqB,GAAG;AAAA,QACvC;AAAA,OACD;AAAA,MACD,OAAO;AAAA;AAAA,IAUT,gBAAgB,CAAC,MAAM,cAAc;AAAA,MACnC,IAAI,SAAS,aAAa,CAAC,MAAM,QAAQ,IAAI,GAAG;AAAA,QAC9C,MAAM,IAAI,MAAM,qDAAqD;AAAA,MACvE;AAAA,MACA,eAAe,gBAAgB,CAAC;AAAA,MAGhC,IAAI,SAAS,aAAa,aAAa,SAAS,WAAW;AAAA,QACzD,IAAI,SAAQ,UAAU,UAAU;AAAA,UAC9B,aAAa,OAAO;AAAA,QACtB;AAAA,QAEA,MAAM,WAAW,SAAQ,YAAY,CAAC;AAAA,QACtC,IACE,SAAS,SAAS,IAAI,KACtB,SAAS,SAAS,QAAQ,KAC1B,SAAS,SAAS,IAAI,KACtB,SAAS,SAAS,SAAS,GAC3B;AAAA,UACA,aAAa,OAAO;AAAA,QACtB;AAAA,MACF;AAAA,MAGA,IAAI,SAAS,WAAW;AAAA,QACtB,OAAO,SAAQ;AAAA,MACjB;AAAA,MACA,KAAK,UAAU,KAAK,MAAM;AAAA,MAG1B,IAAI;AAAA,MACJ,QAAQ,aAAa;AAAA,aACd;AAAA,aACA;AAAA,UACH,KAAK,cAAc,KAAK;AAAA,UACxB,WAAW,KAAK,MAAM,CAAC;AAAA,UACvB;AAAA,aACG;AAAA,UAEH,IAAI,SAAQ,YAAY;AAAA,YACtB,KAAK,cAAc,KAAK;AAAA,YACxB,WAAW,KAAK,MAAM,CAAC;AAAA,UACzB,EAAO;AAAA,YACL,WAAW,KAAK,MAAM,CAAC;AAAA;AAAA,UAEzB;AAAA,aACG;AAAA,UACH,WAAW,KAAK,MAAM,CAAC;AAAA,UACvB;AAAA,aACG;AAAA,UACH,WAAW,KAAK,MAAM,CAAC;AAAA,UACvB;AAAA;AAAA,UAEA,MAAM,IAAI,MACR,oCAAoC,aAAa,SACnD;AAAA;AAAA,MAIJ,IAAI,CAAC,KAAK,SAAS,KAAK;AAAA,QACtB,KAAK,iBAAiB,KAAK,WAAW;AAAA,MACxC,KAAK,QAAQ,KAAK,SAAS;AAAA,MAE3B,OAAO;AAAA;AAAA,IA0BT,KAAK,CAAC,MAAM,cAAc;AAAA,MACxB,KAAK,iBAAiB;AAAA,MACtB,MAAM,WAAW,KAAK,iBAAiB,MAAM,YAAY;AAAA,MACzD,KAAK,cAAc,CAAC,GAAG,QAAQ;AAAA,MAE/B,OAAO;AAAA;AAAA,SAwBH,WAAU,CAAC,MAAM,cAAc;AAAA,MACnC,KAAK,iBAAiB;AAAA,MACtB,MAAM,WAAW,KAAK,iBAAiB,MAAM,YAAY;AAAA,MACzD,MAAM,KAAK,cAAc,CAAC,GAAG,QAAQ;AAAA,MAErC,OAAO;AAAA;AAAA,IAGT,gBAAgB,GAAG;AAAA,MACjB,IAAI,KAAK,gBAAgB,MAAM;AAAA,QAC7B,KAAK,qBAAqB;AAAA,MAC5B,EAAO;AAAA,QACL,KAAK,wBAAwB;AAAA;AAAA;AAAA,IAUjC,oBAAoB,GAAG;AAAA,MACrB,KAAK,cAAc;AAAA,QAEjB,OAAO,KAAK;AAAA,QAGZ,eAAe,KAAK,KAAK,cAAc;AAAA,QACvC,qBAAqB,KAAK,KAAK,oBAAoB;AAAA,MACrD;AAAA;AAAA,IASF,uBAAuB,GAAG;AAAA,MACxB,IAAI,KAAK;AAAA,QACP,MAAM,IAAI,MAAM;AAAA,0FACoE;AAAA,MAGtF,KAAK,QAAQ,KAAK,YAAY;AAAA,MAC9B,KAAK,cAAc;AAAA,MACnB,KAAK,UAAU,CAAC;AAAA,MAEhB,KAAK,gBAAgB,KAAK,KAAK,YAAY,cAAc;AAAA,MACzD,KAAK,sBAAsB,KAAK,KAAK,YAAY,oBAAoB;AAAA,MAErE,KAAK,OAAO,CAAC;AAAA,MAEb,KAAK,gBAAgB,CAAC;AAAA;AAAA,IAUxB,0BAA0B,CAAC,gBAAgB,eAAe,gBAAgB;AAAA,MACxE,IAAI,IAAG,WAAW,cAAc;AAAA,QAAG;AAAA,MAEnC,MAAM,uBAAuB,gBACzB,wDAAwD,mBACxD;AAAA,MACJ,MAAM,oBAAoB,IAAI;AAAA,SACzB;AAAA;AAAA,KAEJ;AAAA,MACD,MAAM,IAAI,MAAM,iBAAiB;AAAA;AAAA,IASnC,kBAAkB,CAAC,YAAY,MAAM;AAAA,MACnC,OAAO,KAAK,MAAM;AAAA,MAClB,IAAI,iBAAiB;AAAA,MACrB,MAAM,YAAY,CAAC,OAAO,OAAO,QAAQ,QAAQ,MAAM;AAAA,MAEvD,SAAS,QAAQ,CAAC,SAAS,UAAU;AAAA,QAEnC,MAAM,WAAW,MAAK,QAAQ,SAAS,QAAQ;AAAA,QAC/C,IAAI,IAAG,WAAW,QAAQ;AAAA,UAAG,OAAO;AAAA,QAGpC,IAAI,UAAU,SAAS,MAAK,QAAQ,QAAQ,CAAC;AAAA,UAAG;AAAA,QAGhD,MAAM,WAAW,UAAU,KAAK,CAAC,QAC/B,IAAG,WAAW,GAAG,WAAW,KAAK,CACnC;AAAA,QACA,IAAI;AAAA,UAAU,OAAO,GAAG,WAAW;AAAA,QAEnC;AAAA;AAAA,MAIF,KAAK,iCAAiC;AAAA,MACtC,KAAK,4BAA4B;AAAA,MAGjC,IAAI,iBACF,WAAW,mBAAmB,GAAG,KAAK,SAAS,WAAW;AAAA,MAC5D,IAAI,gBAAgB,KAAK,kBAAkB;AAAA,MAC3C,IAAI,KAAK,aAAa;AAAA,QACpB,IAAI;AAAA,QACJ,IAAI;AAAA,UACF,qBAAqB,IAAG,aAAa,KAAK,WAAW;AAAA,UACrD,MAAM;AAAA,UACN,qBAAqB,KAAK;AAAA;AAAA,QAE5B,gBAAgB,MAAK,QACnB,MAAK,QAAQ,kBAAkB,GAC/B,aACF;AAAA,MACF;AAAA,MAGA,IAAI,eAAe;AAAA,QACjB,IAAI,YAAY,SAAS,eAAe,cAAc;AAAA,QAGtD,IAAI,CAAC,aAAa,CAAC,WAAW,mBAAmB,KAAK,aAAa;AAAA,UACjE,MAAM,aAAa,MAAK,SACtB,KAAK,aACL,MAAK,QAAQ,KAAK,WAAW,CAC/B;AAAA,UACA,IAAI,eAAe,KAAK,OAAO;AAAA,YAC7B,YAAY,SACV,eACA,GAAG,cAAc,WAAW,OAC9B;AAAA,UACF;AAAA,QACF;AAAA,QACA,iBAAiB,aAAa;AAAA,MAChC;AAAA,MAEA,iBAAiB,UAAU,SAAS,MAAK,QAAQ,cAAc,CAAC;AAAA,MAEhE,IAAI;AAAA,MACJ,IAAI,SAAQ,aAAa,SAAS;AAAA,QAChC,IAAI,gBAAgB;AAAA,UAClB,KAAK,QAAQ,cAAc;AAAA,UAE3B,OAAO,2BAA2B,SAAQ,QAAQ,EAAE,OAAO,IAAI;AAAA,UAE/D,OAAO,cAAa,MAAM,SAAQ,KAAK,IAAI,MAAM,EAAE,OAAO,UAAU,CAAC;AAAA,QACvE,EAAO;AAAA,UACL,OAAO,cAAa,MAAM,gBAAgB,MAAM,EAAE,OAAO,UAAU,CAAC;AAAA;AAAA,MAExE,EAAO;AAAA,QACL,KAAK,2BACH,gBACA,eACA,WAAW,KACb;AAAA,QACA,KAAK,QAAQ,cAAc;AAAA,QAE3B,OAAO,2BAA2B,SAAQ,QAAQ,EAAE,OAAO,IAAI;AAAA,QAC/D,OAAO,cAAa,MAAM,SAAQ,UAAU,MAAM,EAAE,OAAO,UAAU,CAAC;AAAA;AAAA,MAGxE,IAAI,CAAC,KAAK,QAAQ;AAAA,QAEhB,MAAM,UAAU,CAAC,WAAW,WAAW,WAAW,UAAU,QAAQ;AAAA,QACpE,QAAQ,QAAQ,CAAC,WAAW;AAAA,UAC1B,SAAQ,GAAG,QAAQ,MAAM;AAAA,YACvB,IAAI,KAAK,WAAW,SAAS,KAAK,aAAa,MAAM;AAAA,cAEnD,KAAK,KAAK,MAAM;AAAA,YAClB;AAAA,WACD;AAAA,SACF;AAAA,MACH;AAAA,MAGA,MAAM,eAAe,KAAK;AAAA,MAC1B,KAAK,GAAG,SAAS,CAAC,SAAS;AAAA,QACzB,OAAO,QAAQ;AAAA,QACf,IAAI,CAAC,cAAc;AAAA,UACjB,SAAQ,KAAK,IAAI;AAAA,QACnB,EAAO;AAAA,UACL,aACE,IAAI,eACF,MACA,oCACA,SACF,CACF;AAAA;AAAA,OAEH;AAAA,MACD,KAAK,GAAG,SAAS,CAAC,QAAQ;AAAA,QAExB,IAAI,IAAI,SAAS,UAAU;AAAA,UACzB,KAAK,2BACH,gBACA,eACA,WAAW,KACb;AAAA,QAEF,EAAO,SAAI,IAAI,SAAS,UAAU;AAAA,UAChC,MAAM,IAAI,MAAM,IAAI,gCAAgC;AAAA,QACtD;AAAA,QACA,IAAI,CAAC,cAAc;AAAA,UACjB,SAAQ,KAAK,CAAC;AAAA,QAChB,EAAO;AAAA,UACL,MAAM,eAAe,IAAI,eACvB,GACA,oCACA,SACF;AAAA,UACA,aAAa,cAAc;AAAA,UAC3B,aAAa,YAAY;AAAA;AAAA,OAE5B;AAAA,MAGD,KAAK,iBAAiB;AAAA;AAAA,IAOxB,mBAAmB,CAAC,aAAa,UAAU,SAAS;AAAA,MAClD,MAAM,aAAa,KAAK,aAAa,WAAW;AAAA,MAChD,IAAI,CAAC;AAAA,QAAY,KAAK,KAAK,EAAE,OAAO,KAAK,CAAC;AAAA,MAE1C,WAAW,iBAAiB;AAAA,MAC5B,IAAI;AAAA,MACJ,eAAe,KAAK,2BAClB,cACA,YACA,eACF;AAAA,MACA,eAAe,KAAK,aAAa,cAAc,MAAM;AAAA,QACnD,IAAI,WAAW,oBAAoB;AAAA,UACjC,KAAK,mBAAmB,YAAY,SAAS,OAAO,OAAO,CAAC;AAAA,QAC9D,EAAO;AAAA,UACL,OAAO,WAAW,cAAc,UAAU,OAAO;AAAA;AAAA,OAEpD;AAAA,MACD,OAAO;AAAA;AAAA,IAUT,oBAAoB,CAAC,gBAAgB;AAAA,MACnC,IAAI,CAAC,gBAAgB;AAAA,QACnB,KAAK,KAAK;AAAA,MACZ;AAAA,MACA,MAAM,aAAa,KAAK,aAAa,cAAc;AAAA,MACnD,IAAI,cAAc,CAAC,WAAW,oBAAoB;AAAA,QAChD,WAAW,KAAK;AAAA,MAClB;AAAA,MAGA,OAAO,KAAK,oBACV,gBACA,CAAC,GACD,CAAC,KAAK,eAAe,GAAG,QAAQ,KAAK,eAAe,GAAG,SAAS,QAAQ,CAC1E;AAAA;AAAA,IASF,uBAAuB,GAAG;AAAA,MAExB,KAAK,oBAAoB,QAAQ,CAAC,KAAK,MAAM;AAAA,QAC3C,IAAI,IAAI,YAAY,KAAK,KAAK,MAAM,MAAM;AAAA,UACxC,KAAK,gBAAgB,IAAI,KAAK,CAAC;AAAA,QACjC;AAAA,OACD;AAAA,MAED,IACE,KAAK,oBAAoB,SAAS,KAClC,KAAK,oBAAoB,KAAK,oBAAoB,SAAS,GAAG,UAC9D;AAAA,QACA;AAAA,MACF;AAAA,MACA,IAAI,KAAK,KAAK,SAAS,KAAK,oBAAoB,QAAQ;AAAA,QACtD,KAAK,iBAAiB,KAAK,IAAI;AAAA,MACjC;AAAA;AAAA,IASF,iBAAiB,GAAG;AAAA,MAClB,MAAM,aAAa,CAAC,UAAU,OAAO,aAAa;AAAA,QAEhD,IAAI,cAAc;AAAA,QAClB,IAAI,UAAU,QAAQ,SAAS,UAAU;AAAA,UACvC,MAAM,sBAAsB,kCAAkC,mCAAmC,SAAS,KAAK;AAAA,UAC/G,cAAc,KAAK,cACjB,UACA,OACA,UACA,mBACF;AAAA,QACF;AAAA,QACA,OAAO;AAAA;AAAA,MAGT,KAAK,wBAAwB;AAAA,MAE7B,MAAM,gBAAgB,CAAC;AAAA,MACvB,KAAK,oBAAoB,QAAQ,CAAC,aAAa,UAAU;AAAA,QACvD,IAAI,QAAQ,YAAY;AAAA,QACxB,IAAI,YAAY,UAAU;AAAA,UAExB,IAAI,QAAQ,KAAK,KAAK,QAAQ;AAAA,YAC5B,QAAQ,KAAK,KAAK,MAAM,KAAK;AAAA,YAC7B,IAAI,YAAY,UAAU;AAAA,cACxB,QAAQ,MAAM,OAAO,CAAC,WAAW,MAAM;AAAA,gBACrC,OAAO,WAAW,aAAa,GAAG,SAAS;AAAA,iBAC1C,YAAY,YAAY;AAAA,YAC7B;AAAA,UACF,EAAO,SAAI,UAAU,WAAW;AAAA,YAC9B,QAAQ,CAAC;AAAA,UACX;AAAA,QACF,EAAO,SAAI,QAAQ,KAAK,KAAK,QAAQ;AAAA,UACnC,QAAQ,KAAK,KAAK;AAAA,UAClB,IAAI,YAAY,UAAU;AAAA,YACxB,QAAQ,WAAW,aAAa,OAAO,YAAY,YAAY;AAAA,UACjE;AAAA,QACF;AAAA,QACA,cAAc,SAAS;AAAA,OACxB;AAAA,MACD,KAAK,gBAAgB;AAAA;AAAA,IAYvB,YAAY,CAAC,SAAS,IAAI;AAAA,MAExB,IAAI,SAAS,QAAQ,OAAO,QAAQ,SAAS,YAAY;AAAA,QAEvD,OAAO,QAAQ,KAAK,MAAM,GAAG,CAAC;AAAA,MAChC;AAAA,MAEA,OAAO,GAAG;AAAA;AAAA,IAWZ,iBAAiB,CAAC,SAAS,OAAO;AAAA,MAChC,IAAI,SAAS;AAAA,MACb,MAAM,QAAQ,CAAC;AAAA,MACf,KAAK,wBAAwB,EAC1B,QAAQ,EACR,OAAO,CAAC,QAAQ,IAAI,gBAAgB,WAAW,SAAS,EACxD,QAAQ,CAAC,kBAAkB;AAAA,QAC1B,cAAc,gBAAgB,OAAO,QAAQ,CAAC,aAAa;AAAA,UACzD,MAAM,KAAK,EAAE,eAAe,SAAS,CAAC;AAAA,SACvC;AAAA,OACF;AAAA,MACH,IAAI,UAAU,cAAc;AAAA,QAC1B,MAAM,QAAQ;AAAA,MAChB;AAAA,MAEA,MAAM,QAAQ,CAAC,eAAe;AAAA,QAC5B,SAAS,KAAK,aAAa,QAAQ,MAAM;AAAA,UACvC,OAAO,WAAW,SAAS,WAAW,eAAe,IAAI;AAAA,SAC1D;AAAA,OACF;AAAA,MACD,OAAO;AAAA;AAAA,IAYT,0BAA0B,CAAC,SAAS,YAAY,OAAO;AAAA,MACrD,IAAI,SAAS;AAAA,MACb,IAAI,KAAK,gBAAgB,WAAW,WAAW;AAAA,QAC7C,KAAK,gBAAgB,OAAO,QAAQ,CAAC,SAAS;AAAA,UAC5C,SAAS,KAAK,aAAa,QAAQ,MAAM;AAAA,YACvC,OAAO,KAAK,MAAM,UAAU;AAAA,WAC7B;AAAA,SACF;AAAA,MACH;AAAA,MACA,OAAO;AAAA;AAAA,IAUT,aAAa,CAAC,UAAU,SAAS;AAAA,MAC/B,MAAM,SAAS,KAAK,aAAa,OAAO;AAAA,MACxC,KAAK,iBAAiB;AAAA,MACtB,KAAK,qBAAqB;AAAA,MAC1B,WAAW,SAAS,OAAO,OAAO,QAAQ;AAAA,MAC1C,UAAU,OAAO;AAAA,MACjB,KAAK,OAAO,SAAS,OAAO,OAAO;AAAA,MAEnC,IAAI,YAAY,KAAK,aAAa,SAAS,EAAE,GAAG;AAAA,QAC9C,OAAO,KAAK,oBAAoB,SAAS,IAAI,SAAS,MAAM,CAAC,GAAG,OAAO;AAAA,MACzE;AAAA,MACA,IACE,KAAK,gBAAgB,KACrB,SAAS,OAAO,KAAK,gBAAgB,EAAE,KAAK,GAC5C;AAAA,QACA,OAAO,KAAK,qBAAqB,SAAS,EAAE;AAAA,MAC9C;AAAA,MACA,IAAI,KAAK,qBAAqB;AAAA,QAC5B,KAAK,uBAAuB,OAAO;AAAA,QACnC,OAAO,KAAK,oBACV,KAAK,qBACL,UACA,OACF;AAAA,MACF;AAAA,MACA,IACE,KAAK,SAAS,UACd,KAAK,KAAK,WAAW,KACrB,CAAC,KAAK,kBACN,CAAC,KAAK,qBACN;AAAA,QAEA,KAAK,KAAK,EAAE,OAAO,KAAK,CAAC;AAAA,MAC3B;AAAA,MAEA,KAAK,uBAAuB,OAAO,OAAO;AAAA,MAC1C,KAAK,iCAAiC;AAAA,MACtC,KAAK,4BAA4B;AAAA,MAGjC,MAAM,yBAAyB,MAAM;AAAA,QACnC,IAAI,OAAO,QAAQ,SAAS,GAAG;AAAA,UAC7B,KAAK,cAAc,OAAO,QAAQ,EAAE;AAAA,QACtC;AAAA;AAAA,MAGF,MAAM,eAAe,WAAW,KAAK,KAAK;AAAA,MAC1C,IAAI,KAAK,gBAAgB;AAAA,QACvB,uBAAuB;AAAA,QACvB,KAAK,kBAAkB;AAAA,QAEvB,IAAI;AAAA,QACJ,eAAe,KAAK,kBAAkB,cAAc,WAAW;AAAA,QAC/D,eAAe,KAAK,aAAa,cAAc,MAC7C,KAAK,eAAe,KAAK,aAAa,CACxC;AAAA,QACA,IAAI,KAAK,QAAQ;AAAA,UACf,eAAe,KAAK,aAAa,cAAc,MAAM;AAAA,YACnD,KAAK,OAAO,KAAK,cAAc,UAAU,OAAO;AAAA,WACjD;AAAA,QACH;AAAA,QACA,eAAe,KAAK,kBAAkB,cAAc,YAAY;AAAA,QAChE,OAAO;AAAA,MACT;AAAA,MACA,IAAI,KAAK,QAAQ,cAAc,YAAY,GAAG;AAAA,QAC5C,uBAAuB;AAAA,QACvB,KAAK,kBAAkB;AAAA,QACvB,KAAK,OAAO,KAAK,cAAc,UAAU,OAAO;AAAA,MAClD,EAAO,SAAI,SAAS,QAAQ;AAAA,QAC1B,IAAI,KAAK,aAAa,GAAG,GAAG;AAAA,UAE1B,OAAO,KAAK,oBAAoB,KAAK,UAAU,OAAO;AAAA,QACxD;AAAA,QACA,IAAI,KAAK,cAAc,WAAW,GAAG;AAAA,UAEnC,KAAK,KAAK,aAAa,UAAU,OAAO;AAAA,QAC1C,EAAO,SAAI,KAAK,SAAS,QAAQ;AAAA,UAC/B,KAAK,eAAe;AAAA,QACtB,EAAO;AAAA,UACL,uBAAuB;AAAA,UACvB,KAAK,kBAAkB;AAAA;AAAA,MAE3B,EAAO,SAAI,KAAK,SAAS,QAAQ;AAAA,QAC/B,uBAAuB;AAAA,QAEvB,KAAK,KAAK,EAAE,OAAO,KAAK,CAAC;AAAA,MAC3B,EAAO;AAAA,QACL,uBAAuB;AAAA,QACvB,KAAK,kBAAkB;AAAA;AAAA;AAAA,IAW3B,YAAY,CAAC,MAAM;AAAA,MACjB,IAAI,CAAC;AAAA,QAAM;AAAA,MACX,OAAO,KAAK,SAAS,KACnB,CAAC,QAAQ,IAAI,UAAU,QAAQ,IAAI,SAAS,SAAS,IAAI,CAC3D;AAAA;AAAA,IAWF,WAAW,CAAC,KAAK;AAAA,MACf,OAAO,KAAK,QAAQ,KAAK,CAAC,WAAW,OAAO,GAAG,GAAG,CAAC;AAAA;AAAA,IAUrD,gCAAgC,GAAG;AAAA,MAEjC,KAAK,wBAAwB,EAAE,QAAQ,CAAC,QAAQ;AAAA,QAC9C,IAAI,QAAQ,QAAQ,CAAC,aAAa;AAAA,UAChC,IACE,SAAS,aACT,IAAI,eAAe,SAAS,cAAc,CAAC,MAAM,WACjD;AAAA,YACA,IAAI,4BAA4B,QAAQ;AAAA,UAC1C;AAAA,SACD;AAAA,OACF;AAAA;AAAA,IAQH,gCAAgC,GAAG;AAAA,MACjC,MAAM,2BAA2B,KAAK,QAAQ,OAAO,CAAC,WAAW;AAAA,QAC/D,MAAM,YAAY,OAAO,cAAc;AAAA,QACvC,IAAI,KAAK,eAAe,SAAS,MAAM,WAAW;AAAA,UAChD,OAAO;AAAA,QACT;AAAA,QACA,OAAO,KAAK,qBAAqB,SAAS,MAAM;AAAA,OACjD;AAAA,MAED,MAAM,yBAAyB,yBAAyB,OACtD,CAAC,WAAW,OAAO,cAAc,SAAS,CAC5C;AAAA,MAEA,uBAAuB,QAAQ,CAAC,WAAW;AAAA,QACzC,MAAM,wBAAwB,yBAAyB,KAAK,CAAC,YAC3D,OAAO,cAAc,SAAS,QAAQ,cAAc,CAAC,CACvD;AAAA,QACA,IAAI,uBAAuB;AAAA,UACzB,KAAK,mBAAmB,QAAQ,qBAAqB;AAAA,QACvD;AAAA,OACD;AAAA;AAAA,IASH,2BAA2B,GAAG;AAAA,MAE5B,KAAK,wBAAwB,EAAE,QAAQ,CAAC,QAAQ;AAAA,QAC9C,IAAI,iCAAiC;AAAA,OACtC;AAAA;AAAA,IAqBH,YAAY,CAAC,MAAM;AAAA,MACjB,MAAM,WAAW,CAAC;AAAA,MAClB,MAAM,UAAU,CAAC;AAAA,MACjB,IAAI,OAAO;AAAA,MAEX,SAAS,WAAW,CAAC,KAAK;AAAA,QACxB,OAAO,IAAI,SAAS,KAAK,IAAI,OAAO;AAAA;AAAA,MAGtC,MAAM,oBAAoB,CAAC,QAAQ;AAAA,QAEjC,IAAI,CAAC,gCAAgC,KAAK,GAAG;AAAA,UAAG,OAAO;AAAA,QAEvD,OAAO,CAAC,KAAK,wBAAwB,EAAE,KAAK,CAAC,QAC3C,IAAI,QACD,IAAI,CAAC,QAAQ,IAAI,KAAK,EACtB,KAAK,CAAC,UAAU,QAAQ,KAAK,KAAK,CAAC,CACxC;AAAA;AAAA,MAIF,IAAI,uBAAuB;AAAA,MAC3B,IAAI,cAAc;AAAA,MAClB,IAAI,IAAI;AAAA,MACR,OAAO,IAAI,KAAK,UAAU,aAAa;AAAA,QACrC,MAAM,MAAM,eAAe,KAAK;AAAA,QAChC,cAAc;AAAA,QAGd,IAAI,QAAQ,MAAM;AAAA,UAChB,IAAI,SAAS;AAAA,YAAS,KAAK,KAAK,GAAG;AAAA,UACnC,KAAK,KAAK,GAAG,KAAK,MAAM,CAAC,CAAC;AAAA,UAC1B;AAAA,QACF;AAAA,QAEA,IACE,yBACC,CAAC,YAAY,GAAG,KAAK,kBAAkB,GAAG,IAC3C;AAAA,UACA,KAAK,KAAK,UAAU,qBAAqB,KAAK,KAAK,GAAG;AAAA,UACtD;AAAA,QACF;AAAA,QACA,uBAAuB;AAAA,QAEvB,IAAI,YAAY,GAAG,GAAG;AAAA,UACpB,MAAM,SAAS,KAAK,YAAY,GAAG;AAAA,UAEnC,IAAI,QAAQ;AAAA,YACV,IAAI,OAAO,UAAU;AAAA,cACnB,MAAM,QAAQ,KAAK;AAAA,cACnB,IAAI,UAAU;AAAA,gBAAW,KAAK,sBAAsB,MAAM;AAAA,cAC1D,KAAK,KAAK,UAAU,OAAO,KAAK,KAAK,KAAK;AAAA,YAC5C,EAAO,SAAI,OAAO,UAAU;AAAA,cAC1B,IAAI,QAAQ;AAAA,cAEZ,IACE,IAAI,KAAK,WACR,CAAC,YAAY,KAAK,EAAE,KAAK,kBAAkB,KAAK,EAAE,IACnD;AAAA,gBACA,QAAQ,KAAK;AAAA,cACf;AAAA,cACA,KAAK,KAAK,UAAU,OAAO,KAAK,KAAK,KAAK;AAAA,YAC5C,EAAO;AAAA,cAEL,KAAK,KAAK,UAAU,OAAO,KAAK,GAAG;AAAA;AAAA,YAErC,uBAAuB,OAAO,WAAW,SAAS;AAAA,YAClD;AAAA,UACF;AAAA,QACF;AAAA,QAGA,IAAI,IAAI,SAAS,KAAK,IAAI,OAAO,OAAO,IAAI,OAAO,KAAK;AAAA,UACtD,MAAM,SAAS,KAAK,YAAY,IAAI,IAAI,IAAI;AAAA,UAC5C,IAAI,QAAQ;AAAA,YACV,IACE,OAAO,YACN,OAAO,YAAY,KAAK,8BACzB;AAAA,cAEA,KAAK,KAAK,UAAU,OAAO,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC;AAAA,YACnD,EAAO;AAAA,cAEL,KAAK,KAAK,UAAU,OAAO,KAAK,GAAG;AAAA,cAEnC,cAAc,IAAI,IAAI,MAAM,CAAC;AAAA;AAAA,YAE/B;AAAA,UACF;AAAA,QACF;AAAA,QAGA,IAAI,YAAY,KAAK,GAAG,GAAG;AAAA,UACzB,MAAM,QAAQ,IAAI,QAAQ,GAAG;AAAA,UAC7B,MAAM,SAAS,KAAK,YAAY,IAAI,MAAM,GAAG,KAAK,CAAC;AAAA,UACnD,IAAI,WAAW,OAAO,YAAY,OAAO,WAAW;AAAA,YAClD,KAAK,KAAK,UAAU,OAAO,KAAK,KAAK,IAAI,MAAM,QAAQ,CAAC,CAAC;AAAA,YACzD;AAAA,UACF;AAAA,QACF;AAAA,QAOA,IACE,SAAS,YACT,YAAY,GAAG,KACf,EAAE,KAAK,SAAS,WAAW,KAAK,kBAAkB,GAAG,IACrD;AAAA,UACA,OAAO;AAAA,QACT;AAAA,QAGA,KACG,KAAK,4BAA4B,KAAK,wBACvC,SAAS,WAAW,KACpB,QAAQ,WAAW,GACnB;AAAA,UACA,IAAI,KAAK,aAAa,GAAG,GAAG;AAAA,YAC1B,SAAS,KAAK,GAAG;AAAA,YACjB,QAAQ,KAAK,GAAG,KAAK,MAAM,CAAC,CAAC;AAAA,YAC7B;AAAA,UACF,EAAO,SACL,KAAK,gBAAgB,KACrB,QAAQ,KAAK,gBAAgB,EAAE,KAAK,GACpC;AAAA,YACA,SAAS,KAAK,KAAK,GAAG,KAAK,MAAM,CAAC,CAAC;AAAA,YACnC;AAAA,UACF,EAAO,SAAI,KAAK,qBAAqB;AAAA,YACnC,QAAQ,KAAK,KAAK,GAAG,KAAK,MAAM,CAAC,CAAC;AAAA,YAClC;AAAA,UACF;AAAA,QACF;AAAA,QAGA,IAAI,KAAK,qBAAqB;AAAA,UAC5B,KAAK,KAAK,KAAK,GAAG,KAAK,MAAM,CAAC,CAAC;AAAA,UAC/B;AAAA,QACF;AAAA,QAGA,KAAK,KAAK,GAAG;AAAA,MACf;AAAA,MAEA,OAAO,EAAE,UAAU,QAAQ;AAAA;AAAA,IAQ7B,IAAI,GAAG;AAAA,MACL,IAAI,KAAK,2BAA2B;AAAA,QAElC,MAAM,SAAS,CAAC;AAAA,QAChB,MAAM,MAAM,KAAK,QAAQ;AAAA,QAEzB,SAAS,IAAI,EAAG,IAAI,KAAK,KAAK;AAAA,UAC5B,MAAM,MAAM,KAAK,QAAQ,GAAG,cAAc;AAAA,UAC1C,OAAO,OACL,QAAQ,KAAK,qBAAqB,KAAK,WAAW,KAAK;AAAA,QAC3D;AAAA,QACA,OAAO;AAAA,MACT;AAAA,MAEA,OAAO,KAAK;AAAA;AAAA,IAQd,eAAe,GAAG;AAAA,MAEhB,OAAO,KAAK,wBAAwB,EAAE,OACpC,CAAC,iBAAiB,QAAQ,OAAO,OAAO,iBAAiB,IAAI,KAAK,CAAC,GACnE,CAAC,CACH;AAAA;AAAA,IAWF,KAAK,CAAC,SAAS,cAAc;AAAA,MAE3B,KAAK,qBAAqB,YACxB,GAAG;AAAA,GACH,KAAK,qBAAqB,QAC5B;AAAA,MACA,IAAI,OAAO,KAAK,wBAAwB,UAAU;AAAA,QAChD,KAAK,qBAAqB,SAAS,GAAG,KAAK;AAAA,CAAuB;AAAA,MACpE,EAAO,SAAI,KAAK,qBAAqB;AAAA,QACnC,KAAK,qBAAqB,SAAS;AAAA,CAAI;AAAA,QACvC,KAAK,WAAW,EAAE,OAAO,KAAK,CAAC;AAAA,MACjC;AAAA,MAGA,MAAM,SAAS,gBAAgB,CAAC;AAAA,MAChC,MAAM,WAAW,OAAO,YAAY;AAAA,MACpC,MAAM,OAAO,OAAO,QAAQ;AAAA,MAC5B,KAAK,MAAM,UAAU,MAAM,OAAO;AAAA;AAAA,IASpC,gBAAgB,GAAG;AAAA,MACjB,KAAK,QAAQ,QAAQ,CAAC,WAAW;AAAA,QAC/B,IAAI,OAAO,UAAU,OAAO,UAAU,SAAQ,KAAK;AAAA,UACjD,MAAM,YAAY,OAAO,cAAc;AAAA,UAEvC,IACE,KAAK,eAAe,SAAS,MAAM,aACnC,CAAC,WAAW,UAAU,KAAK,EAAE,SAC3B,KAAK,qBAAqB,SAAS,CACrC,GACA;AAAA,YACA,IAAI,OAAO,YAAY,OAAO,UAAU;AAAA,cAGtC,KAAK,KAAK,aAAa,OAAO,KAAK,KAAK,SAAQ,IAAI,OAAO,OAAO;AAAA,YACpE,EAAO;AAAA,cAGL,KAAK,KAAK,aAAa,OAAO,KAAK,GAAG;AAAA;AAAA,UAE1C;AAAA,QACF;AAAA,OACD;AAAA;AAAA,IAQH,oBAAoB,GAAG;AAAA,MACrB,MAAM,aAAa,IAAI,YAAY,KAAK,OAAO;AAAA,MAC/C,MAAM,uBAAuB,CAAC,cAAc;AAAA,QAC1C,OACE,KAAK,eAAe,SAAS,MAAM,aACnC,CAAC,CAAC,WAAW,SAAS,EAAE,SAAS,KAAK,qBAAqB,SAAS,CAAC;AAAA;AAAA,MAGzE,KAAK,QACF,OACC,CAAC,WACC,OAAO,YAAY,aACnB,qBAAqB,OAAO,cAAc,CAAC,KAC3C,WAAW,gBACT,KAAK,eAAe,OAAO,cAAc,CAAC,GAC1C,MACF,CACJ,EACC,QAAQ,CAAC,WAAW;AAAA,QACnB,OAAO,KAAK,OAAO,OAAO,EACvB,OAAO,CAAC,eAAe,CAAC,qBAAqB,UAAU,CAAC,EACxD,QAAQ,CAAC,eAAe;AAAA,UACvB,KAAK,yBACH,YACA,OAAO,QAAQ,aACf,SACF;AAAA,SACD;AAAA,OACJ;AAAA;AAAA,IAUL,eAAe,CAAC,MAAM;AAAA,MACpB,MAAM,UAAU,qCAAqC;AAAA,MACrD,KAAK,MAAM,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAAA;AAAA,IAU3D,qBAAqB,CAAC,QAAQ;AAAA,MAC5B,MAAM,UAAU,kBAAkB,OAAO;AAAA,MACzC,KAAK,MAAM,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAAA;AAAA,IAUjE,2BAA2B,CAAC,QAAQ;AAAA,MAClC,MAAM,UAAU,2BAA2B,OAAO;AAAA,MAClD,KAAK,MAAM,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAAA;AAAA,IAUvE,kBAAkB,CAAC,QAAQ,mBAAmB;AAAA,MAG5C,MAAM,0BAA0B,CAAC,YAAW;AAAA,QAC1C,MAAM,YAAY,QAAO,cAAc;AAAA,QACvC,MAAM,cAAc,KAAK,eAAe,SAAS;AAAA,QACjD,MAAM,iBAAiB,KAAK,QAAQ,KAClC,CAAC,WAAW,OAAO,UAAU,cAAc,OAAO,cAAc,CAClE;AAAA,QACA,MAAM,iBAAiB,KAAK,QAAQ,KAClC,CAAC,WAAW,CAAC,OAAO,UAAU,cAAc,OAAO,cAAc,CACnE;AAAA,QACA,IACE,mBACE,eAAe,cAAc,aAAa,gBAAgB,SACzD,eAAe,cAAc,aAC5B,gBAAgB,eAAe,YACnC;AAAA,UACA,OAAO;AAAA,QACT;AAAA,QACA,OAAO,kBAAkB;AAAA;AAAA,MAG3B,MAAM,kBAAkB,CAAC,YAAW;AAAA,QAClC,MAAM,aAAa,wBAAwB,OAAM;AAAA,QACjD,MAAM,YAAY,WAAW,cAAc;AAAA,QAC3C,MAAM,SAAS,KAAK,qBAAqB,SAAS;AAAA,QAClD,IAAI,WAAW,OAAO;AAAA,UACpB,OAAO,yBAAyB,WAAW;AAAA,QAC7C;AAAA,QACA,OAAO,WAAW,WAAW;AAAA;AAAA,MAG/B,MAAM,UAAU,UAAU,gBAAgB,MAAM,yBAAyB,gBAAgB,iBAAiB;AAAA,MAC1G,KAAK,MAAM,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAAA;AAAA,IAU7D,aAAa,CAAC,MAAM;AAAA,MAClB,IAAI,KAAK;AAAA,QAAqB;AAAA,MAC9B,IAAI,aAAa;AAAA,MAEjB,IAAI,KAAK,WAAW,IAAI,KAAK,KAAK,2BAA2B;AAAA,QAE3D,IAAI,iBAAiB,CAAC;AAAA,QAEtB,IAAI,UAAU;AAAA,QACd,GAAG;AAAA,UACD,MAAM,YAAY,QACf,WAAW,EACX,eAAe,OAAO,EACtB,OAAO,CAAC,WAAW,OAAO,IAAI,EAC9B,IAAI,CAAC,WAAW,OAAO,IAAI;AAAA,UAC9B,iBAAiB,eAAe,OAAO,SAAS;AAAA,UAChD,UAAU,QAAQ;AAAA,QACpB,SAAS,WAAW,CAAC,QAAQ;AAAA,QAC7B,aAAa,eAAe,MAAM,cAAc;AAAA,MAClD;AAAA,MAEA,MAAM,UAAU,0BAA0B,QAAQ;AAAA,MAClD,KAAK,MAAM,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAAA;AAAA,IAUzD,gBAAgB,CAAC,cAAc;AAAA,MAC7B,IAAI,KAAK;AAAA,QAAuB;AAAA,MAEhC,MAAM,WAAW,KAAK,oBAAoB;AAAA,MAC1C,MAAM,IAAI,aAAa,IAAI,KAAK;AAAA,MAChC,MAAM,gBAAgB,KAAK,SAAS,SAAS,KAAK,KAAK,OAAO;AAAA,MAC9D,MAAM,UAAU,4BAA4B,2BAA2B,oBAAoB,aAAa,aAAa;AAAA,MACrH,KAAK,MAAM,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAAA;AAAA,IAS3D,cAAc,GAAG;AAAA,MACf,MAAM,cAAc,KAAK,KAAK;AAAA,MAC9B,IAAI,aAAa;AAAA,MAEjB,IAAI,KAAK,2BAA2B;AAAA,QAClC,MAAM,iBAAiB,CAAC;AAAA,QACxB,KAAK,WAAW,EACb,gBAAgB,IAAI,EACpB,QAAQ,CAAC,YAAY;AAAA,UACpB,eAAe,KAAK,QAAQ,KAAK,CAAC;AAAA,UAElC,IAAI,QAAQ,MAAM;AAAA,YAAG,eAAe,KAAK,QAAQ,MAAM,CAAC;AAAA,SACzD;AAAA,QACH,aAAa,eAAe,aAAa,cAAc;AAAA,MACzD;AAAA,MAEA,MAAM,UAAU,2BAA2B,eAAe;AAAA,MAC1D,KAAK,MAAM,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAAA;AAAA,IAgB1D,OAAO,CAAC,KAAK,OAAO,aAAa;AAAA,MAC/B,IAAI,QAAQ;AAAA,QAAW,OAAO,KAAK;AAAA,MACnC,KAAK,WAAW;AAAA,MAChB,QAAQ,SAAS;AAAA,MACjB,cAAc,eAAe;AAAA,MAC7B,MAAM,gBAAgB,KAAK,aAAa,OAAO,WAAW;AAAA,MAC1D,KAAK,qBAAqB,cAAc,cAAc;AAAA,MACtD,KAAK,gBAAgB,aAAa;AAAA,MAElC,KAAK,GAAG,YAAY,cAAc,KAAK,GAAG,MAAM;AAAA,QAC9C,KAAK,qBAAqB,SAAS,GAAG;AAAA,CAAO;AAAA,QAC7C,KAAK,MAAM,GAAG,qBAAqB,GAAG;AAAA,OACvC;AAAA,MACD,OAAO;AAAA;AAAA,IAUT,WAAW,CAAC,KAAK,iBAAiB;AAAA,MAChC,IAAI,QAAQ,aAAa,oBAAoB;AAAA,QAC3C,OAAO,KAAK;AAAA,MACd,KAAK,eAAe;AAAA,MACpB,IAAI,iBAAiB;AAAA,QACnB,KAAK,mBAAmB;AAAA,MAC1B;AAAA,MACA,OAAO;AAAA;AAAA,IAST,OAAO,CAAC,KAAK;AAAA,MACX,IAAI,QAAQ;AAAA,QAAW,OAAO,KAAK;AAAA,MACnC,KAAK,WAAW;AAAA,MAChB,OAAO;AAAA;AAAA,IAYT,KAAK,CAAC,OAAO;AAAA,MACX,IAAI,UAAU;AAAA,QAAW,OAAO,KAAK,SAAS;AAAA,MAI9C,IAAI,UAAU;AAAA,MACd,IACE,KAAK,SAAS,WAAW,KACzB,KAAK,SAAS,KAAK,SAAS,SAAS,GAAG,oBACxC;AAAA,QAEA,UAAU,KAAK,SAAS,KAAK,SAAS,SAAS;AAAA,MACjD;AAAA,MAEA,IAAI,UAAU,QAAQ;AAAA,QACpB,MAAM,IAAI,MAAM,6CAA6C;AAAA,MAC/D,MAAM,kBAAkB,KAAK,QAAQ,aAAa,KAAK;AAAA,MACvD,IAAI,iBAAiB;AAAA,QAEnB,MAAM,cAAc,CAAC,gBAAgB,KAAK,CAAC,EACxC,OAAO,gBAAgB,QAAQ,CAAC,EAChC,KAAK,GAAG;AAAA,QACX,MAAM,IAAI,MACR,qBAAqB,sBAAsB,KAAK,KAAK,+BAA+B,cACtF;AAAA,MACF;AAAA,MAEA,QAAQ,SAAS,KAAK,KAAK;AAAA,MAC3B,OAAO;AAAA;AAAA,IAYT,OAAO,CAAC,SAAS;AAAA,MAEf,IAAI,YAAY;AAAA,QAAW,OAAO,KAAK;AAAA,MAEvC,QAAQ,QAAQ,CAAC,UAAU,KAAK,MAAM,KAAK,CAAC;AAAA,MAC5C,OAAO;AAAA;AAAA,IAUT,KAAK,CAAC,KAAK;AAAA,MACT,IAAI,QAAQ,WAAW;AAAA,QACrB,IAAI,KAAK;AAAA,UAAQ,OAAO,KAAK;AAAA,QAE7B,MAAM,OAAO,KAAK,oBAAoB,IAAI,CAAC,QAAQ;AAAA,UACjD,OAAO,qBAAqB,GAAG;AAAA,SAChC;AAAA,QACD,OAAO,CAAC,EACL,OACC,KAAK,QAAQ,UAAU,KAAK,gBAAgB,OAAO,cAAc,CAAC,GAClE,KAAK,SAAS,SAAS,cAAc,CAAC,GACtC,KAAK,oBAAoB,SAAS,OAAO,CAAC,CAC5C,EACC,KAAK,GAAG;AAAA,MACb;AAAA,MAEA,KAAK,SAAS;AAAA,MACd,OAAO;AAAA;AAAA,IAUT,IAAI,CAAC,KAAK;AAAA,MACR,IAAI,QAAQ;AAAA,QAAW,OAAO,KAAK;AAAA,MACnC,KAAK,QAAQ;AAAA,MACb,OAAO;AAAA;AAAA,IAUT,SAAS,CAAC,SAAS;AAAA,MACjB,IAAI,YAAY;AAAA,QAAW,OAAO,KAAK,qBAAqB;AAAA,MAC5D,KAAK,oBAAoB;AAAA,MACzB,OAAO;AAAA;AAAA,IAgBT,aAAa,CAAC,SAAS;AAAA,MACrB,IAAI,YAAY;AAAA,QAAW,OAAO,KAAK,wBAAwB;AAAA,MAC/D,KAAK,uBAAuB;AAAA,MAC5B,OAAO;AAAA;AAAA,IAgBT,YAAY,CAAC,SAAS;AAAA,MACpB,IAAI,YAAY;AAAA,QAAW,OAAO,KAAK,uBAAuB;AAAA,MAC9D,KAAK,sBAAsB;AAAA,MAC3B,OAAO;AAAA;AAAA,IAOT,gBAAgB,CAAC,QAAQ;AAAA,MACvB,IAAI,KAAK,uBAAuB,CAAC,OAAO;AAAA,QACtC,OAAO,UAAU,KAAK,mBAAmB;AAAA;AAAA,IAO7C,iBAAiB,CAAC,KAAK;AAAA,MACrB,IAAI,KAAK,wBAAwB,CAAC,IAAI,UAAU;AAAA,QAC9C,IAAI,UAAU,KAAK,oBAAoB;AAAA;AAAA,IAgB3C,gBAAgB,CAAC,UAAU;AAAA,MACzB,KAAK,QAAQ,MAAK,SAAS,UAAU,MAAK,QAAQ,QAAQ,CAAC;AAAA,MAE3D,OAAO;AAAA;AAAA,IAeT,aAAa,CAAC,OAAM;AAAA,MAClB,IAAI,UAAS;AAAA,QAAW,OAAO,KAAK;AAAA,MACpC,KAAK,iBAAiB;AAAA,MACtB,OAAO;AAAA;AAAA,IAUT,eAAe,CAAC,gBAAgB;AAAA,MAC9B,MAAM,SAAS,KAAK,WAAW;AAAA,MAC/B,MAAM,UAAU,KAAK,kBAAkB,cAAc;AAAA,MACrD,OAAO,eAAe;AAAA,QACpB,OAAO,QAAQ;AAAA,QACf,WAAW,QAAQ;AAAA,QACnB,iBAAiB,QAAQ;AAAA,MAC3B,CAAC;AAAA,MACD,MAAM,OAAO,OAAO,WAAW,MAAM,MAAM;AAAA,MAC3C,IAAI,QAAQ;AAAA,QAAW,OAAO;AAAA,MAC9B,OAAO,KAAK,qBAAqB,WAAW,IAAI;AAAA;AAAA,IAelD,iBAAiB,CAAC,gBAAgB;AAAA,MAChC,iBAAiB,kBAAkB,CAAC;AAAA,MACpC,MAAM,QAAQ,CAAC,CAAC,eAAe;AAAA,MAC/B,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI,OAAO;AAAA,QACT,YAAY,CAAC,QAAQ,KAAK,qBAAqB,SAAS,GAAG;AAAA,QAC3D,YAAY,KAAK,qBAAqB,gBAAgB;AAAA,QACtD,YAAY,KAAK,qBAAqB,gBAAgB;AAAA,MACxD,EAAO;AAAA,QACL,YAAY,CAAC,QAAQ,KAAK,qBAAqB,SAAS,GAAG;AAAA,QAC3D,YAAY,KAAK,qBAAqB,gBAAgB;AAAA,QACtD,YAAY,KAAK,qBAAqB,gBAAgB;AAAA;AAAA,MAExD,MAAM,QAAQ,CAAC,QAAQ;AAAA,QACrB,IAAI,CAAC;AAAA,UAAW,MAAM,KAAK,qBAAqB,WAAW,GAAG;AAAA,QAC9D,OAAO,UAAU,GAAG;AAAA;AAAA,MAEtB,OAAO,EAAE,OAAO,OAAO,WAAW,UAAU;AAAA;AAAA,IAW9C,UAAU,CAAC,gBAAgB;AAAA,MACzB,IAAI;AAAA,MACJ,IAAI,OAAO,mBAAmB,YAAY;AAAA,QACxC,qBAAqB;AAAA,QACrB,iBAAiB;AAAA,MACnB;AAAA,MAEA,MAAM,gBAAgB,KAAK,kBAAkB,cAAc;AAAA,MAE3D,MAAM,eAAe;AAAA,QACnB,OAAO,cAAc;AAAA,QACrB,OAAO,cAAc;AAAA,QACrB,SAAS;AAAA,MACX;AAAA,MAEA,KAAK,wBAAwB,EAC1B,QAAQ,EACR,QAAQ,CAAC,YAAY,QAAQ,KAAK,iBAAiB,YAAY,CAAC;AAAA,MACnE,KAAK,KAAK,cAAc,YAAY;AAAA,MAEpC,IAAI,kBAAkB,KAAK,gBAAgB,EAAE,OAAO,cAAc,MAAM,CAAC;AAAA,MACzE,IAAI,oBAAoB;AAAA,QACtB,kBAAkB,mBAAmB,eAAe;AAAA,QACpD,IACE,OAAO,oBAAoB,YAC3B,CAAC,OAAO,SAAS,eAAe,GAChC;AAAA,UACA,MAAM,IAAI,MAAM,sDAAsD;AAAA,QACxE;AAAA,MACF;AAAA,MACA,cAAc,MAAM,eAAe;AAAA,MAEnC,IAAI,KAAK,eAAe,GAAG,MAAM;AAAA,QAC/B,KAAK,KAAK,KAAK,eAAe,EAAE,IAAI;AAAA,MACtC;AAAA,MACA,KAAK,KAAK,aAAa,YAAY;AAAA,MACnC,KAAK,wBAAwB,EAAE,QAAQ,CAAC,YACtC,QAAQ,KAAK,gBAAgB,YAAY,CAC3C;AAAA;AAAA,IAgBF,UAAU,CAAC,OAAO,aAAa;AAAA,MAE7B,IAAI,OAAO,UAAU,WAAW;AAAA,QAC9B,IAAI,OAAO;AAAA,UACT,IAAI,KAAK,gBAAgB;AAAA,YAAM,KAAK,cAAc;AAAA,UAClD,IAAI,KAAK,qBAAqB;AAAA,YAE5B,KAAK,iBAAiB,KAAK,eAAe,CAAC;AAAA,UAC7C;AAAA,QACF,EAAO;AAAA,UACL,KAAK,cAAc;AAAA;AAAA,QAErB,OAAO;AAAA,MACT;AAAA,MAGA,KAAK,cAAc,KAAK,aACtB,SAAS,cACT,eAAe,0BACjB;AAAA,MAEA,IAAI,SAAS;AAAA,QAAa,KAAK,iBAAiB,KAAK,WAAW;AAAA,MAEhE,OAAO;AAAA;AAAA,IAUT,cAAc,GAAG;AAAA,MAEf,IAAI,KAAK,gBAAgB,WAAW;AAAA,QAClC,KAAK,WAAW,WAAW,SAAS;AAAA,MACtC;AAAA,MACA,OAAO,KAAK;AAAA;AAAA,IAUd,aAAa,CAAC,QAAQ;AAAA,MACpB,KAAK,cAAc;AAAA,MACnB,KAAK,iBAAiB,MAAM;AAAA,MAC5B,OAAO;AAAA;AAAA,IAWT,IAAI,CAAC,gBAAgB;AAAA,MACnB,KAAK,WAAW,cAAc;AAAA,MAC9B,IAAI,WAAW,OAAO,SAAQ,YAAY,CAAC;AAAA,MAC3C,IACE,aAAa,KACb,kBACA,OAAO,mBAAmB,cAC1B,eAAe,OACf;AAAA,QACA,WAAW;AAAA,MACb;AAAA,MAEA,KAAK,MAAM,UAAU,kBAAkB,cAAc;AAAA;AAAA,IAuBvD,WAAW,CAAC,UAAU,MAAM;AAAA,MAC1B,MAAM,gBAAgB,CAAC,aAAa,UAAU,SAAS,UAAU;AAAA,MACjE,IAAI,CAAC,cAAc,SAAS,QAAQ,GAAG;AAAA,QACrC,MAAM,IAAI,MAAM;AAAA,oBACF,cAAc,KAAK,MAAM,IAAI;AAAA,MAC7C;AAAA,MAEA,MAAM,YAAY,GAAG;AAAA,MACrB,KAAK,GAAG,WAAW,CAAqC,YAAY;AAAA,QAClE,IAAI;AAAA,QACJ,IAAI,OAAO,SAAS,YAAY;AAAA,UAC9B,UAAU,KAAK,EAAE,OAAO,QAAQ,OAAO,SAAS,QAAQ,QAAQ,CAAC;AAAA,QACnE,EAAO;AAAA,UACL,UAAU;AAAA;AAAA,QAGZ,IAAI,SAAS;AAAA,UACX,QAAQ,MAAM,GAAG;AAAA,CAAW;AAAA,QAC9B;AAAA,OACD;AAAA,MACD,OAAO;AAAA;AAAA,IAUT,sBAAsB,CAAC,MAAM;AAAA,MAC3B,MAAM,aAAa,KAAK,eAAe;AAAA,MACvC,MAAM,gBAAgB,cAAc,KAAK,KAAK,CAAC,QAAQ,WAAW,GAAG,GAAG,CAAC;AAAA,MACzE,IAAI,eAAe;AAAA,QACjB,KAAK,WAAW;AAAA,QAEhB,KAAK,MAAM,GAAG,2BAA2B,cAAc;AAAA,MACzD;AAAA;AAAA,EAEJ;AAAA,EAUA,SAAS,0BAA0B,CAAC,MAAM;AAAA,IAKxC,OAAO,KAAK,IAAI,CAAC,QAAQ;AAAA,MACvB,IAAI,CAAC,IAAI,WAAW,WAAW,GAAG;AAAA,QAChC,OAAO;AAAA,MACT;AAAA,MACA,IAAI;AAAA,MACJ,IAAI,YAAY;AAAA,MAChB,IAAI,YAAY;AAAA,MAChB,IAAI;AAAA,MACJ,KAAK,QAAQ,IAAI,MAAM,sBAAsB,OAAO,MAAM;AAAA,QAExD,cAAc,MAAM;AAAA,MACtB,EAAO,UACJ,QAAQ,IAAI,MAAM,oCAAoC,OAAO,MAC9D;AAAA,QACA,cAAc,MAAM;AAAA,QACpB,IAAI,QAAQ,KAAK,MAAM,EAAE,GAAG;AAAA,UAE1B,YAAY,MAAM;AAAA,QACpB,EAAO;AAAA,UAEL,YAAY,MAAM;AAAA;AAAA,MAEtB,EAAO,UACJ,QAAQ,IAAI,MAAM,0CAA0C,OAAO,MACpE;AAAA,QAEA,cAAc,MAAM;AAAA,QACpB,YAAY,MAAM;AAAA,QAClB,YAAY,MAAM;AAAA,MACpB;AAAA,MAEA,IAAI,eAAe,cAAc,KAAK;AAAA,QACpC,OAAO,GAAG,eAAe,aAAa,SAAS,SAAS,IAAI;AAAA,MAC9D;AAAA,MACA,OAAO;AAAA,KACR;AAAA;AAAA,EAOH,SAAS,QAAQ,GAAG;AAAA,IAalB,IACE,SAAQ,IAAI,YACZ,SAAQ,IAAI,gBAAgB,OAC5B,SAAQ,IAAI,gBAAgB;AAAA,MAE5B,OAAO;AAAA,IACT,IAAI,SAAQ,IAAI,eAAe,SAAQ,IAAI,mBAAmB;AAAA,MAC5D,OAAO;AAAA,IACT;AAAA;AAAA,EAGM,kBAAU;AAAA,EACV,mBAAW;AAAA;;;;ECxtFnB,MAAQ;AAAA,EACR,MAAQ;AAAA,EACR,MAAQ,gBAAgB;AAAA,EACxB,MAAQ;AAAA,EACR,MAAQ;AAAA,EAEA,kBAAU,IAAI;AAAA,EAEd,wBAAgB,CAAC,SAAS,IAAI,QAAQ,IAAI;AAAA,EAC1C,uBAAe,CAAC,OAAO,gBAAgB,IAAI,OAAO,OAAO,WAAW;AAAA,EACpE,yBAAiB,CAAC,MAAM,gBAAgB,IAAI,SAAS,MAAM,WAAW;AAAA,EAMtE,kBAAU;AAAA,EACV,iBAAS;AAAA,EACT,mBAAW;AAAA,EACX,eAAO;AAAA,EAEP,yBAAiB;AAAA,EACjB,+BAAuB;AAAA,EACvB,qCAA6B;AAAA;;;ACJrC,IAAM,SAAS;AACf,IAAM,KAAK;AA+BJ,SAAS,SAAY,CACxB,YACY;AAAA,EACZ,MAAM,OAAO,OAAO,eAAe,WAAW,aAAa,WAAW;AAAA,EACtE,MAAM,MAAM,OAAO,IAAI,SAAS,IAAI;AAAA,EACpC,OAAO;AAAA,IACH,GAAG,CAAC,UAA6B;AAAA,MAC7B,OAAQ,GAAG,QAA0B;AAAA;AAAA,IAEzC,GAAG,CAAC,OAAU;AAAA,MACV,GAAG,OAAO;AAAA;AAAA,IAEd,KAAK,GAAG;AAAA,MACJ,OAAO,GAAG;AAAA;AAAA,IAEd,SAAS,CAAC,SAAkB,OAAuC;AAAA,MAC/D,MAAM,WAAW,GAAG;AAAA,MACpB,IAAI,YAAY,QAAQ,OAAO,aAAa,UAAU;AAAA,QAClD,IAAI,CAAC,SAAS,MAAM,QAAQ,GAAG;AAAA,UAC3B,OAAO;AAAA,QACX;AAAA,MACJ;AAAA,MACA,MAAM,WAAW,QAAQ;AAAA,MACzB,GAAG,OAAO;AAAA,MACV,OAAO;AAAA;AAAA,EAEf;AAAA;;;AC/DJ,IAAM,qBAAqB,UACvB,uBACJ;AAcO,SAAS,4BAA4B,GAE5B;AAAA,EACZ,OAAO,mBAAmB,IAAI;AAAA;;;ACQlC,IAAM,oBAAoB;AAK1B,IAAM,wBAAwB,UAC1B,uBACJ;AAEA,SAAS,iBAAiB,CAAC,WAA2B;AAAA,EAClD,OAAO,OAAO,IAAI,iCAAiC,WAAW;AAAA;AAOlE,SAAS,oBAAoB,CAAC,OAA4C;AAAA,EACtE,OAAO,OAAO,KAAK,EAAE,MAAM,KAAK,EAAE,OAAO,OAAO,KAAK,CAAC;AAAA;AAG1D,SAAS,oBAAoB,CACzB,OACA,WACM;AAAA,EACN,MAAM,SAAS,qBAAqB,KAAK;AAAA,EACzC,MAAM,OAAO,IAAI,IAAI,MAAM;AAAA,EAE3B,WAAW,SAAS,qBAAqB,SAAS,GAAG;AAAA,IACjD,IAAI,CAAC,KAAK,IAAI,KAAK,GAAG;AAAA,MAClB,OAAO,KAAK,KAAK;AAAA,MACjB,KAAK,IAAI,KAAK;AAAA,IAClB;AAAA,EACJ;AAAA,EAEA,OAAO,OAAO,KAAK,GAAG;AAAA;AAG1B,SAAS,qBAAqB,CAAC,WAA2B;AAAA,EACtD,OAAO,qBAAqB,sBAAsB,IAAI,GAAG,SAAS;AAAA;AAGtE,SAAS,aAAa,CAClB,SACA,YACkB;AAAA,EAClB,OAAO,OAAO,KAAK,OAAO,EAAE,KACxB,CAAC,QAAQ,IAAI,YAAY,MAAM,WAAW,YAAY,CAC1D;AAAA;AAmBG,SAAS,oBAAoB,CAAC,KAAsC;AAAA,EACvE,MAAM,cAAc,IAAI,KAAK,QAAQ,cAAc,EAAE;AAAA,EACrD,OAAO,sBAAsB,GAAG,eAAe,IAAI,SAAS;AAAA;AAiBzD,SAAS,qBAAqB,CACjC,SACA,WACc;AAAA,EACd,MAAM,SAAS,KAAM,WAAW,CAAC,EAAG;AAAA,EACpC,MAAM,aAAa,cAAc,QAAQ,iBAAiB;AAAA,EAE1D,OAAO,cAAc,qBAAqB,qBACtC,aAAa,OAAO,cAAc,WAClC,sBAAsB,SAAS,CACnC;AAAA,EAEA,OAAO;AAAA;AA0BX,SAAS,cAAc,CAAC,SAAkC;AAAA,EACtD,OAAO,OAAO,YAAY,YAAY,YAAY,OAC5C,KAAM,QAA2B,IACjC,CAAC;AAAA;AAGX,SAAS,gCAAgC,CACrC,eACA,SAC6B;AAAA,EAC7B,OAAO,OAAO,mBAAmB;AAAA,IAC7B,MAAM,kBAAkB;AAAA,SACjB,eAAe;AAAA,MAClB,SAAS,QAAQ,eAAe,eAAe,KAAK,OAAO,CAAC;AAAA,IAChE;AAAA,IACA,MAAM,WACF,OAAO,kBAAkB,aACnB,MAAM,cAAc;AAAA,SACb;AAAA,MACH,MAAM;AAAA,IACV,CAAC,IACD;AAAA,IAEV,OAAO;AAAA,SACC,YAAY,CAAC;AAAA,MACjB,SAAS,QACL,eAAe,UAAU,WAAW,gBAAgB,OAAO,CAC/D;AAAA,IACJ;AAAA;AAAA;AASR,SAAS,8BAA8B,CACnC,cACA,UACA,SACI;AAAA,EACJ,MAAM,YACF,aAAa;AAAA,EAEjB,IAAI,UAAU,WAAW;AAAA,IACrB;AAAA,EACJ;AAAA,EAEA,IAAI,OAAO,UAAU,YAAY,YAAY;AAAA,IACzC,MAAM,IAAI,MAAM,+CAA+C;AAAA,EACnE;AAAA,EAEA,MAAM,kBAAkB,UAAU;AAAA,EAClC,UAAU,UAAU,SAAS,2BAA2B,CACpD,SACA,eACF;AAAA,IACE,OAAO,gBAAgB,KACnB,MACA,SACA,iCAAiC,eAAe,OAAO,CAC3D;AAAA;AAAA,EAGJ,OAAO,eAAe,WAAW,UAAU;AAAA,IACvC,OAAO;AAAA,EACX,CAAC;AAAA;AAGE,SAAS,yBAAyB,CACrC,cACA,WACI;AAAA,EACJ,+BACI,cACA,kBAAkB,SAAS,GAC3B,CAAC,YAAY,sBAAsB,SAAS,SAAS,CACzD;AAAA;;;ACpOG,IAAM,YAAY,sEAAsE,QAAQ,QAAQ,EAAE;AAAA;AAe1G,MAAM,cAAc;AAAA,EACH;AAAA,EAApB,WAAW,CAAS,gBAAyC,CAAC,GAAG;AAAA,IAA7C;AAAA;AAAA,MAEhB,MAAM,CAAC,eAA8B;AAAA,IACrC,KAAK,gBAAgB;AAAA;AAAA,MAGrB,QAAQ,GAAW;AAAA,IACnB,OAAO,KAAK,cAAc,YAAY,OAAO,KAAK,cAAc,WAAW;AAAA;AAAA,MAG3E,QAAQ,GAAyB;AAAA,IACjC,OAAO,KAAK,cAAc;AAAA;AAAA,MAG1B,UAAU,GAAiB;AAAA,IAC3B,OAAO,KAAK,cAAc,cAAc,CAAC;AAAA;AAAA,MAGzC,oBAAoB,GAAkC;AAAA,IACtD,OAAO,KAAK,cAAc,wBAAwB;AAAA;AAAA,MAGlD,QAAQ,GAAuB;AAAA,IAC/B,OAAO,KAAK,cAAc;AAAA;AAAA,MAG1B,QAAQ,GAAuB;AAAA,IAC/B,OAAO,KAAK,cAAc;AAAA;AAAA,MAG1B,MAAM,GAA6D;AAAA,IACnE,MAAM,SAAS,KAAK,cAAc;AAAA,IAClC,IAAI,QAAQ;AAAA,MACR,OAAO,OAAO,WAAW,aAAa,SAAS,MAAM;AAAA,IACzD;AAAA,IACA;AAAA;AAAA,MAGA,WAAW,GAAiF;AAAA,IAC5F,MAAM,cAAc,KAAK,cAAc;AAAA,IACvC,IAAI,aAAa;AAAA,MACb,OAAO,OAAO,gBAAgB,aAAa,cAAc,YAAY;AAAA,IACzE;AAAA,IACA;AAAA;AAAA,MAGA,OAAO,GAA4B;AAAA,IACnC,OAAO,KAAK,cAAc;AAAA;AAAA,MAG1B,WAAW,GAAmC;AAAA,IAC9C,OAAO,KAAK,cAAc;AAAA;AAElC;AAEO,IAAM,gBAAgB,IAAI;AAAA;AAK1B,MAAM,QAAQ;AAAA,EAKK;AAAA,SAHE,YAAY,IAAI,OAAO,mEAAqE,GAAG;AAAA,EAC/G;AAAA,EAER,WAAW,CAAW,gBAAgB,eAAe;AAAA,IAA/B;AAAA,IAClB,KAAK,aAAa,cAAc;AAAA;AAAA,EAGpC,cAAiC,IAAa,aAA2B;AAAA,IACrE,MAAM,OAAO,KAAK,MAAS;AAAA,IAC3B,KAAK,aAAa,KAAK,WAAW,OAAO,GAAG,WAAW;AAAA,IACvD,OAAO;AAAA;AAAA,EAGX,iBAAoC,IAAa,gBAA0C;AAAA,IACvF,MAAM,cAAc,eAAe,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE;AAAA,IACzD,OAAO,KAAK,eAAkB,GAAG,WAAW;AAAA;AAAA,EAGhD,kBAAqC,IAAa,iBAA4C;AAAA,IAC1F,MAAM,cAAc,gBAAgB,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE;AAAA,IAC5D,OAAO,KAAK,eAAkB,GAAG,WAAW;AAAA;AAAA,EAatC,UAAU,CAAC,MAA0C;AAAA,IAC3D,IAAI,CAAC,MAAM;AAAA,MACP,OAAO;AAAA,IACX;AAAA,IACA,OAAO,QAAQ,UAAU,KAAK,IAAI;AAAA;AAAA,OAGtB,QAAO,CAAC,SAAsB,eAAuE;AAAA,IACjH,QAAQ,KAAK,SAAS,MAAM,KAAK,kBAAkB,SAAS,aAAa;AAAA,IACzE,MAAM,WAAW,MAAM,KAAK,SAAS,KAAK,IAAI;AAAA,IAC9C,IAAI,aAAa,SAAS,UAAU,OAAO,SAAS,SAAS,MAAM;AAAA,MAC/D,OAAO;AAAA,IACX;AAAA,IACA,MAAM,IAAI,cAAc,UAAU,iCAAiC;AAAA;AAAA,OAGzD,kBAAiB,CAAC,SAAsB,eAAoD;AAAA,IACtG,IAAI,MAAM,KAAK,cAAc,WAAW,QAAQ;AAAA,IAChD,IAAI,QAAQ,UAAU,aAAa,OAAO,KAAK,QAAQ,KAAK,EAAE,WAAW,GAAG;AAAA,MAIxE,OAAO,MAAM,KAAK,cAAc,qBAAqB,QAAQ,KAAK;AAAA,IACtE;AAAA,IAEA,MAAM,UAAU,OAAO,OAAO,CAAC,GAAG,KAAK,cAAc,SAAS,QAAQ,OAAO;AAAA,IAC7E,OAAO,KAAK,OAAO,EAAE,QAAQ,SAAO,QAAQ,SAAS,YAAY,OAAO,QAAQ,OAAO,CAAC,CAAC;AAAA,IAEzF,MAAM,iBACF,OAAO,kBAAkB,aACnB,gBACA,YAAY;AAAA,IAEtB,MAAM,aAAa;AAAA,MACf,QAAQ,QAAQ;AAAA,MAChB;AAAA,MACA,MAAM,QAAQ;AAAA,MACd,aAAa,KAAK,cAAc;AAAA,IACpC;AAAA,IAEA,MAAM,iBAA8B;AAAA,SAC7B;AAAA,SACC,MAAM,eAAe;AAAA,QACrB,MAAM;AAAA,QACN;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,IAEA,IAAI;AAAA,IACJ,IAAI,WAAW,eAAe,IAAI,KAC1B,eAAe,gBAAgB,mBAChC,OAAO,eAAe,IAAI,GAAG;AAAA,MAClC,OAAO,eAAe;AAAA,IACxB,EAAO,SAAI,KAAK,WAAW,QAAQ,eAAe,GAAG;AAAA,MACnD,OAAO,KAAK,UAAU,eAAe,IAAI;AAAA,IAC3C,EAAO;AAAA,MACL,OAAO,eAAe;AAAA;AAAA,IAGxB,MAAM,OAAoB;AAAA,SACnB;AAAA,MACH;AAAA,IACJ;AAAA,IAEA,OAAO,EAAE,KAAK,KAAK;AAAA;AAAA,EAGf,WAAW,OAAO,KAAa,SAAsB;AAAA,IACzD,IAAI,cAAc,EAAE,KAAK,KAAK;AAAA,IAC9B,WAAW,cAAc,KAAK,YAAY;AAAA,MACtC,IAAI,WAAW,KAAK;AAAA,QAChB,cAAc,MAAM,WAAW,IAAI;AAAA,UAC/B,OAAO,KAAK;AAAA,aACT;AAAA,QACP,CAAC,KAAK;AAAA,MACV;AAAA,IACJ;AAAA,IACA,IAAI,WAAiC;AAAA,IACrC,IAAI;AAAA,MACA,WAAW,OAAO,KAAK,cAAc,YAAY,OAAO,YAAY,KAAK,YAAY,IAAI;AAAA,MAC3F,OAAO,GAAG;AAAA,MACR,WAAW,cAAc,KAAK,YAAY;AAAA,QACtC,IAAI,WAAW,SAAS;AAAA,UACpB,WAAW,MAAM,WAAW,QAAQ;AAAA,YAChC,OAAO,KAAK;AAAA,YACZ,KAAK,YAAY;AAAA,YACjB,MAAM,YAAY;AAAA,YAClB,OAAO;AAAA,YACP,UAAU,WAAW,SAAS,MAAM,IAAI;AAAA,UAC5C,CAAC,KAAK;AAAA,QACV;AAAA,MACJ;AAAA,MACA,IAAI,aAAa,WAAW;AAAA,QAC1B,IAAI,aAAa,OAAO;AAAA,UACtB,MAAM,IAAI,WAAW,GAAG,gFAAgF;AAAA,QAC1G,EAAO;AAAA,UACL,MAAM;AAAA;AAAA,MAEV;AAAA;AAAA,IAEJ,WAAW,cAAc,KAAK,YAAY;AAAA,MACtC,IAAI,WAAW,MAAM;AAAA,QACjB,WAAW,MAAM,WAAW,KAAK;AAAA,UAC7B,OAAO,KAAK;AAAA,UACZ,KAAK,YAAY;AAAA,UACjB,MAAM,YAAY;AAAA,UAClB,UAAU,SAAS,MAAM;AAAA,QAC7B,CAAC,KAAK;AAAA,MACV;AAAA,IACJ;AAAA,IACA,OAAO;AAAA;AAAA,EAOH,KAAwB,GAAa;AAAA,IACzC,MAAM,cAAc,KAAK;AAAA,IACzB,MAAM,OAAO,IAAI,YAAY,KAAK,aAAa;AAAA,IAC/C,KAAK,aAAa,KAAK,WAAW,MAAM;AAAA,IACxC,OAAO;AAAA;AAEf;AAEA,SAAS,MAAM,CAAC,OAA2B;AAAA,EACvC,OAAO,OAAO,SAAS,eAAe,iBAAiB;AAAA;AAG3D,SAAS,UAAU,CAAC,OAA+B;AAAA,EAC/C,OAAO,OAAO,aAAa,eAAe,iBAAiB;AAAA;AAAA;AAGxD,MAAM,sBAAsB,MAAM;AAAA,EAElB;AAAA,EADV,OAAwB;AAAA,EACjC,WAAW,CAAQ,UAAoB,KAAc;AAAA,IACjD,MAAM,GAAG;AAAA,IADM;AAAA;AAGvB;AAAA;AAEO,MAAM,mBAAmB,MAAM;AAAA,EAEf;AAAA,EADV,OAAqB;AAAA,EAC9B,WAAW,CAAQ,OAAc,KAAc;AAAA,IAC3C,MAAM,GAAG;AAAA,IADM;AAAA;AAGvB;AAAA;AAEO,MAAM,sBAAsB,MAAM;AAAA,EAElB;AAAA,EADV,OAAwB;AAAA,EACjC,WAAW,CAAQ,OAAe,KAAc;AAAA,IAC5C,MAAM,GAAG;AAAA,IADM;AAAA;AAGvB;AAEO,IAAM,qBAAqB;AAAA,EAC9B,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,OAAO;AACX;AA2BO,SAAS,WAAW,CAAC,QAAmB,SAAiB,IAAY;AAAA,EACxE,OAAO,OAAO,KAAK,MAAM,EACpB,IAAI,SAAO,qBAAqB,KAAK,OAAO,MAAM,MAAM,CAAC,EACzD,OAAO,UAAQ,KAAK,SAAS,CAAC,EAC9B,KAAK,GAAG;AAAA;AAGjB,SAAS,oBAAoB,CAAC,KAAa,OAAmJ,YAAoB,IAAY;AAAA,EAC1N,MAAM,UAAU,aAAa,UAAU,SAAS,IAAI,SAAS;AAAA,EAC7D,IAAI,iBAAiB,OAAO;AAAA,IACxB,MAAM,aAAa,MAAM,IAAI,iBAAe,mBAAmB,OAAO,WAAW,CAAC,CAAC,EAC9E,KAAK,IAAI,mBAAmB,OAAO,IAAI;AAAA,IAC5C,OAAO,GAAG,mBAAmB,OAAO,KAAK;AAAA,EAC7C;AAAA,EACA,IAAI,iBAAiB,KAAK;AAAA,IACtB,MAAM,eAAe,MAAM,KAAK,KAAK;AAAA,IACrC,OAAO,qBAAqB,KAAK,cAAc,SAAS;AAAA,EAC5D;AAAA,EACA,IAAI,iBAAiB,MAAM;AAAA,IACvB,OAAO,GAAG,mBAAmB,OAAO,KAAK,mBAAmB,MAAM,YAAY,CAAC;AAAA,EACnF;AAAA,EACA,IAAI,iBAAiB,QAAQ;AAAA,IACzB,OAAO,YAAY,OAAoB,OAAO;AAAA,EAClD;AAAA,EACA,OAAO,GAAG,mBAAmB,OAAO,KAAK,mBAAmB,OAAO,KAAK,CAAC;AAAA;AAGtE,SAAS,MAAM,CAAC,MAAW,KAAa;AAAA,EAC3C,MAAM,QAAQ,KAAK;AAAA,EACnB,OAAO,UAAU,QAAQ,UAAU;AAAA;AAGhC,SAAS,SAAS,CAAC,MAAW,IAAwB;AAAA,EACzD,MAAM,SAAiC,CAAC;AAAA,EACxC,WAAW,OAAO,OAAO,KAAK,IAAI,GAAG;AAAA,IACjC,OAAO,OAAO,GAAG,KAAK,IAAI;AAAA,EAC9B;AAAA,EACA,OAAO;AAAA;AAGJ,SAAS,cAAc,CAAC,UAA8B;AAAA,EACzD,WAAW,WAAW,UAAU;AAAA,IAC5B,IAA8B,QAAQ,gBAAlC,uBAA+C;AAAA,MAC/C,OAAO;AAAA,IACX;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAAA;AA2CJ,MAAM,gBAAmB;AAAA,EACT;AAAA,EAAuB;AAAA,EAA1C,WAAW,CAAQ,KAAuB,cAAsC,CAAC,cAAmB,WAAW;AAAA,IAA5F;AAAA,IAAuB;AAAA;AAAA,OAEpC,MAAK,GAAe;AAAA,IACtB,OAAO,KAAK,YAAY,MAAM,KAAK,IAAI,KAAK,CAAC;AAAA;AAErD;AAAA;AAEO,MAAM,gBAAgB;AAAA,EACN;AAAA,EAAnB,WAAW,CAAQ,KAAe;AAAA,IAAf;AAAA;AAAA,OAEb,MAAK,GAAkB;AAAA,IACzB;AAAA;AAER;AAAA;AAEO,MAAM,gBAAgB;AAAA,EACN;AAAA,EAAnB,WAAW,CAAQ,KAAe;AAAA,IAAf;AAAA;AAAA,OAEb,MAAK,GAAkB;AAAA,IACzB,OAAO,MAAM,KAAK,IAAI,KAAK;AAAA;AAEnC;AAAA;AAEO,MAAM,gBAAgB;AAAA,EACN;AAAA,EAAnB,WAAW,CAAQ,KAAe;AAAA,IAAf;AAAA;AAAA,OAEb,MAAK,GAAoB;AAAA,IAC3B,OAAO,MAAM,KAAK,IAAI,KAAK;AAAA;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxaO,IAAM,iBAAiB,qBAAqB,eAAG;AAEtD,0BAA0B,SAAS,cAAc;;AC6B1C,SAAS,+BAA+B,CAAC,OAA+C;AAAA,EAC3F,OAAO;AAAA;AAGJ,SAAS,6BAA6B,CAAC,MAAkC;AAAA,EAC5E,OAAO,mCAAmC,MAAM,KAAK;AAAA;AAGlD,SAAS,kCAAkC,CAAC,MAAW,qBAAqD;AAAA,EAC/G,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,MAAQ,KAAK,WAAW,OAAO,YAAY,KAAK;AAAA,IAChD,QAAU,KAAK,aAAa,OAAO,YAAY,KAAK;AAAA,EACxD;AAAA;AAGG,SAAS,2BAA2B,CAAC,MAAkC;AAAA,EAC1E,OAAO,iCAAiC,MAAM,KAAK;AAAA;AAGhD,SAAS,gCAAgC,CAAC,OAAsC,sBAA+B,OAAY;AAAA,EAC9H,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,MAAQ,MAAM;AAAA,IACd,QAAU,MAAM;AAAA,EACpB;AAAA;;;AClBG,SAAS,2BAA2B,CAAC,OAA2C;AAAA,EACnF,IAAI,EAAE,SAAS,UAAU,MAAM,WAAW;AAAA,IAAW,OAAO;AAAA,EAC5D,IAAI,EAAE,UAAU,UAAU,MAAM,YAAY;AAAA,IAAW,OAAO;AAAA,EAC9D,OAAO;AAAA;AAGJ,SAAS,yBAAyB,CAAC,MAA8B;AAAA,EACpE,OAAO,+BAA+B,MAAM,KAAK;AAAA;AAG9C,SAAS,8BAA8B,CAAC,MAAW,qBAAiD;AAAA,EACvG,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,KAAO,KAAK;AAAA,IACZ,MAAQ,KAAK;AAAA,IACb,SAAW,KAAK,cAAc,OAAO,YAAY,8BAA8B,KAAK,UAAU;AAAA,EAClG;AAAA;AAGG,SAAS,uBAAuB,CAAC,MAA8B;AAAA,EAClE,OAAO,6BAA6B,MAAM,KAAK;AAAA;AAG5C,SAAS,4BAA4B,CAAC,OAAkC,sBAA+B,OAAY;AAAA,EACtH,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,KAAO,MAAM;AAAA,IACb,MAAQ,MAAM;AAAA,IACd,SAAW,4BAA4B,MAAM,UAAU;AAAA,EAC3D;AAAA;;AClDG,SAAS,oCAAoC,CAAC,OAAoD;AAAA,EACrG,IAAI,EAAE,uBAAuB,UAAU,MAAM,yBAAyB;AAAA,IAAW,OAAO;AAAA,EACxF,OAAO;AAAA;AAGJ,SAAS,kCAAkC,CAAC,MAAuC;AAAA,EACtF,OAAO,wCAAwC,MAAM,KAAK;AAAA;AAGvD,SAAS,uCAAuC,CAAC,MAAW,qBAA0D;AAAA,EACzH,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,mBAAqB,KAAK;AAAA,IAC1B,MAAQ,KAAK,WAAW,OAAO,YAAY,KAAK;AAAA,EACpD;AAAA;AAGG,SAAS,gCAAgC,CAAC,MAAuC;AAAA,EACpF,OAAO,sCAAsC,MAAM,KAAK;AAAA;AAGrD,SAAS,qCAAqC,CAAC,OAA2C,sBAA+B,OAAY;AAAA,EACxI,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,mBAAqB,MAAM;AAAA,IAC3B,MAAQ,MAAM;AAAA,EAClB;AAAA;;ACpDG,IAAM,6BAA6B;AAAA,EACtC,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,sBAAsB;AAC1B;AAIO,SAAS,oCAAoC,CAAC,OAAqB;AAAA,EACtE,WAAW,OAAO,4BAA4B;AAAA,IAC1C,IAAI,OAAO,UAAU,eAAe,KAAK,4BAA4B,GAAG,GAAG;AAAA,MACvE,IAAI,2BAA2B,SAAoD,OAAO;AAAA,QACtF,OAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAGJ,SAAS,kCAAkC,CAAC,MAAuC;AAAA,EACtF,OAAO,wCAAwC,MAAM,KAAK;AAAA;AAGvD,SAAS,uCAAuC,CAAC,MAAW,qBAA0D;AAAA,EACzH,OAAO;AAAA;AAGJ,SAAS,gCAAgC,CAAC,OAAgD;AAAA,EAC7F,OAAO;AAAA;AAGJ,SAAS,qCAAqC,CAAC,OAAY,qBAA0D;AAAA,EACxH,OAAO;AAAA;;ACpCJ,IAAM,gBAAgB;AAAA,EACzB,SAAS;AAAA,EACT,WAAW;AACf;AAIO,SAAS,uBAAuB,CAAC,OAAqB;AAAA,EACzD,WAAW,OAAO,eAAe;AAAA,IAC7B,IAAI,OAAO,UAAU,eAAe,KAAK,eAAe,GAAG,GAAG;AAAA,MAC1D,IAAI,cAAc,SAAuC,OAAO;AAAA,QAC5D,OAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAGJ,SAAS,qBAAqB,CAAC,MAA0B;AAAA,EAC5D,OAAO,2BAA2B,MAAM,KAAK;AAAA;AAG1C,SAAS,0BAA0B,CAAC,MAAW,qBAA6C;AAAA,EAC/F,OAAO;AAAA;AAGJ,SAAS,mBAAmB,CAAC,OAAmC;AAAA,EACnE,OAAO;AAAA;AAGJ,SAAS,wBAAwB,CAAC,OAAY,qBAA6C;AAAA,EAC9F,OAAO;AAAA;;;ACsBJ,SAAS,mBAAmB,CAAC,OAAmC;AAAA,EACnE,IAAI,EAAE,iBAAiB,UAAU,MAAM,mBAAmB;AAAA,IAAW,OAAO;AAAA,EAC5E,IAAI,EAAE,kBAAkB,UAAU,MAAM,oBAAoB;AAAA,IAAW,OAAO;AAAA,EAC9E,IAAI,EAAE,UAAU,UAAU,MAAM,YAAY;AAAA,IAAW,OAAO;AAAA,EAC9D,OAAO;AAAA;AAGJ,SAAS,iBAAiB,CAAC,MAAsB;AAAA,EACpD,OAAO,uBAAuB,MAAM,KAAK;AAAA;AAGtC,SAAS,sBAAsB,CAAC,MAAW,qBAAyC;AAAA,EACvF,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,aAAe,KAAK;AAAA,IACpB,cAAgB,KAAK;AAAA,IACrB,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,0BAA4B,KAAK,+BAA+B,OAAO,YAAY,KAAK;AAAA,IACxF,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,IAC5D,MAAQ,sBAAsB,KAAK,OAAO;AAAA,EAC9C;AAAA;AAGG,SAAS,eAAe,CAAC,MAAsB;AAAA,EAClD,OAAO,qBAAqB,MAAM,KAAK;AAAA;AAGpC,SAAS,oBAAoB,CAAC,OAA0B,sBAA+B,OAAY;AAAA,EACtG,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,aAAe,MAAM;AAAA,IACrB,cAAgB,MAAM;AAAA,IACtB,WAAa,MAAM;AAAA,IACnB,0BAA4B,MAAM;AAAA,IAClC,YAAc,MAAM;AAAA,IACpB,MAAQ,oBAAoB,MAAM,OAAO;AAAA,EAC7C;AAAA;;;AC/DG,SAAS,2BAA2B,CAAC,OAA2C;AAAA,EACnF,IAAI,EAAE,yBAAyB,UAAU,MAAM,2BAA2B;AAAA,IAAW,OAAO;AAAA,EAC5F,IAAI,EAAE,yBAAyB,UAAU,MAAM,2BAA2B;AAAA,IAAW,OAAO;AAAA,EAC5F,OAAO;AAAA;AAGJ,SAAS,yBAAyB,CAAC,MAA8B;AAAA,EACpE,OAAO,+BAA+B,MAAM,KAAK;AAAA;AAG9C,SAAS,8BAA8B,CAAC,MAAW,qBAAiD;AAAA,EACvG,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,qBAAuB,KAAK;AAAA,IAC5B,qBAAuB,KAAK;AAAA,IAC5B,WAAa,KAAK,gBAAgB,OAAO,YAAY,kBAAkB,KAAK,YAAY;AAAA,EAC5F;AAAA;AAGG,SAAS,uBAAuB,CAAC,MAA8B;AAAA,EAClE,OAAO,6BAA6B,MAAM,KAAK;AAAA;AAG5C,SAAS,4BAA4B,CAAC,OAAkC,sBAA+B,OAAY;AAAA,EACtH,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,qBAAuB,MAAM;AAAA,IAC7B,qBAAuB,MAAM;AAAA,IAC7B,WAAa,gBAAgB,MAAM,YAAY;AAAA,EACnD;AAAA;;;ACxDG,SAAS,sBAAsB,CAAC,OAAsC;AAAA,EACzE,IAAI,EAAE,+BAA+B,UAAU,MAAM,iCAAiC;AAAA,IAAW,OAAO;AAAA,EACxG,OAAO;AAAA;AAGJ,SAAS,oBAAoB,CAAC,MAAyB;AAAA,EAC1D,OAAO,0BAA0B,MAAM,KAAK;AAAA;AAGzC,SAAS,yBAAyB,CAAC,MAAW,qBAA4C;AAAA,EAC7F,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,2BAA6B,KAAK;AAAA,EACtC;AAAA;AAGG,SAAS,kBAAkB,CAAC,MAAyB;AAAA,EACxD,OAAO,wBAAwB,MAAM,KAAK;AAAA;AAGvC,SAAS,uBAAuB,CAAC,OAA6B,sBAA+B,OAAY;AAAA,EAC5G,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,2BAA6B,MAAM;AAAA,EACvC;AAAA;;;ACEG,SAAS,+BAA+B,CAAC,OAA+C;AAAA,EAC3F,IAAI,EAAE,uBAAuB,UAAU,MAAM,yBAAyB;AAAA,IAAW,OAAO;AAAA,EACxF,IAAI,EAAE,gBAAgB,UAAU,MAAM,kBAAkB;AAAA,IAAW,OAAO;AAAA,EAC1E,OAAO;AAAA;AAGJ,SAAS,6BAA6B,CAAC,MAAkC;AAAA,EAC5E,OAAO,mCAAmC,MAAM,KAAK;AAAA;AAGlD,SAAS,kCAAkC,CAAC,MAAW,qBAAqD;AAAA,EAC/G,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,mBAAqB,KAAK;AAAA,IAC1B,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,YAAgB,KAAK,cAA6B,IAAI,yBAAyB;AAAA,IAC/E,cAAgB,KAAK,mBAAmB,OAAO,YAAY,qBAAqB,KAAK,eAAe;AAAA,EACxG;AAAA;AAGG,SAAS,2BAA2B,CAAC,MAAkC;AAAA,EAC1E,OAAO,iCAAiC,MAAM,KAAK;AAAA;AAGhD,SAAS,gCAAgC,CAAC,OAAsC,sBAA+B,OAAY;AAAA,EAC9H,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,mBAAqB,MAAM;AAAA,IAC3B,WAAa,MAAM;AAAA,IACnB,YAAgB,MAAM,cAA6B,IAAI,uBAAuB;AAAA,IAC9E,cAAgB,mBAAmB,MAAM,eAAe;AAAA,EAC5D;AAAA;;ACjEG,SAAS,uBAAuB,CAAC,OAAuC;AAAA,EAC3E,IAAI,EAAE,iBAAiB,UAAU,MAAM,mBAAmB;AAAA,IAAW,OAAO;AAAA,EAC5E,IAAI,EAAE,oBAAoB,UAAU,MAAM,sBAAsB;AAAA,IAAW,OAAO;AAAA,EAClF,OAAO;AAAA;AAGJ,SAAS,qBAAqB,CAAC,MAA0B;AAAA,EAC5D,OAAO,2BAA2B,MAAM,KAAK;AAAA;AAG1C,SAAS,0BAA0B,CAAC,MAAW,qBAA6C;AAAA,EAC/F,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,aAAe,KAAK;AAAA,IACpB,gBAAkB,KAAK;AAAA,EAC3B;AAAA;AAGG,SAAS,mBAAmB,CAAC,MAA0B;AAAA,EAC1D,OAAO,yBAAyB,MAAM,KAAK;AAAA;AAGxC,SAAS,wBAAwB,CAAC,OAA8B,sBAA+B,OAAY;AAAA,EAC9G,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,aAAe,MAAM;AAAA,IACrB,gBAAkB,MAAM;AAAA,EAC5B;AAAA;;ACrDG,IAAM,iBAAiB;AAAA,EAC1B,SAAS;AAAA,EACT,UAAU;AAAA,EACV,WAAW;AAAA,EACX,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,iBAAiB;AACrB;AAIO,SAAS,wBAAwB,CAAC,OAAqB;AAAA,EAC1D,WAAW,OAAO,gBAAgB;AAAA,IAC9B,IAAI,OAAO,UAAU,eAAe,KAAK,gBAAgB,GAAG,GAAG;AAAA,MAC3D,IAAI,eAAe,SAAwC,OAAO;AAAA,QAC9D,OAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAGJ,SAAS,sBAAsB,CAAC,MAA2B;AAAA,EAC9D,OAAO,4BAA4B,MAAM,KAAK;AAAA;AAG3C,SAAS,2BAA2B,CAAC,MAAW,qBAA8C;AAAA,EACjG,OAAO;AAAA;AAGJ,SAAS,oBAAoB,CAAC,OAAoC;AAAA,EACrE,OAAO;AAAA;AAGJ,SAAS,yBAAyB,CAAC,OAAY,qBAA8C;AAAA,EAChG,OAAO;AAAA;;;ACnCJ,IAAM,sBAAsB;AAAA,EAC/B,SAAS;AAAA,EACT,WAAW;AAAA,EACX,eAAe;AAAA,EACf,qBAAqB;AAAA,EACrB,UAAU;AAAA,EACV,iBAAiB;AACrB;AAIO,SAAS,6BAA6B,CAAC,OAAqB;AAAA,EAC/D,WAAW,OAAO,qBAAqB;AAAA,IACnC,IAAI,OAAO,UAAU,eAAe,KAAK,qBAAqB,GAAG,GAAG;AAAA,MAChE,IAAI,oBAAoB,SAA6C,OAAO;AAAA,QACxE,OAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAGJ,SAAS,2BAA2B,CAAC,MAAgC;AAAA,EACxE,OAAO,iCAAiC,MAAM,KAAK;AAAA;AAGhD,SAAS,gCAAgC,CAAC,MAAW,qBAAmD;AAAA,EAC3G,OAAO;AAAA;AAGJ,SAAS,yBAAyB,CAAC,OAAyC;AAAA,EAC/E,OAAO;AAAA;AAGJ,SAAS,8BAA8B,CAAC,OAAY,qBAAmD;AAAA,EAC1G,OAAO;AAAA;;;ACnCJ,IAAM,uBAAuB;AAAA,EAChC,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,MAAM;AAAA,EACN,QAAQ;AACZ;AAIO,SAAS,8BAA8B,CAAC,OAAqB;AAAA,EAChE,WAAW,OAAO,sBAAsB;AAAA,IACpC,IAAI,OAAO,UAAU,eAAe,KAAK,sBAAsB,GAAG,GAAG;AAAA,MACjE,IAAI,qBAAqB,SAA8C,OAAO;AAAA,QAC1E,OAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAGJ,SAAS,4BAA4B,CAAC,MAAiC;AAAA,EAC1E,OAAO,kCAAkC,MAAM,KAAK;AAAA;AAGjD,SAAS,iCAAiC,CAAC,MAAW,qBAAoD;AAAA,EAC7G,OAAO;AAAA;AAGJ,SAAS,0BAA0B,CAAC,OAA0C;AAAA,EACjF,OAAO;AAAA;AAGJ,SAAS,+BAA+B,CAAC,OAAY,qBAAoD;AAAA,EAC5G,OAAO;AAAA;;;ACjCJ,IAAM,4BAA4B;AAAA,EACrC,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,gBAAgB;AACpB;AAIO,SAAS,mCAAmC,CAAC,OAAqB;AAAA,EACrE,WAAW,OAAO,2BAA2B;AAAA,IACzC,IAAI,OAAO,UAAU,eAAe,KAAK,2BAA2B,GAAG,GAAG;AAAA,MACtE,IAAI,0BAA0B,SAAmD,OAAO;AAAA,QACpF,OAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAGJ,SAAS,iCAAiC,CAAC,MAAsC;AAAA,EACpF,OAAO,uCAAuC,MAAM,KAAK;AAAA;AAGtD,SAAS,sCAAsC,CAAC,MAAW,qBAAyD;AAAA,EACvH,OAAO;AAAA;AAGJ,SAAS,+BAA+B,CAAC,OAA+C;AAAA,EAC3F,OAAO;AAAA;AAGJ,SAAS,oCAAoC,CAAC,OAAY,qBAAyD;AAAA,EACtH,OAAO;AAAA;;;AClCJ,IAAM,wBAAwB;AAAA,EACjC,cAAc;AAAA,EACd,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,iBAAiB;AACrB;AAIO,SAAS,+BAA+B,CAAC,OAAqB;AAAA,EACjE,WAAW,OAAO,uBAAuB;AAAA,IACrC,IAAI,OAAO,UAAU,eAAe,KAAK,uBAAuB,GAAG,GAAG;AAAA,MAClE,IAAI,sBAAsB,SAA+C,OAAO;AAAA,QAC5E,OAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAGJ,SAAS,6BAA6B,CAAC,MAAkC;AAAA,EAC5E,OAAO,mCAAmC,MAAM,KAAK;AAAA;AAGlD,SAAS,kCAAkC,CAAC,MAAW,qBAAqD;AAAA,EAC/G,OAAO;AAAA;AAGJ,SAAS,2BAA2B,CAAC,OAA2C;AAAA,EACnF,OAAO;AAAA;AAGJ,SAAS,gCAAgC,CAAC,OAAY,qBAAqD;AAAA,EAC9G,OAAO;AAAA;;;ACjCJ,IAAM,mBAAmB;AAAA,EAC5B,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,OAAO;AAAA,EACP,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,kBAAkB;AACtB;AAIO,SAAS,0BAA0B,CAAC,OAAqB;AAAA,EAC5D,WAAW,OAAO,kBAAkB;AAAA,IAChC,IAAI,OAAO,UAAU,eAAe,KAAK,kBAAkB,GAAG,GAAG;AAAA,MAC7D,IAAI,iBAAiB,SAA0C,OAAO;AAAA,QAClE,OAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAGJ,SAAS,wBAAwB,CAAC,MAA6B;AAAA,EAClE,OAAO,8BAA8B,MAAM,KAAK;AAAA;AAG7C,SAAS,6BAA6B,CAAC,MAAW,qBAAgD;AAAA,EACrG,OAAO;AAAA;AAGJ,SAAS,sBAAsB,CAAC,OAAsC;AAAA,EACzE,OAAO;AAAA;AAGJ,SAAS,2BAA2B,CAAC,OAAY,qBAAgD;AAAA,EACpG,OAAO;AAAA;;;ACgNJ,SAAS,2BAA2B,CAAC,OAA2C;AAAA,EACnF,IAAI,EAAE,SAAS,UAAU,MAAM,WAAW;AAAA,IAAW,OAAO;AAAA,EAC5D,IAAI,EAAE,0BAA0B,UAAU,MAAM,4BAA4B;AAAA,IAAW,OAAO;AAAA,EAC9F,IAAI,EAAE,UAAU,UAAU,MAAM,YAAY;AAAA,IAAW,OAAO;AAAA,EAC9D,IAAI,EAAE,sBAAsB,UAAU,MAAM,wBAAwB;AAAA,IAAW,OAAO;AAAA,EACtF,IAAI,EAAE,uBAAuB,UAAU,MAAM,yBAAyB;AAAA,IAAW,OAAO;AAAA,EACxF,IAAI,EAAE,gBAAgB,UAAU,MAAM,kBAAkB;AAAA,IAAW,OAAO;AAAA,EAC1E,IAAI,EAAE,iBAAiB,UAAU,MAAM,mBAAmB;AAAA,IAAW,OAAO;AAAA,EAC5E,IAAI,EAAE,oBAAoB,UAAU,MAAM,sBAAsB;AAAA,IAAW,OAAO;AAAA,EAClF,IAAI,EAAE,0BAA0B,UAAU,MAAM,4BAA4B;AAAA,IAAW,OAAO;AAAA,EAC9F,IAAI,EAAE,4BAA4B,UAAU,MAAM,8BAA8B;AAAA,IAAW,OAAO;AAAA,EAClG,IAAI,EAAE,YAAY,UAAU,MAAM,cAAc;AAAA,IAAW,OAAO;AAAA,EAClE,IAAI,EAAE,eAAe,UAAU,MAAM,iBAAiB;AAAA,IAAW,OAAO;AAAA,EACxE,IAAI,EAAE,qBAAqB,UAAU,MAAM,uBAAuB;AAAA,IAAW,OAAO;AAAA,EACpF,IAAI,EAAE,sBAAsB,UAAU,MAAM,wBAAwB;AAAA,IAAW,OAAO;AAAA,EACtF,IAAI,EAAE,gBAAgB,UAAU,MAAM,kBAAkB;AAAA,IAAW,OAAO;AAAA,EAC1E,IAAI,EAAE,aAAa,UAAU,MAAM,eAAe;AAAA,IAAW,OAAO;AAAA,EACpE,OAAO;AAAA;AAGJ,SAAS,yBAAyB,CAAC,MAA8B;AAAA,EACpE,OAAO,+BAA+B,MAAM,KAAK;AAAA;AAG9C,SAAS,8BAA8B,CAAC,MAAW,qBAAiD;AAAA,EACvG,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,KAAO,KAAK;AAAA,IACZ,sBAAwB,KAAK;AAAA,IAC7B,MAAQ,KAAK;AAAA,IACb,kBAAoB,KAAK;AAAA,IACzB,mBAAqB,KAAK;AAAA,IAC1B,YAAc,KAAK;AAAA,IACnB,aAAe,KAAK;AAAA,IACpB,gBAAkB,KAAK;AAAA,IACvB,uBAAyB,KAAK,4BAA4B,OAAO,YAAY,KAAK;AAAA,IAClF,sBAAwB,KAAK,2BAA2B,OAAO,YAAY,KAAK;AAAA,IAChF,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,IAC5D,wBAA0B,KAAK,6BAA6B,OAAO,YAAY,KAAK;AAAA,IACpF,yBAA2B,KAAK,8BAA8B,OAAO,YAAY,KAAK;AAAA,IACtF,sBAAwB,6BAA6B,KAAK,uBAAuB;AAAA,IACjF,wBAA2B,IAAI,KAAK,KAAK,yBAAyB;AAAA,IAClE,QAAU,yBAAyB,KAAK,SAAS;AAAA,IACjD,WAAa,KAAK,gBAAgB,OAAO,YAAa,IAAI,KAAK,KAAK,YAAY;AAAA,IAChF,SAAW,KAAK,cAAc,OAAO,YAAa,IAAI,KAAK,KAAK,UAAU;AAAA,IAC1E,aAAe,KAAK,kBAAkB,OAAO,YAAY,8BAA8B,KAAK,cAAc;AAAA,IAC1G,WAAa,4BAA4B,KAAK,YAAY;AAAA,IAC1D,iBAAmB,kCAAkC,KAAK,kBAAkB;AAAA,IAC5E,kBAAoB,mCAAmC,KAAK,mBAAmB;AAAA,IAC/E,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,IAC5D,4BAA8B,KAAK,iCAAiC,OAAO,YAAY,KAAK;AAAA,IAC5F,2BAA6B,KAAK,gCAAgC,OAAO,YAAY,KAAK;AAAA,IAC1F,4BAA8B,KAAK,iCAAiC,OAAO,YAAY,KAAK;AAAA,IAC5F,YAAc,KAAK;AAAA,IACnB,uBAAyB,KAAK,4BAA4B,OAAO,YAAY,KAAK;AAAA,IAClF,cAAgB,KAAK,mBAAmB,OAAO,YAAY,qBAAqB,KAAK,eAAe;AAAA,IACpG,SAAa,KAAK,WAA0B,IAAI,sBAAsB;AAAA,EAC1E;AAAA;AAGG,SAAS,uBAAuB,CAAC,MAA8B;AAAA,EAClE,OAAO,6BAA6B,MAAM,KAAK;AAAA;AAG5C,SAAS,4BAA4B,CAAC,OAAkC,sBAA+B,OAAY;AAAA,EACtH,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,KAAO,MAAM;AAAA,IACb,sBAAwB,MAAM;AAAA,IAC9B,MAAQ,MAAM;AAAA,IACd,kBAAoB,MAAM;AAAA,IAC1B,mBAAqB,MAAM;AAAA,IAC3B,YAAc,MAAM;AAAA,IACpB,aAAe,MAAM;AAAA,IACrB,gBAAkB,MAAM;AAAA,IACxB,uBAAyB,MAAM;AAAA,IAC/B,sBAAwB,MAAM;AAAA,IAC9B,YAAc,MAAM;AAAA,IACpB,wBAA0B,MAAM;AAAA,IAChC,yBAA2B,MAAM;AAAA,IACjC,sBAAwB,2BAA2B,MAAM,uBAAuB;AAAA,IAChF,wBAA0B,MAAM,0BAA0B,YAAY;AAAA,IACtE,QAAU,uBAAuB,MAAM,SAAS;AAAA,IAChD,WAAa,MAAM,gBAAgB,OAAO,MAAM,eAAe,MAAM,aAAa,YAAY;AAAA,IAC9F,SAAW,MAAM,cAAc,OAAO,MAAM,aAAa,MAAM,WAAW,YAAY;AAAA,IACtF,aAAe,4BAA4B,MAAM,cAAc;AAAA,IAC/D,WAAa,0BAA0B,MAAM,YAAY;AAAA,IACzD,iBAAmB,gCAAgC,MAAM,kBAAkB;AAAA,IAC3E,kBAAoB,iCAAiC,MAAM,mBAAmB;AAAA,IAC9E,YAAc,MAAM;AAAA,IACpB,4BAA8B,MAAM;AAAA,IACpC,2BAA6B,MAAM;AAAA,IACnC,4BAA8B,MAAM;AAAA,IACpC,YAAc,MAAM;AAAA,IACpB,uBAAyB,MAAM;AAAA,IAC/B,cAAgB,mBAAmB,MAAM,eAAe;AAAA,IACxD,SAAa,MAAM,WAA0B,IAAI,oBAAoB;AAAA,EACzE;AAAA;;ACtSG,SAAS,2BAA2B,CAAC,OAA2C;AAAA,EACnF,IAAI,EAAE,sBAAsB,UAAU,MAAM,wBAAwB;AAAA,IAAW,OAAO;AAAA,EACtF,IAAI,EAAE,oBAAoB,UAAU,MAAM,sBAAsB;AAAA,IAAW,OAAO;AAAA,EAClF,OAAO;AAAA;AAGJ,SAAS,yBAAyB,CAAC,MAA8B;AAAA,EACpE,OAAO,+BAA+B,MAAM,KAAK;AAAA;AAG9C,SAAS,8BAA8B,CAAC,MAAW,qBAAiD;AAAA,EACvG,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,kBAAoB,KAAK;AAAA,IACzB,gBAAkB,KAAK;AAAA,IACvB,uBAAyB,KAAK,4BAA4B,OAAO,YAAY,KAAK;AAAA,IAClF,wBAA0B,KAAK,6BAA6B,OAAO,YAAY,KAAK;AAAA,IACpF,wBAA0B,KAAK,6BAA6B,OAAO,YAAY,KAAK;AAAA,IACpF,eAAiB,KAAK,oBAAoB,OAAO,YAAY,KAAK;AAAA,IAClE,cAAgB,KAAK,mBAAmB,OAAO,YAAY,qBAAqB,KAAK,eAAe;AAAA,EACxG;AAAA;AAGG,SAAS,uBAAuB,CAAC,MAA8B;AAAA,EAClE,OAAO,6BAA6B,MAAM,KAAK;AAAA;AAG5C,SAAS,4BAA4B,CAAC,OAAkC,sBAA+B,OAAY;AAAA,EACtH,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,kBAAoB,MAAM;AAAA,IAC1B,gBAAkB,MAAM;AAAA,IACxB,uBAAyB,MAAM;AAAA,IAC/B,wBAA0B,MAAM;AAAA,IAChC,wBAA0B,MAAM;AAAA,IAChC,eAAiB,MAAM;AAAA,IACvB,cAAgB,mBAAmB,MAAM,eAAe;AAAA,EAC5D;AAAA;;ACrGG,IAAM,iBAAiB;AAAA,EAC1B,SAAS;AAAA,EACT,WAAW;AACf;AAIO,SAAS,wBAAwB,CAAC,OAAqB;AAAA,EAC1D,WAAW,OAAO,gBAAgB;AAAA,IAC9B,IAAI,OAAO,UAAU,eAAe,KAAK,gBAAgB,GAAG,GAAG;AAAA,MAC3D,IAAI,eAAe,SAAwC,OAAO;AAAA,QAC9D,OAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAGJ,SAAS,sBAAsB,CAAC,MAA2B;AAAA,EAC9D,OAAO,4BAA4B,MAAM,KAAK;AAAA;AAG3C,SAAS,2BAA2B,CAAC,MAAW,qBAA8C;AAAA,EACjG,OAAO;AAAA;AAGJ,SAAS,oBAAoB,CAAC,OAAoC;AAAA,EACrE,OAAO;AAAA;AAGJ,SAAS,yBAAyB,CAAC,OAAY,qBAA8C;AAAA,EAChG,OAAO;AAAA;;;ACmMJ,SAAS,kCAAkC,CAAC,OAAkD;AAAA,EACjG,IAAI,EAAE,SAAS,UAAU,MAAM,WAAW;AAAA,IAAW,OAAO;AAAA,EAC5D,IAAI,EAAE,0BAA0B,UAAU,MAAM,4BAA4B;AAAA,IAAW,OAAO;AAAA,EAC9F,IAAI,EAAE,sBAAsB,UAAU,MAAM,wBAAwB;AAAA,IAAW,OAAO;AAAA,EACtF,IAAI,EAAE,uBAAuB,UAAU,MAAM,yBAAyB;AAAA,IAAW,OAAO;AAAA,EACxF,IAAI,EAAE,gBAAgB,UAAU,MAAM,kBAAkB;AAAA,IAAW,OAAO;AAAA,EAC1E,IAAI,EAAE,iBAAiB,UAAU,MAAM,mBAAmB;AAAA,IAAW,OAAO;AAAA,EAC5E,IAAI,EAAE,oBAAoB,UAAU,MAAM,sBAAsB;AAAA,IAAW,OAAO;AAAA,EAClF,IAAI,EAAE,0BAA0B,UAAU,MAAM,4BAA4B;AAAA,IAAW,OAAO;AAAA,EAC9F,IAAI,EAAE,4BAA4B,UAAU,MAAM,8BAA8B;AAAA,IAAW,OAAO;AAAA,EAClG,IAAI,EAAE,aAAa,UAAU,MAAM,eAAe;AAAA,IAAW,OAAO;AAAA,EACpE,IAAI,EAAE,UAAU,UAAU,MAAM,YAAY;AAAA,IAAW,OAAO;AAAA,EAC9D,IAAI,EAAE,UAAU,UAAU,MAAM,YAAY;AAAA,IAAW,OAAO;AAAA,EAC9D,IAAI,EAAE,eAAe,UAAU,MAAM,iBAAiB;AAAA,IAAW,OAAO;AAAA,EACxE,IAAI,EAAE,qBAAqB,UAAU,MAAM,uBAAuB;AAAA,IAAW,OAAO;AAAA,EACpF,IAAI,EAAE,sBAAsB,UAAU,MAAM,wBAAwB;AAAA,IAAW,OAAO;AAAA,EACtF,IAAI,EAAE,gBAAgB,UAAU,MAAM,kBAAkB;AAAA,IAAW,OAAO;AAAA,EAC1E,OAAO;AAAA;AAGJ,SAAS,gCAAgC,CAAC,MAAqC;AAAA,EAClF,OAAO,sCAAsC,MAAM,KAAK;AAAA;AAGrD,SAAS,qCAAqC,CAAC,MAAW,qBAAwD;AAAA,EACrH,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,KAAO,KAAK;AAAA,IACZ,sBAAwB,KAAK;AAAA,IAC7B,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,IAC5D,kBAAoB,KAAK;AAAA,IACzB,mBAAqB,KAAK;AAAA,IAC1B,YAAc,KAAK;AAAA,IACnB,aAAe,KAAK;AAAA,IACpB,gBAAkB,KAAK;AAAA,IACvB,uBAAyB,KAAK,4BAA4B,OAAO,YAAY,KAAK;AAAA,IAClF,sBAAwB,KAAK,2BAA2B,OAAO,YAAY,KAAK;AAAA,IAChF,sBAAwB,6BAA6B,KAAK,uBAAuB;AAAA,IACjF,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,IAC5D,wBAA0B,KAAK,6BAA6B,OAAO,YAAY,KAAK;AAAA,IACpF,yBAA2B,KAAK,8BAA8B,OAAO,YAAY,KAAK;AAAA,IACtF,wBAA2B,IAAI,KAAK,KAAK,yBAAyB;AAAA,IAClE,WAAa,KAAK,gBAAgB,OAAO,YAAa,IAAI,KAAK,KAAK,YAAY;AAAA,IAChF,SAAW,KAAK,cAAc,OAAO,YAAa,IAAI,KAAK,KAAK,UAAU;AAAA,IAC1E,SAAa,KAAK,WAA0B,IAAI,sBAAsB;AAAA,IACtE,MAAQ,KAAK;AAAA,IACb,MAAQ,uBAAuB,KAAK,OAAO;AAAA,IAC3C,WAAa,4BAA4B,KAAK,YAAY;AAAA,IAC1D,iBAAmB,kCAAkC,KAAK,kBAAkB;AAAA,IAC5E,kBAAoB,mCAAmC,KAAK,mBAAmB;AAAA,IAC/E,4BAA8B,KAAK,iCAAiC,OAAO,YAAY,KAAK;AAAA,IAC5F,2BAA6B,KAAK,gCAAgC,OAAO,YAAY,KAAK;AAAA,IAC1F,4BAA8B,KAAK,iCAAiC,OAAO,YAAY,KAAK;AAAA,IAC5F,YAAc,KAAK;AAAA,IACnB,uBAAyB,KAAK,4BAA4B,OAAO,YAAY,KAAK;AAAA,IAClF,oBAAsB,KAAK,yBAAyB,OAAO,YAAY,KAAK;AAAA,EAChF;AAAA;AAGG,SAAS,8BAA8B,CAAC,MAAqC;AAAA,EAChF,OAAO,oCAAoC,MAAM,KAAK;AAAA;AAGnD,SAAS,mCAAmC,CAAC,OAAyC,sBAA+B,OAAY;AAAA,EACpI,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,KAAO,MAAM;AAAA,IACb,sBAAwB,MAAM;AAAA,IAC9B,YAAc,MAAM;AAAA,IACpB,kBAAoB,MAAM;AAAA,IAC1B,mBAAqB,MAAM;AAAA,IAC3B,YAAc,MAAM;AAAA,IACpB,aAAe,MAAM;AAAA,IACrB,gBAAkB,MAAM;AAAA,IACxB,uBAAyB,MAAM;AAAA,IAC/B,sBAAwB,MAAM;AAAA,IAC9B,sBAAwB,2BAA2B,MAAM,uBAAuB;AAAA,IAChF,YAAc,MAAM;AAAA,IACpB,wBAA0B,MAAM;AAAA,IAChC,yBAA2B,MAAM;AAAA,IACjC,wBAA0B,MAAM,0BAA0B,YAAY;AAAA,IACtE,WAAa,MAAM,gBAAgB,OAAO,MAAM,eAAe,MAAM,aAAa,YAAY;AAAA,IAC9F,SAAW,MAAM,cAAc,OAAO,MAAM,aAAa,MAAM,WAAW,YAAY;AAAA,IACtF,SAAa,MAAM,WAA0B,IAAI,oBAAoB;AAAA,IACrE,MAAQ,MAAM;AAAA,IACd,MAAQ,qBAAqB,MAAM,OAAO;AAAA,IAC1C,WAAa,0BAA0B,MAAM,YAAY;AAAA,IACzD,iBAAmB,gCAAgC,MAAM,kBAAkB;AAAA,IAC3E,kBAAoB,iCAAiC,MAAM,mBAAmB;AAAA,IAC9E,4BAA8B,MAAM;AAAA,IACpC,2BAA6B,MAAM;AAAA,IACnC,4BAA8B,MAAM;AAAA,IACpC,YAAc,MAAM;AAAA,IACpB,uBAAyB,MAAM;AAAA,IAC/B,oBAAsB,MAAM;AAAA,EAChC;AAAA;;ACxUG,IAAM,mBAAmB;AAAA,EAC5B,WAAW;AAAA,EACX,YAAY;AAChB;AAIO,SAAS,0BAA0B,CAAC,OAAqB;AAAA,EAC5D,WAAW,OAAO,kBAAkB;AAAA,IAChC,IAAI,OAAO,UAAU,eAAe,KAAK,kBAAkB,GAAG,GAAG;AAAA,MAC7D,IAAI,iBAAiB,SAA0C,OAAO;AAAA,QAClE,OAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAGJ,SAAS,wBAAwB,CAAC,MAA6B;AAAA,EAClE,OAAO,8BAA8B,MAAM,KAAK;AAAA;AAG7C,SAAS,6BAA6B,CAAC,MAAW,qBAAgD;AAAA,EACrG,OAAO;AAAA;AAGJ,SAAS,sBAAsB,CAAC,OAAsC;AAAA,EACzE,OAAO;AAAA;AAGJ,SAAS,2BAA2B,CAAC,OAAY,qBAAgD;AAAA,EACpG,OAAO;AAAA;;;AC2FJ,SAAS,mCAAmC,CAAC,OAAmD;AAAA,EACnG,IAAI,EAAE,uBAAuB,UAAU,MAAM,yBAAyB;AAAA,IAAW,OAAO;AAAA,EACxF,IAAI,EAAE,wBAAwB,UAAU,MAAM,0BAA0B;AAAA,IAAW,OAAO;AAAA,EAC1F,OAAO;AAAA;AAGJ,SAAS,iCAAiC,CAAC,MAAsC;AAAA,EACpF,OAAO,uCAAuC,MAAM,KAAK;AAAA;AAGtD,SAAS,sCAAsC,CAAC,MAAW,qBAAyD;AAAA,EACvH,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,eAAiB,KAAK,oBAAoB,OAAO,YAAY,KAAK;AAAA,IAClE,kBAAoB,KAAK,uBAAuB,OAAO,YAAY,yBAAyB,KAAK,mBAAmB;AAAA,IACpH,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,IAC5D,MAAQ,KAAK,WAAW,OAAO,YAAY,KAAK;AAAA,IAChD,MAAQ,KAAK,WAAW,OAAO,YAAY,KAAK;AAAA,IAChD,mBAAuB,KAAK,qBAAoC,IAAI,iCAAiC;AAAA,IACrG,WAAa,KAAK,gBAAgB,OAAO,YAAY,4BAA4B,KAAK,YAAY;AAAA,IAClG,oBAAwB,KAAK,sBAAqC,IAAI,kCAAkC;AAAA,IACxG,aAAe,KAAK,kBAAkB,OAAO,YAAY,KAAK;AAAA,IAC9D,gBAAkB,KAAK,qBAAqB,OAAO,YAAY,KAAK;AAAA,IACpE,uBAAyB,KAAK,4BAA4B,OAAO,YAAY,KAAK;AAAA,IAClF,sBAAwB,KAAK,2BAA2B,OAAO,YAAY,KAAK;AAAA,IAChF,kBAAoB,KAAK,uBAAuB,OAAO,YAAY,KAAK;AAAA,IACxE,mBAAqB,KAAK,wBAAwB,OAAO,YAAY,KAAK;AAAA,EAC9E;AAAA;AAGG,SAAS,+BAA+B,CAAC,MAAsC;AAAA,EAClF,OAAO,qCAAqC,MAAM,KAAK;AAAA;AAGpD,SAAS,oCAAoC,CAAC,OAA0C,sBAA+B,OAAY;AAAA,EACtI,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,eAAiB,MAAM;AAAA,IACvB,kBAAoB,uBAAuB,MAAM,mBAAmB;AAAA,IACpE,YAAc,MAAM;AAAA,IACpB,MAAQ,MAAM;AAAA,IACd,MAAQ,MAAM;AAAA,IACd,mBAAuB,MAAM,qBAAoC,IAAI,+BAA+B;AAAA,IACpG,WAAa,0BAA0B,MAAM,YAAY;AAAA,IACzD,oBAAwB,MAAM,sBAAqC,IAAI,gCAAgC;AAAA,IACvG,aAAe,MAAM;AAAA,IACrB,gBAAkB,MAAM;AAAA,IACxB,uBAAyB,MAAM;AAAA,IAC/B,sBAAwB,MAAM;AAAA,IAC9B,kBAAoB,MAAM;AAAA,IAC1B,mBAAqB,MAAM;AAAA,EAC/B;AAAA;;ACpLG,IAAM,8BAA8B;AAAA,EACvC,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AACZ;AAIO,SAAS,qCAAqC,CAAC,OAAqB;AAAA,EACvE,WAAW,OAAO,6BAA6B;AAAA,IAC3C,IAAI,OAAO,UAAU,eAAe,KAAK,6BAA6B,GAAG,GAAG;AAAA,MACxE,IAAI,4BAA4B,SAAqD,OAAO;AAAA,QACxF,OAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAGJ,SAAS,mCAAmC,CAAC,MAAwC;AAAA,EACxF,OAAO,yCAAyC,MAAM,KAAK;AAAA;AAGxD,SAAS,wCAAwC,CAAC,MAAW,qBAA2D;AAAA,EAC3H,OAAO;AAAA;AAGJ,SAAS,iCAAiC,CAAC,OAAiD;AAAA,EAC/F,OAAO;AAAA;AAGJ,SAAS,sCAAsC,CAAC,OAAY,qBAA2D;AAAA,EAC1H,OAAO;AAAA;;ACRJ,SAAS,oBAAoB,CAAC,OAAoC;AAAA,EACrE,IAAI,EAAE,wBAAwB,UAAU,MAAM,0BAA0B;AAAA,IAAW,OAAO;AAAA,EAC1F,OAAO;AAAA;AAGJ,SAAS,kBAAkB,CAAC,MAAuB;AAAA,EACtD,OAAO,wBAAwB,MAAM,KAAK;AAAA;AAGvC,SAAS,uBAAuB,CAAC,MAAW,qBAA0C;AAAA,EACzF,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,oBAAsB,KAAK;AAAA,IAC3B,MAAQ,KAAK,WAAW,OAAO,YAAY,KAAK;AAAA,IAChD,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,EAC9D;AAAA;AAGG,SAAS,gBAAgB,CAAC,MAAuB;AAAA,EACpD,OAAO,sBAAsB,MAAM,KAAK;AAAA;AAGrC,SAAS,qBAAqB,CAAC,OAA2B,sBAA+B,OAAY;AAAA,EACxG,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,oBAAsB,MAAM;AAAA,IAC5B,MAAQ,MAAM;AAAA,IACd,WAAa,MAAM;AAAA,EACvB;AAAA;;ACnCG,SAAS,qBAAqB,CAAC,OAAqC;AAAA,EACvE,IAAI,EAAE,UAAU,UAAU,MAAM,YAAY;AAAA,IAAW,OAAO;AAAA,EAC9D,IAAI,EAAE,SAAS,UAAU,MAAM,WAAW;AAAA,IAAW,OAAO;AAAA,EAC5D,IAAI,EAAE,yBAAyB,UAAU,MAAM,2BAA2B;AAAA,IAAW,OAAO;AAAA,EAC5F,OAAO;AAAA;AAGJ,SAAS,mBAAmB,CAAC,MAAwB;AAAA,EACxD,OAAO,yBAAyB,MAAM,KAAK;AAAA;AAGxC,SAAS,wBAAwB,CAAC,MAAW,qBAA2C;AAAA,EAC3F,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,MAAQ,KAAK;AAAA,IACb,KAAO,KAAK;AAAA,IACZ,qBAAuB,KAAK;AAAA,EAChC;AAAA;AAGG,SAAS,iBAAiB,CAAC,MAAwB;AAAA,EACtD,OAAO,uBAAuB,MAAM,KAAK;AAAA;AAGtC,SAAS,sBAAsB,CAAC,OAA4B,sBAA+B,OAAY;AAAA,EAC1G,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,MAAQ,MAAM;AAAA,IACd,KAAO,MAAM;AAAA,IACb,qBAAuB,MAAM;AAAA,EACjC;AAAA;;AC2BG,SAAS,qBAAqB,CAAC,OAAqC;AAAA,EACvE,IAAI,EAAE,SAAS,UAAU,MAAM,WAAW;AAAA,IAAW,OAAO;AAAA,EAC5D,IAAI,EAAE,UAAU,UAAU,MAAM,YAAY;AAAA,IAAW,OAAO;AAAA,EAC9D,IAAI,EAAE,mBAAmB,UAAU,MAAM,qBAAqB;AAAA,IAAW,OAAO;AAAA,EAChF,IAAI,EAAE,uBAAuB,UAAU,MAAM,yBAAyB;AAAA,IAAW,OAAO;AAAA,EACxF,IAAI,EAAE,gBAAgB,UAAU,MAAM,kBAAkB;AAAA,IAAW,OAAO;AAAA,EAC1E,IAAI,EAAE,iBAAiB,UAAU,MAAM,mBAAmB;AAAA,IAAW,OAAO;AAAA,EAC5E,IAAI,EAAE,WAAW,UAAU,MAAM,aAAa;AAAA,IAAW,OAAO;AAAA,EAChE,IAAI,EAAE,4BAA4B,UAAU,MAAM,8BAA8B;AAAA,IAAW,OAAO;AAAA,EAClG,IAAI,EAAE,+BAA+B,UAAU,MAAM,iCAAiC;AAAA,IAAW,OAAO;AAAA,EACxG,OAAO;AAAA;AAGJ,SAAS,mBAAmB,CAAC,MAAwB;AAAA,EACxD,OAAO,yBAAyB,MAAM,KAAK;AAAA;AAGxC,SAAS,wBAAwB,CAAC,MAAW,qBAA2C;AAAA,EAC3F,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,KAAO,KAAK;AAAA,IACZ,MAAQ,KAAK;AAAA,IACb,eAAiB,KAAK;AAAA,IACtB,mBAAqB,KAAK;AAAA,IAC1B,YAAc,KAAK;AAAA,IACnB,aAAe,KAAK,kBAAkB,OAAO,YAAY,KAAK;AAAA,IAC9D,aAAgB,IAAI,KAAK,KAAK,cAAc;AAAA,IAC5C,aAAe,KAAK,kBAAkB,OAAO,YAAY,KAAK;AAAA,IAC9D,cAAgB,KAAK,mBAAmB,OAAO,YAAY,KAAK;AAAA,IAChE,OAAS,oCAAoC,KAAK,QAAQ;AAAA,IAC1D,wBAA0B,KAAK;AAAA,IAC/B,2BAA6B,KAAK;AAAA,EACtC;AAAA;AAGG,SAAS,iBAAiB,CAAC,MAAwB;AAAA,EACtD,OAAO,uBAAuB,MAAM,KAAK;AAAA;AAGtC,SAAS,sBAAsB,CAAC,OAA4B,sBAA+B,OAAY;AAAA,EAC1G,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,KAAO,MAAM;AAAA,IACb,MAAQ,MAAM;AAAA,IACd,eAAiB,MAAM;AAAA,IACvB,mBAAqB,MAAM;AAAA,IAC3B,YAAc,MAAM;AAAA,IACpB,aAAe,MAAM;AAAA,IACrB,aAAe,MAAM,eAAe,YAAY;AAAA,IAChD,aAAe,MAAM;AAAA,IACrB,cAAgB,MAAM;AAAA,IACtB,OAAS,kCAAkC,MAAM,QAAQ;AAAA,IACzD,wBAA0B,MAAM;AAAA,IAChC,2BAA6B,MAAM;AAAA,EACvC;AAAA;;AC7HG,SAAS,uBAAuB,CAAC,OAAuC;AAAA,EAC3E,IAAI,EAAE,WAAW,UAAU,MAAM,aAAa;AAAA,IAAW,OAAO;AAAA,EAChE,IAAI,EAAE,UAAU,UAAU,MAAM,YAAY;AAAA,IAAW,OAAO;AAAA,EAC9D,IAAI,EAAE,iBAAiB,UAAU,MAAM,mBAAmB;AAAA,IAAW,OAAO;AAAA,EAC5E,OAAO;AAAA;AAGJ,SAAS,qBAAqB,CAAC,MAA0B;AAAA,EAC5D,OAAO,2BAA2B,MAAM,KAAK;AAAA;AAG1C,SAAS,0BAA0B,CAAC,MAAW,qBAA6C;AAAA,EAC/F,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,OAAS,KAAK;AAAA,IACd,MAAQ,KAAK;AAAA,IACb,aAAe,KAAK;AAAA,EACxB;AAAA;AAGG,SAAS,mBAAmB,CAAC,MAA0B;AAAA,EAC1D,OAAO,yBAAyB,MAAM,KAAK;AAAA;AAGxC,SAAS,wBAAwB,CAAC,OAA8B,sBAA+B,OAAY;AAAA,EAC9G,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,OAAS,MAAM;AAAA,IACf,MAAQ,MAAM;AAAA,IACd,aAAe,MAAM;AAAA,EACzB;AAAA;;;ACXG,SAAS,mCAAmC,CAAC,OAAmD;AAAA,EACnG,IAAI,EAAE,SAAS,UAAU,MAAM,WAAW;AAAA,IAAW,OAAO;AAAA,EAC5D,IAAI,EAAE,UAAU,UAAU,MAAM,YAAY;AAAA,IAAW,OAAO;AAAA,EAC9D,IAAI,EAAE,UAAU,UAAU,MAAM,YAAY;AAAA,IAAW,OAAO;AAAA,EAC9D,IAAI,EAAE,gBAAgB,UAAU,MAAM,kBAAkB;AAAA,IAAW,OAAO;AAAA,EAC1E,IAAI,EAAE,aAAa,UAAU,MAAM,eAAe;AAAA,IAAW,OAAO;AAAA,EACpE,OAAO;AAAA;AAGJ,SAAS,iCAAiC,CAAC,MAAsC;AAAA,EACpF,OAAO,uCAAuC,MAAM,KAAK;AAAA;AAGtD,SAAS,sCAAsC,CAAC,MAAW,qBAAyD;AAAA,EACvH,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,KAAO,KAAK;AAAA,IACZ,MAAQ,KAAK;AAAA,IACb,MAAQ,KAAK;AAAA,IACb,MAAQ,KAAK,WAAW,OAAO,YAAY,KAAK;AAAA,IAChD,YAAc,KAAK;AAAA,IACnB,SAAa,KAAK,WAA0B,IAAI,kBAAkB;AAAA,EACtE;AAAA;AAGG,SAAS,+BAA+B,CAAC,MAAsC;AAAA,EAClF,OAAO,qCAAqC,MAAM,KAAK;AAAA;AAGpD,SAAS,oCAAoC,CAAC,OAA0C,sBAA+B,OAAY;AAAA,EACtI,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,KAAO,MAAM;AAAA,IACb,MAAQ,MAAM;AAAA,IACd,MAAQ,MAAM;AAAA,IACd,MAAQ,MAAM;AAAA,IACd,YAAc,MAAM;AAAA,IACpB,SAAa,MAAM,WAA0B,IAAI,gBAAgB;AAAA,EACrE;AAAA;;;ACxDG,SAAS,qCAAqC,CAAC,OAAqD;AAAA,EACvG,IAAI,EAAE,WAAW,UAAU,MAAM,aAAa;AAAA,IAAW,OAAO;AAAA,EAChE,IAAI,EAAE,eAAe,UAAU,MAAM,iBAAiB;AAAA,IAAW,OAAO;AAAA,EACxE,IAAI,EAAE,WAAW,UAAU,MAAM,aAAa;AAAA,IAAW,OAAO;AAAA,EAChE,OAAO;AAAA;AAGJ,SAAS,mCAAmC,CAAC,MAAwC;AAAA,EACxF,OAAO,yCAAyC,MAAM,KAAK;AAAA;AAGxD,SAAS,wCAAwC,CAAC,MAAW,qBAA2D;AAAA,EAC3H,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,OAAS,KAAK;AAAA,IACd,WAAe,KAAK,aAA4B,IAAI,iCAAiC;AAAA,IACrF,OAAW,KAAK,SAAwB,IAAI,qBAAqB;AAAA,EACrE;AAAA;AAGG,SAAS,iCAAiC,CAAC,MAAwC;AAAA,EACtF,OAAO,uCAAuC,MAAM,KAAK;AAAA;AAGtD,SAAS,sCAAsC,CAAC,OAA4C,sBAA+B,OAAY;AAAA,EAC1I,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,OAAS,MAAM;AAAA,IACf,WAAe,MAAM,aAA4B,IAAI,+BAA+B;AAAA,IACpF,OAAW,MAAM,SAAwB,IAAI,mBAAmB;AAAA,EACpE;AAAA;;ACmBG,SAAS,+BAA+B,CAAC,OAA+C;AAAA,EAC3F,IAAI,EAAE,SAAS,UAAU,MAAM,WAAW;AAAA,IAAW,OAAO;AAAA,EAC5D,IAAI,EAAE,iBAAiB,UAAU,MAAM,mBAAmB;AAAA,IAAW,OAAO;AAAA,EAC5E,IAAI,EAAE,oBAAoB,UAAU,MAAM,sBAAsB;AAAA,IAAW,OAAO;AAAA,EAClF,IAAI,EAAE,iBAAiB,UAAU,MAAM,mBAAmB;AAAA,IAAW,OAAO;AAAA,EAC5E,IAAI,EAAE,gBAAgB,UAAU,MAAM,kBAAkB;AAAA,IAAW,OAAO;AAAA,EAC1E,IAAI,EAAE,WAAW,UAAU,MAAM,aAAa;AAAA,IAAW,OAAO;AAAA,EAChE,IAAI,EAAE,4BAA4B,UAAU,MAAM,8BAA8B;AAAA,IAAW,OAAO;AAAA,EAClG,OAAO;AAAA;AAGJ,SAAS,6BAA6B,CAAC,MAAkC;AAAA,EAC5E,OAAO,mCAAmC,MAAM,KAAK;AAAA;AAGlD,SAAS,kCAAkC,CAAC,MAAW,qBAAqD;AAAA,EAC/G,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,KAAO,KAAK;AAAA,IACZ,aAAe,KAAK;AAAA,IACpB,gBAAkB,KAAK;AAAA,IACvB,aAAgB,IAAI,KAAK,KAAK,cAAc;AAAA,IAC5C,YAAc,KAAK;AAAA,IACnB,aAAe,KAAK,kBAAkB,OAAO,YAAY,KAAK;AAAA,IAC9D,aAAe,KAAK,kBAAkB,OAAO,YAAY,KAAK;AAAA,IAC9D,cAAgB,KAAK,mBAAmB,OAAO,YAAY,KAAK;AAAA,IAChE,OAAS,oCAAoC,KAAK,QAAQ;AAAA,IAC1D,wBAA0B,KAAK;AAAA,IAC/B,aAAe,KAAK,kBAAkB,OAAO,YAAY,KAAK;AAAA,IAC9D,YAAc,KAAK,iBAAiB,OAAO,YAAY,oCAAoC,KAAK,aAAa;AAAA,EACjH;AAAA;AAGG,SAAS,2BAA2B,CAAC,MAAkC;AAAA,EAC1E,OAAO,iCAAiC,MAAM,KAAK;AAAA;AAGhD,SAAS,gCAAgC,CAAC,OAAsC,sBAA+B,OAAY;AAAA,EAC9H,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,KAAO,MAAM;AAAA,IACb,aAAe,MAAM;AAAA,IACrB,gBAAkB,MAAM;AAAA,IACxB,aAAe,MAAM,eAAe,YAAY;AAAA,IAChD,YAAc,MAAM;AAAA,IACpB,aAAe,MAAM;AAAA,IACrB,aAAe,MAAM;AAAA,IACrB,cAAgB,MAAM;AAAA,IACtB,OAAS,kCAAkC,MAAM,QAAQ;AAAA,IACzD,wBAA0B,MAAM;AAAA,IAChC,aAAe,MAAM;AAAA,IACrB,YAAc,kCAAkC,MAAM,aAAa;AAAA,EACvE;AAAA;;AChIG,SAAS,+CAA+C,CAAC,OAA+D;AAAA,EAC3H,IAAI,EAAE,WAAW,UAAU,MAAM,aAAa;AAAA,IAAW,OAAO;AAAA,EAChE,IAAI,EAAE,YAAY,UAAU,MAAM,cAAc;AAAA,IAAW,OAAO;AAAA,EAClE,OAAO;AAAA;AAGJ,SAAS,6CAA6C,CAAC,MAAkD;AAAA,EAC5G,OAAO,mDAAmD,MAAM,KAAK;AAAA;AAGlE,SAAS,kDAAkD,CAAC,MAAW,qBAAqE;AAAA,EAC/I,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,OAAS,KAAK;AAAA,IACd,QAAY,KAAK,UAAyB,IAAI,gCAAgC;AAAA,EAClF;AAAA;AAGG,SAAS,2CAA2C,CAAC,MAAkD;AAAA,EAC1G,OAAO,iDAAiD,MAAM,KAAK;AAAA;AAGhE,SAAS,gDAAgD,CAAC,OAAsD,sBAA+B,OAAY;AAAA,EAC9J,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,OAAS,MAAM;AAAA,IACf,QAAY,MAAM,UAAyB,IAAI,8BAA8B;AAAA,EACjF;AAAA;;AClCG,SAAS,kCAAkC,CAAC,OAAkD;AAAA,EACjG,IAAI,EAAE,WAAW,UAAU,MAAM,aAAa;AAAA,IAAW,OAAO;AAAA,EAChE,IAAI,EAAE,YAAY,UAAU,MAAM,cAAc;AAAA,IAAW,OAAO;AAAA,EAClE,OAAO;AAAA;AAGJ,SAAS,gCAAgC,CAAC,MAAqC;AAAA,EAClF,OAAO,sCAAsC,MAAM,KAAK;AAAA;AAGrD,SAAS,qCAAqC,CAAC,MAAW,qBAAwD;AAAA,EACrH,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,OAAS,KAAK;AAAA,IACd,QAAY,KAAK,UAAyB,IAAI,mBAAmB;AAAA,EACrE;AAAA;AAGG,SAAS,8BAA8B,CAAC,MAAqC;AAAA,EAChF,OAAO,oCAAoC,MAAM,KAAK;AAAA;AAGnD,SAAS,mCAAmC,CAAC,OAAyC,sBAA+B,OAAY;AAAA,EACpI,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,OAAS,MAAM;AAAA,IACf,QAAY,MAAM,UAAyB,IAAI,iBAAiB;AAAA,EACpE;AAAA;;ACvBG,SAAS,wBAAwB,CAAC,OAAwC;AAAA,EAC7E,OAAO;AAAA;AAGJ,SAAS,sBAAsB,CAAC,MAA2B;AAAA,EAC9D,OAAO,4BAA4B,MAAM,KAAK;AAAA;AAG3C,SAAS,2BAA2B,CAAC,MAAW,qBAA8C;AAAA,EACjG,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,OAEI;AAAA,IACP,MAAQ,KAAK,WAAW,OAAO,YAAY,KAAK;AAAA,IAChD,OAAS,KAAK,YAAY,OAAO,YAAY,KAAK;AAAA,IAClD,QAAU,KAAK,aAAa,OAAO,YAAY,KAAK;AAAA,IACpD,QAAU,KAAK,aAAa,OAAO,YAAY,KAAK;AAAA,IACpD,UAAY,KAAK,eAAe,OAAO,YAAY,KAAK;AAAA,EAC5D;AAAA;AAGG,SAAS,oBAAoB,CAAC,MAA2B;AAAA,EAC5D,OAAO,0BAA0B,MAAM,KAAK;AAAA;AAGzC,SAAS,yBAAyB,CAAC,OAA+B,sBAA+B,OAAY;AAAA,EAChH,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,OAEI;AAAA,IACP,MAAQ,MAAM;AAAA,IACd,OAAS,MAAM;AAAA,IACf,QAAU,MAAM;AAAA,IAChB,QAAU,MAAM;AAAA,IAChB,UAAY,MAAM;AAAA,EACtB;AAAA;;AC3DG,SAAS,8BAA8B,CAAC,OAA8C;AAAA,EACzF,IAAI,EAAE,UAAU,UAAU,MAAM,YAAY;AAAA,IAAW,OAAO;AAAA,EAC9D,OAAO;AAAA;AAGJ,SAAS,4BAA4B,CAAC,MAAiC;AAAA,EAC1E,OAAO,kCAAkC,MAAM,KAAK;AAAA;AAGjD,SAAS,iCAAiC,CAAC,MAAW,qBAAoD;AAAA,EAC7G,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,MAAQ,KAAK;AAAA,IACb,aAAe,KAAK,kBAAkB,OAAO,YAAY,KAAK;AAAA,EAClE;AAAA;AAGG,SAAS,0BAA0B,CAAC,MAAiC;AAAA,EACxE,OAAO,gCAAgC,MAAM,KAAK;AAAA;AAG/C,SAAS,+BAA+B,CAAC,OAAqC,sBAA+B,OAAY;AAAA,EAC5H,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,MAAQ,MAAM;AAAA,IACd,aAAe,MAAM;AAAA,EACzB;AAAA;;ACpDG,IAAM,sBAAsB;AAAA,EAC/B,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,eAAe;AACnB;AAIO,SAAS,6BAA6B,CAAC,OAAqB;AAAA,EAC/D,WAAW,OAAO,qBAAqB;AAAA,IACnC,IAAI,OAAO,UAAU,eAAe,KAAK,qBAAqB,GAAG,GAAG;AAAA,MAChE,IAAI,oBAAoB,SAA6C,OAAO;AAAA,QACxE,OAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAGJ,SAAS,2BAA2B,CAAC,MAAgC;AAAA,EACxE,OAAO,iCAAiC,MAAM,KAAK;AAAA;AAGhD,SAAS,gCAAgC,CAAC,MAAW,qBAAmD;AAAA,EAC3G,OAAO;AAAA;AAGJ,SAAS,yBAAyB,CAAC,OAAyC;AAAA,EAC/E,OAAO;AAAA;AAGJ,SAAS,8BAA8B,CAAC,OAAY,qBAAmD;AAAA,EAC1G,OAAO;AAAA;;;ACgCJ,SAAS,oBAAoB,CAAC,OAAoC;AAAA,EACrE,IAAI,EAAE,SAAS,UAAU,MAAM,WAAW;AAAA,IAAW,OAAO;AAAA,EAC5D,IAAI,EAAE,UAAU,UAAU,MAAM,YAAY;AAAA,IAAW,OAAO;AAAA,EAC9D,IAAI,EAAE,aAAa,UAAU,MAAM,eAAe;AAAA,IAAW,OAAO;AAAA,EACpE,IAAI,EAAE,kBAAkB,UAAU,MAAM,oBAAoB;AAAA,IAAW,OAAO;AAAA,EAC9E,OAAO;AAAA;AAGJ,SAAS,kBAAkB,CAAC,MAAuB;AAAA,EACtD,OAAO,wBAAwB,MAAM,KAAK;AAAA;AAGvC,SAAS,uBAAuB,CAAC,MAAW,qBAA0C;AAAA,EACzF,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,KAAO,KAAK;AAAA,IACZ,MAAQ,KAAK;AAAA,IACb,aAAe,KAAK,kBAAkB,OAAO,YAAY,KAAK;AAAA,IAC9D,wBAA0B,KAAK,6BAA6B,OAAO,YAAY,KAAK;AAAA,IACpF,SAAW,KAAK;AAAA,IAChB,6BAA+B,KAAK,kCAAkC,OAAO,YAAY,KAAK;AAAA,IAC9F,kCAAoC,KAAK,uCAAuC,OAAO,YAAY,KAAK;AAAA,IACxG,cAAgB,4BAA4B,KAAK,eAAe;AAAA,EACpE;AAAA;AAGG,SAAS,gBAAgB,CAAC,MAAuB;AAAA,EACpD,OAAO,sBAAsB,MAAM,KAAK;AAAA;AAGrC,SAAS,qBAAqB,CAAC,OAA2B,sBAA+B,OAAY;AAAA,EACxG,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,KAAO,MAAM;AAAA,IACb,MAAQ,MAAM;AAAA,IACd,aAAe,MAAM;AAAA,IACrB,wBAA0B,MAAM;AAAA,IAChC,SAAW,MAAM;AAAA,IACjB,6BAA+B,MAAM;AAAA,IACrC,kCAAoC,MAAM;AAAA,IAC1C,cAAgB,0BAA0B,MAAM,eAAe;AAAA,EACnE;AAAA;;AClEG,SAAS,sBAAsB,CAAC,OAAsC;AAAA,EACzE,OAAO;AAAA;AAGJ,SAAS,oBAAoB,CAAC,MAAyB;AAAA,EAC1D,OAAO,0BAA0B,MAAM,KAAK;AAAA;AAGzC,SAAS,yBAAyB,CAAC,MAAW,qBAA4C;AAAA,EAC7F,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,MAAQ,KAAK,WAAW,OAAO,YAAY,KAAK;AAAA,IAChD,MAAQ,KAAK,WAAW,OAAO,YAAY,KAAK;AAAA,IAChD,eAAiB,KAAK,oBAAoB,OAAO,YAAY,KAAK;AAAA,IAClE,kBAAoB,KAAK,uBAAuB,OAAO,YAAY,yBAAyB,KAAK,mBAAmB;AAAA,IACpH,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,EAChE;AAAA;AAGG,SAAS,kBAAkB,CAAC,MAAyB;AAAA,EACxD,OAAO,wBAAwB,MAAM,KAAK;AAAA;AAGvC,SAAS,uBAAuB,CAAC,OAA6B,sBAA+B,OAAY;AAAA,EAC5G,IAAI,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IAEH,MAAQ,MAAM;AAAA,IACd,MAAQ,MAAM;AAAA,IACd,eAAiB,MAAM;AAAA,IACvB,kBAAoB,uBAAuB,MAAM,mBAAmB;AAAA,IACpE,YAAc,MAAM;AAAA,EACxB;AAAA;;ACxEG,MAAM,0BAAkC,QAAQ;AAAA,OAI7C,sBAAqB,CAAC,mBAA8C,eAAkG;AAAA,IACxK,IAAI,kBAAkB,iCAAiC,MAAM;AAAA,MACzD,MAAM,IAAY,cACd,8BACA,0GACJ;AAAA,IACJ;AAAA,IAEA,MAAM,kBAAuB,CAAC;AAAA,IAE9B,MAAM,mBAAwC,CAAC;AAAA,IAE/C,iBAAiB,kBAAkB;AAAA,IAEnC,IAAI,kBAAkB,uBAAuB,MAAM;AAAA,MAC/C,iBAAiB,yBAAyB,OAAO,kBAAkB,mBAAmB;AAAA,IAC1F;AAAA,IAEA,IAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AAAA,MACtD,MAAM,QAAQ,KAAK,cAAc;AAAA,MACjC,MAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAAA,MAE5C,IAAI,aAAa;AAAA,QACb,iBAAiB,mBAAmB,UAAU;AAAA,MAClD;AAAA,IACJ;AAAA,IAEA,IAAI,UAAU;AAAA,IAEd,MAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,iCAAiC,kBAAkB,6BAA6B;AAAA,IAC1F,GAAG,aAAa;AAAA,IAEhB,IAAI,KAAK,WAAW,SAAS,QAAQ,IAAI,cAAc,CAAC,GAAG;AAAA,MACvD,OAAO,IAAY,gBAAwB,QAAQ;AAAA,IACvD,EAAO;AAAA,MACH,OAAO,IAAY,gBAAgB,QAAQ;AAAA;AAAA;AAAA,OAM7C,mBAAkB,CAAC,mBAA8C,eAA6E;AAAA,IAChJ,MAAM,WAAW,MAAM,KAAK,sBAAsB,mBAAmB,aAAa;AAAA,IAClF,OAAO,MAAM,SAAS,MAAM;AAAA;AAGpC;;AChCO,MAAM,uBAA+B,QAAQ;AAAA,OAI1C,qBAAoB,CAAC,mBAA6C,eAAyG;AAAA,IAC7K,IAAI,kBAAkB,4BAA4B,MAAM;AAAA,MACpD,MAAM,IAAY,cACd,yBACA,oGACJ;AAAA,IACJ;AAAA,IAEA,MAAM,kBAAuB,CAAC;AAAA,IAE9B,MAAM,mBAAwC,CAAC;AAAA,IAE/C,iBAAiB,kBAAkB;AAAA,IAEnC,IAAI,kBAAkB,uBAAuB,MAAM;AAAA,MAC/C,iBAAiB,wBAAwB,OAAO,kBAAkB,mBAAmB;AAAA,IACzF;AAAA,IAEA,IAAI,kBAAkB,uBAAuB,MAAM;AAAA,MAC/C,iBAAiB,yBAAyB,OAAO,kBAAkB,mBAAmB;AAAA,IAC1F;AAAA,IAEA,IAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AAAA,MACtD,MAAM,QAAQ,KAAK,cAAc;AAAA,MACjC,MAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAAA,MAE5C,IAAI,aAAa;AAAA,QACb,iBAAiB,mBAAmB,UAAU;AAAA,MAClD;AAAA,IACJ;AAAA,IAEA,IAAI,UAAU;AAAA,IAEd,MAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,4BAA4B,kBAAkB,wBAAwB;AAAA,IAChF,GAAG,aAAa;AAAA,IAEhB,OAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,sBAAsB,SAAS,CAAC;AAAA;AAAA,OAK1F,kBAAiB,CAAC,mBAA6C,eAAoF;AAAA,IACrJ,MAAM,WAAW,MAAM,KAAK,qBAAqB,mBAAmB,aAAa;AAAA,IACjF,OAAO,MAAM,SAAS,MAAM;AAAA;AAAA,OAK1B,uBAAsB,CAAC,mBAA+C,eAA6G;AAAA,IACrL,IAAI,kBAAkB,oBAAoB,MAAM;AAAA,MAC5C,MAAM,IAAY,cACd,iBACA,8FACJ;AAAA,IACJ;AAAA,IAEA,MAAM,kBAAuB,CAAC;AAAA,IAE9B,MAAM,mBAAwC,CAAC;AAAA,IAE/C,IAAI,kBAAkB,uBAAuB,MAAM;AAAA,MAC/C,iBAAiB,yBAAyB,OAAO,kBAAkB,mBAAmB;AAAA,IAC1F;AAAA,IAEA,IAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AAAA,MACtD,MAAM,QAAQ,KAAK,cAAc;AAAA,MACjC,MAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAAA,MAE5C,IAAI,aAAa;AAAA,QACb,iBAAiB,mBAAmB,UAAU;AAAA,MAClD;AAAA,IACJ;AAAA,IAEA,IAAI,UAAU;AAAA,IACd,UAAU,QAAQ,QAAQ,IAAI,oBAAoB,mBAAmB,OAAO,kBAAkB,gBAAgB,CAAC,CAAC;AAAA,IAEhH,MAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAAA,IAEhB,OAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,0BAA0B,SAAS,CAAC;AAAA;AAAA,OAK9F,oBAAmB,CAAC,mBAA+C,eAAwF;AAAA,IAC7J,MAAM,WAAW,MAAM,KAAK,uBAAuB,mBAAmB,aAAa;AAAA,IACnF,OAAO,MAAM,SAAS,MAAM;AAAA;AAAA,OAK1B,mBAAkB,CAAC,mBAA2C,eAA6G;AAAA,IAC7K,IAAI,kBAAkB,wBAAwB,MAAM;AAAA,MAChD,MAAM,IAAY,cACd,qBACA,8FACJ;AAAA,IACJ;AAAA,IAEA,MAAM,kBAAuB,CAAC;AAAA,IAE9B,MAAM,mBAAwC,CAAC;AAAA,IAE/C,iBAAiB,kBAAkB;AAAA,IAEnC,IAAI,kBAAkB,uBAAuB,MAAM;AAAA,MAC/C,iBAAiB,yBAAyB,OAAO,kBAAkB,mBAAmB;AAAA,IAC1F;AAAA,IAEA,IAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AAAA,MACtD,MAAM,QAAQ,KAAK,cAAc;AAAA,MACjC,MAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAAA,MAE5C,IAAI,aAAa;AAAA,QACb,iBAAiB,mBAAmB,UAAU;AAAA,MAClD;AAAA,IACJ;AAAA,IAEA,IAAI,UAAU;AAAA,IAEd,MAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,wBAAwB,kBAAkB,oBAAoB;AAAA,IACxE,GAAG,aAAa;AAAA,IAEhB,OAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,0BAA0B,SAAS,CAAC;AAAA;AAAA,OAK9F,gBAAe,CAAC,mBAA2C,eAAwF;AAAA,IACrJ,MAAM,WAAW,MAAM,KAAK,mBAAmB,mBAAmB,aAAa;AAAA,IAC/E,OAAO,MAAM,SAAS,MAAM;AAAA;AAGpC;;ACpIO,MAAM,oBAA4B,QAAQ;AAAA,OAIvC,yBAAwB,CAAC,mBAAiD,eAAgG;AAAA,IAC5K,IAAI,kBAAkB,iBAAiB,MAAM;AAAA,MACzC,MAAM,IAAY,cACd,cACA,6FACJ;AAAA,IACJ;AAAA,IAEA,MAAM,kBAAuB,CAAC;AAAA,IAE9B,MAAM,mBAAwC,CAAC;AAAA,IAE/C,IAAI,kBAAkB,uBAAuB,MAAM;AAAA,MAC/C,iBAAiB,yBAAyB,OAAO,kBAAkB,mBAAmB;AAAA,IAC1F;AAAA,IAEA,IAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AAAA,MACtD,MAAM,QAAQ,KAAK,cAAc;AAAA,MACjC,MAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAAA,MAE5C,IAAI,aAAa;AAAA,QACb,iBAAiB,mBAAmB,UAAU;AAAA,MAClD;AAAA,IACJ;AAAA,IAEA,IAAI,UAAU;AAAA,IACd,UAAU,QAAQ,QAAQ,IAAI,iBAAiB,mBAAmB,OAAO,kBAAkB,aAAa,CAAC,CAAC;AAAA,IAE1G,MAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAAA,IAEhB,OAAO,IAAY,gBAAgB,QAAQ;AAAA;AAAA,OAKzC,sBAAqB,CAAC,mBAAiD,eAA2E;AAAA,IACpJ,MAAM,KAAK,yBAAyB,mBAAmB,aAAa;AAAA;AAAA,OAKlE,yBAAwB,CAAC,mBAAiD,eAAgG;AAAA,IAC5K,IAAI,kBAAkB,wBAAwB,MAAM;AAAA,MAChD,MAAM,IAAY,cACd,qBACA,oGACJ;AAAA,IACJ;AAAA,IAEA,MAAM,kBAAuB,CAAC;AAAA,IAE9B,MAAM,mBAAwC,CAAC;AAAA,IAE/C,IAAI,kBAAkB,uBAAuB,MAAM;AAAA,MAC/C,iBAAiB,yBAAyB,OAAO,kBAAkB,mBAAmB;AAAA,IAC1F;AAAA,IAEA,IAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AAAA,MACtD,MAAM,QAAQ,KAAK,cAAc;AAAA,MACjC,MAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAAA,MAE5C,IAAI,aAAa;AAAA,QACb,iBAAiB,mBAAmB,UAAU;AAAA,MAClD;AAAA,IACJ;AAAA,IAEA,IAAI,UAAU;AAAA,IACd,UAAU,QAAQ,QAAQ,IAAI,wBAAwB,mBAAmB,OAAO,kBAAkB,oBAAoB,CAAC,CAAC;AAAA,IAExH,MAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAAA,IAEhB,OAAO,IAAY,gBAAgB,QAAQ;AAAA;AAAA,OAKzC,sBAAqB,CAAC,mBAAiD,eAA2E;AAAA,IACpJ,MAAM,KAAK,yBAAyB,mBAAmB,aAAa;AAAA;AAAA,OAKlE,oBAAmB,CAAC,mBAA4C,eAA6G;AAAA,IAC/K,IAAI,kBAAkB,wBAAwB,MAAM;AAAA,MAChD,MAAM,IAAY,cACd,qBACA,+FACJ;AAAA,IACJ;AAAA,IAEA,MAAM,kBAAuB,CAAC;AAAA,IAE9B,MAAM,mBAAwC,CAAC;AAAA,IAE/C,IAAI,kBAAkB,uBAAuB,MAAM;AAAA,MAC/C,iBAAiB,yBAAyB,OAAO,kBAAkB,mBAAmB;AAAA,IAC1F;AAAA,IAEA,IAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AAAA,MACtD,MAAM,QAAQ,KAAK,cAAc;AAAA,MACjC,MAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAAA,MAE5C,IAAI,aAAa;AAAA,QACb,iBAAiB,mBAAmB,UAAU;AAAA,MAClD;AAAA,IACJ;AAAA,IAEA,IAAI,UAAU;AAAA,IACd,UAAU,QAAQ,QAAQ,IAAI,wBAAwB,mBAAmB,OAAO,kBAAkB,oBAAoB,CAAC,CAAC;AAAA,IAExH,MAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAAA,IAEhB,OAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,0BAA0B,SAAS,CAAC;AAAA;AAAA,OAK9F,iBAAgB,CAAC,mBAA4C,eAAwF;AAAA,IACvJ,MAAM,WAAW,MAAM,KAAK,oBAAoB,mBAAmB,aAAa;AAAA,IAChF,OAAO,MAAM,SAAS,MAAM;AAAA;AAAA,OAK1B,sBAAqB,CAAC,mBAA8C,eAAuG;AAAA,IAC7K,IAAI,kBAAkB,iBAAiB,MAAM;AAAA,MACzC,MAAM,IAAY,cACd,cACA,0FACJ;AAAA,IACJ;AAAA,IAEA,MAAM,kBAAuB,CAAC;AAAA,IAE9B,MAAM,mBAAwC,CAAC;AAAA,IAE/C,IAAI,kBAAkB,uBAAuB,MAAM;AAAA,MAC/C,iBAAiB,yBAAyB,OAAO,kBAAkB,mBAAmB;AAAA,IAC1F;AAAA,IAEA,IAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AAAA,MACtD,MAAM,QAAQ,KAAK,cAAc;AAAA,MACjC,MAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAAA,MAE5C,IAAI,aAAa;AAAA,QACb,iBAAiB,mBAAmB,UAAU;AAAA,MAClD;AAAA,IACJ;AAAA,IAEA,IAAI,UAAU;AAAA,IACd,UAAU,QAAQ,QAAQ,IAAI,iBAAiB,mBAAmB,OAAO,kBAAkB,aAAa,CAAC,CAAC;AAAA,IAE1G,MAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAAA,IAEhB,OAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,oBAAoB,SAAS,CAAC;AAAA;AAAA,OAKxF,mBAAkB,CAAC,mBAA8C,eAAkF;AAAA,IACrJ,MAAM,WAAW,MAAM,KAAK,sBAAsB,mBAAmB,aAAa;AAAA,IAClF,OAAO,MAAM,SAAS,MAAM;AAAA;AAAA,OAK1B,+BAA8B,CAAC,mBAAuD,eAA8G;AAAA,IACtM,MAAM,kBAAuB,CAAC;AAAA,IAE9B,MAAM,mBAAwC,CAAC;AAAA,IAE/C,IAAI,kBAAkB,uBAAuB,MAAM;AAAA,MAC/C,iBAAiB,yBAAyB,OAAO,kBAAkB,mBAAmB;AAAA,IAC1F;AAAA,IAEA,IAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AAAA,MACtD,MAAM,QAAQ,KAAK,cAAc;AAAA,MACjC,MAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAAA,MAE5C,IAAI,aAAa;AAAA,QACb,iBAAiB,mBAAmB,UAAU;AAAA,MAClD;AAAA,IACJ;AAAA,IAEA,IAAI,UAAU;AAAA,IAEd,MAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAAA,IAEhB,OAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,UAAU,IAAI,mBAAmB,CAAC;AAAA;AAAA,OAK5F,4BAA2B,CAAC,oBAAwD,CAAC,GAAG,eAAyF;AAAA,IACnL,MAAM,WAAW,MAAM,KAAK,+BAA+B,mBAAmB,aAAa;AAAA,IAC3F,OAAO,MAAM,SAAS,MAAM;AAAA;AAAA,OAK1B,sBAAqB,CAAC,mBAA8C,eAAiH;AAAA,IACvL,IAAI,kBAAkB,wBAAwB,MAAM;AAAA,MAChD,MAAM,IAAY,cACd,qBACA,iGACJ;AAAA,IACJ;AAAA,IAEA,MAAM,kBAAuB,CAAC;AAAA,IAE9B,MAAM,mBAAwC,CAAC;AAAA,IAE/C,IAAI,kBAAkB,uBAAuB,MAAM;AAAA,MAC/C,iBAAiB,yBAAyB,OAAO,kBAAkB,mBAAmB;AAAA,IAC1F;AAAA,IAEA,IAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AAAA,MACtD,MAAM,QAAQ,KAAK,cAAc;AAAA,MACjC,MAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAAA,MAE5C,IAAI,aAAa;AAAA,QACb,iBAAiB,mBAAmB,UAAU;AAAA,MAClD;AAAA,IACJ;AAAA,IAEA,IAAI,UAAU;AAAA,IACd,UAAU,QAAQ,QAAQ,IAAI,wBAAwB,mBAAmB,OAAO,kBAAkB,oBAAoB,CAAC,CAAC;AAAA,IAExH,MAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAAA,IAEhB,OAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,8BAA8B,SAAS,CAAC;AAAA;AAAA,OAKlG,mBAAkB,CAAC,mBAA8C,eAA4F;AAAA,IAC/J,MAAM,WAAW,MAAM,KAAK,sBAAsB,mBAAmB,aAAa;AAAA,IAClF,OAAO,MAAM,SAAS,MAAM;AAAA;AAAA,OAK1B,kBAAiB,CAAC,mBAA0C,eAAkG;AAAA,IAChK,MAAM,kBAAuB,CAAC;AAAA,IAE9B,IAAI,kBAAkB,kBAAkB,MAAM;AAAA,MAC1C,gBAAgB,iBAAiB,kBAAkB;AAAA,IACvD;AAAA,IAEA,MAAM,mBAAwC,CAAC;AAAA,IAE/C,iBAAiB,kBAAkB;AAAA,IAEnC,IAAI,kBAAkB,uBAAuB,MAAM;AAAA,MAC/C,iBAAiB,yBAAyB,OAAO,kBAAkB,mBAAmB;AAAA,IAC1F;AAAA,IAEA,IAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AAAA,MACtD,MAAM,QAAQ,KAAK,cAAc;AAAA,MACjC,MAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAAA,MAE5C,IAAI,aAAa;AAAA,QACb,iBAAiB,mBAAmB,UAAU;AAAA,MAClD;AAAA,IACJ;AAAA,IAEA,IAAI,UAAU;AAAA,IAEd,MAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,kBAAkB;AAAA,IAC5B,GAAG,aAAa;AAAA,IAEhB,IAAI,KAAK,WAAW,SAAS,QAAQ,IAAI,cAAc,CAAC,GAAG;AAAA,MACvD,OAAO,IAAY,gBAAwB,QAAQ;AAAA,IACvD,EAAO;AAAA,MACH,OAAO,IAAY,gBAAgB,QAAQ;AAAA;AAAA;AAAA,OAM7C,eAAc,CAAC,oBAA2C,CAAC,GAAG,eAA6E;AAAA,IAC7I,MAAM,WAAW,MAAM,KAAK,kBAAkB,mBAAmB,aAAa;AAAA,IAC9E,OAAO,MAAM,SAAS,MAAM;AAAA;AAGpC;;ACvWO,MAAM,oBAA4B,QAAQ;AAAA,OAIvC,gBAAe,CAAC,mBAAwC,eAAsG;AAAA,IAChK,IAAI,kBAAkB,2BAA2B,MAAM;AAAA,MACnD,MAAM,IAAY,cACd,wBACA,8FACJ;AAAA,IACJ;AAAA,IAEA,MAAM,kBAAuB,CAAC;AAAA,IAE9B,MAAM,mBAAwC,CAAC;AAAA,IAE/C,iBAAiB,kBAAkB;AAAA,IAEnC,IAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AAAA,MACtD,MAAM,QAAQ,KAAK,cAAc;AAAA,MACjC,MAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAAA,MAE5C,IAAI,aAAa;AAAA,QACb,iBAAiB,mBAAmB,UAAU;AAAA,MAClD;AAAA,IACJ;AAAA,IAEA,IAAI,UAAU;AAAA,IAEd,MAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,2BAA2B,kBAAkB,uBAAuB;AAAA,IAC9E,GAAG,aAAa;AAAA,IAEhB,OAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,mBAAmB,SAAS,CAAC;AAAA;AAAA,OAKvF,aAAY,CAAC,mBAAwC,eAAiF;AAAA,IACxI,MAAM,WAAW,MAAM,KAAK,gBAAgB,mBAAmB,aAAa;AAAA,IAC5E,OAAO,MAAM,SAAS,MAAM;AAAA;AAAA,OAK1B,iBAAgB,CAAC,mBAAyC,eAAsG;AAAA,IAClK,IAAI,kBAAkB,2BAA2B,MAAM;AAAA,MACnD,MAAM,IAAY,cACd,wBACA,+FACJ;AAAA,IACJ;AAAA,IAEA,MAAM,kBAAuB,CAAC;AAAA,IAE9B,MAAM,mBAAwC,CAAC;AAAA,IAE/C,iBAAiB,kBAAkB;AAAA,IAEnC,IAAI,kBAAkB,uBAAuB,MAAM;AAAA,MAC/C,iBAAiB,yBAAyB,OAAO,kBAAkB,mBAAmB;AAAA,IAC1F;AAAA,IAEA,IAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AAAA,MACtD,MAAM,QAAQ,KAAK,cAAc;AAAA,MACjC,MAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAAA,MAE5C,IAAI,aAAa;AAAA,QACb,iBAAiB,mBAAmB,UAAU;AAAA,MAClD;AAAA,IACJ;AAAA,IAEA,IAAI,UAAU;AAAA,IAEd,MAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,2BAA2B,kBAAkB,uBAAuB;AAAA,IAC9E,GAAG,aAAa;AAAA,IAEhB,OAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,mBAAmB,SAAS,CAAC;AAAA;AAAA,OAKvF,cAAa,CAAC,mBAAyC,eAAiF;AAAA,IAC1I,MAAM,WAAW,MAAM,KAAK,iBAAiB,mBAAmB,aAAa;AAAA,IAC7E,OAAO,MAAM,SAAS,MAAM;AAAA;AAGpC;;ACtFO,MAAM,kBAA0B,QAAQ;AAAA,OAIrC,6BAA4B,CAAC,mBAAqD,eAAiI;AAAA,IACrN,IAAI,kBAAkB,gCAAgC,MAAM;AAAA,MACxD,MAAM,IAAY,cACd,6BACA,gHACJ;AAAA,IACJ;AAAA,IAEA,MAAM,kBAAuB,CAAC;AAAA,IAE9B,MAAM,mBAAwC,CAAC;AAAA,IAE/C,iBAAiB,kBAAkB;AAAA,IAEnC,IAAI,kBAAkB,uBAAuB,MAAM;AAAA,MAC/C,iBAAiB,yBAAyB,OAAO,kBAAkB,mBAAmB;AAAA,IAC1F;AAAA,IAEA,IAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AAAA,MACtD,MAAM,QAAQ,KAAK,cAAc;AAAA,MACjC,MAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAAA,MAE5C,IAAI,aAAa;AAAA,QACb,iBAAiB,mBAAmB,UAAU;AAAA,MAClD;AAAA,IACJ;AAAA,IAEA,IAAI,UAAU;AAAA,IAEd,MAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,gCAAgC,kBAAkB,4BAA4B;AAAA,IACxF,GAAG,aAAa;AAAA,IAEhB,OAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,8CAA8C,SAAS,CAAC;AAAA;AAAA,OAKlH,0BAAyB,CAAC,mBAAqD,eAA4G;AAAA,IAC7L,MAAM,WAAW,MAAM,KAAK,6BAA6B,mBAAmB,aAAa;AAAA,IACzF,OAAO,MAAM,SAAS,MAAM;AAAA;AAAA,OAK1B,wBAAuB,CAAC,mBAAgD,eAAoH;AAAA,IAC9L,IAAI,kBAAkB,mBAAmB,MAAM;AAAA,MAC3C,MAAM,IAAY,cACd,gBACA,8FACJ;AAAA,IACJ;AAAA,IAEA,MAAM,kBAAuB,CAAC;AAAA,IAE9B,MAAM,mBAAwC,CAAC;AAAA,IAE/C,iBAAiB,kBAAkB;AAAA,IAEnC,IAAI,kBAAkB,uBAAuB,MAAM;AAAA,MAC/C,iBAAiB,yBAAyB,OAAO,kBAAkB,mBAAmB;AAAA,IAC1F;AAAA,IAEA,IAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AAAA,MACtD,MAAM,QAAQ,KAAK,cAAc;AAAA,MACjC,MAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAAA,MAE5C,IAAI,aAAa;AAAA,QACb,iBAAiB,mBAAmB,UAAU;AAAA,MAClD;AAAA,IACJ;AAAA,IAEA,IAAI,UAAU;AAAA,IAEd,MAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,mBAAmB,kBAAkB,eAAe;AAAA,IAC9D,GAAG,aAAa;AAAA,IAEhB,OAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,iCAAiC,SAAS,CAAC;AAAA;AAAA,OAKrG,qBAAoB,CAAC,mBAAgD,eAA+F;AAAA,IACtK,MAAM,WAAW,MAAM,KAAK,wBAAwB,mBAAmB,aAAa;AAAA,IACpF,OAAO,MAAM,SAAS,MAAM;AAAA;AAGpC;;AC3HO,MAAM,oBAA4B,QAAQ;AAAA,OAIvC,uBAAsB,CAAC,mBAA+C,eAAmH;AAAA,IAC3L,MAAM,kBAAuB,CAAC;AAAA,IAE9B,IAAI,kBAAkB,gBAAgB,MAAM;AAAA,MACxC,gBAAgB,eAAe,kBAAkB;AAAA,IACrD;AAAA,IAEA,IAAI,kBAAkB,gBAAgB,MAAM;AAAA,MACxC,gBAAgB,eAAe,kBAAkB;AAAA,IACrD;AAAA,IAEA,MAAM,mBAAwC,CAAC;AAAA,IAE/C,IAAI,kBAAkB,uBAAuB,MAAM;AAAA,MAC/C,iBAAiB,yBAAyB,OAAO,kBAAkB,mBAAmB;AAAA,IAC1F;AAAA,IAEA,IAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AAAA,MACtD,MAAM,QAAQ,KAAK,cAAc;AAAA,MACjC,MAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAAA,MAE5C,IAAI,aAAa;AAAA,QACb,iBAAiB,mBAAmB,UAAU;AAAA,MAClD;AAAA,IACJ;AAAA,IAEA,IAAI,UAAU;AAAA,IAEd,MAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAAA,IAEhB,OAAO,IAAY,gBAAqB,QAAQ;AAAA;AAAA,OAK9C,oBAAmB,CAAC,oBAAgD,CAAC,GAAG,eAA8F;AAAA,IACxK,MAAM,WAAW,MAAM,KAAK,uBAAuB,mBAAmB,aAAa;AAAA,IACnF,OAAO,MAAM,SAAS,MAAM;AAAA;AAGpC;;AC3EA;AACA;AACA;AACA;AACA;;;ACJA;AACA;AACA;AACA;AACA,2BAAY;;;ACJZ,sBAAQ;AACR;AACA,2BAAY;;;ACFZ;AACA;AACA;;;ACFA;;;ACAA;AAEA,IAAI;AAEJ,SAAS,YAAY,GAAG;AAAA,EACvB,IAAI;AAAA,IACH,GAAG,SAAS,aAAa;AAAA,IACzB,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIT,SAAS,eAAe,GAAG;AAAA,EAC1B,IAAI;AAAA,IACH,OAAO,GAAG,aAAa,qBAAqB,MAAM,EAAE,SAAS,QAAQ;AAAA,IACpE,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIT,SAAwB,QAAQ,GAAG;AAAA,EAElC,IAAI,mBAAmB,WAAW;AAAA,IACjC,iBAAiB,aAAa,KAAK,gBAAgB;AAAA,EACpD;AAAA,EAEA,OAAO;AAAA;;;ADxBR,IAAI;AAGJ,IAAM,kBAAkB,MAAM;AAAA,EAC7B,IAAI;AAAA,IACH,IAAG,SAAS,oBAAoB;AAAA,IAChC,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIT,SAAwB,iBAAiB,GAAG;AAAA,EAE3C,IAAI,iBAAiB,WAAW;AAAA,IAC/B,eAAe,gBAAgB,KAAK,SAAS;AAAA,EAC9C;AAAA,EAEA,OAAO;AAAA;;;ADhBR,IAAM,QAAQ,MAAM;AAAA,EACnB,IAAI,SAAQ,aAAa,SAAS;AAAA,IACjC,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,GAAG,QAAQ,EAAE,YAAY,EAAE,SAAS,WAAW,GAAG;AAAA,IACrD,IAAI,kBAAkB,GAAG;AAAA,MACxB,OAAO;AAAA,IACR;AAAA,IAEA,OAAO;AAAA,EACR;AAAA,EAEA,IAAI;AAAA,IACH,IAAI,IAAG,aAAa,iBAAiB,MAAM,EAAE,YAAY,EAAE,SAAS,WAAW,GAAG;AAAA,MACjF,OAAO,CAAC,kBAAkB;AAAA,IAC3B;AAAA,IACC,MAAM;AAAA,EAGR,IACC,IAAG,WAAW,qCAAqC,KAChD,IAAG,WAAW,UAAU,GAC1B;AAAA,IACD,OAAO,CAAC,kBAAkB;AAAA,EAC3B;AAAA,EAEA,OAAO;AAAA;AAGR,IAAe,0BAAQ,IAAI,kBAAkB,QAAQ,MAAM;;;AGnC3D;AACA,mBAAQ;AACR;AACA;AAGA,IAAM,WAAW,UAAU,aAAa,QAAQ;AAEzC,IAAM,iBAAiB,MAAM,GAAG,SAAQ,IAAI,cAAc,SAAQ,IAAI,UAAU,OAAO;AAkBvF,IAAM,oBAAoB,OAAO,SAAS,UAAU,CAAC,MAAM;AAAA,EACjE;AAAA,IACC,gBAAgB;AAAA,OACb;AAAA,MACA;AAAA,EAEJ,MAAM,iBAAiB,kBAAkB,cAAc,OAAO;AAAA,EAE9D,OAAO,SACN,UAAU,eAAe,GACzB;AAAA,IACC,GAAG,kBAAkB;AAAA,IACrB;AAAA,EACD,GACA;AAAA,IACC,UAAU;AAAA,OACP;AAAA,EACJ,CACD;AAAA;AAGD,kBAAkB,kBAAkB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,kBAAkB,gBAAgB,aAAW,QAAO,KAAK,SAAS,SAAS,EAAE,SAAS,QAAQ;AAE9F,kBAAkB,iBAAiB,WAAS,IAAI,OAAO,KAAK,EAAE,WAAW,KAAM,IAAM;;;ACzD9E,SAAS,yBAAyB,CAAC,SAAS;AAAA,EAClD,WAAW,QAAQ,QAAQ,MAAM;AAAA,CAAI,GAAG;AAAA,IAEvC,IAAI,QAAQ,KAAK,IAAI,GAAG;AAAA,MACvB;AAAA,IACD;AAAA,IAGA,MAAM,QAAQ,sDAAsD,KAAK,IAAI;AAAA,IAC7E,IAAI,CAAC,OAAO;AAAA,MACX;AAAA,IACD;AAAA,IAEA,OAAO,MAAM,OAAO,WAClB,KAAK,EAEL,WAAW,gBAAgB,EAAE;AAAA,EAChC;AAAA;;;ALVD,IAAM,YAAW,WAAU,cAAa,QAAQ;AAEzC,IAAM,uBAAuB,MAAM;AAAA,EAGzC,MAAM,oBAAoB;AAAA,EAE1B,IAAI;AAAA,EAEJ,OAAO,cAAe,GAAG;AAAA,IACxB,IAAI,YAAY;AAAA,MAEf,OAAO;AAAA,IACR;AAAA,IAEA,MAAM,iBAAiB;AAAA,IAEvB,IAAI,qBAAqB;AAAA,IACzB,IAAI;AAAA,MACH,MAAM,IAAG,OAAO,gBAAgB,YAAY,IAAI;AAAA,MAChD,qBAAqB;AAAA,MACpB,MAAM;AAAA,IAER,IAAI,CAAC,oBAAoB;AAAA,MACxB,OAAO;AAAA,IACR;AAAA,IAEA,MAAM,gBAAgB,MAAM,IAAG,SAAS,gBAAgB,EAAC,UAAU,OAAM,CAAC;AAAA,IAC1E,MAAM,mBAAmB,0BAA0B,aAAa;AAAA,IAEhE,IAAI,qBAAqB,WAAW;AAAA,MACnC,OAAO;AAAA,IACR;AAAA,IAEA,aAAa;AAAA,IACb,aAAa,WAAW,SAAS,GAAG,IAAI,aAAa,GAAG;AAAA,IAExD,OAAO;AAAA;AAAA,GAEN;AAEI,IAAM,wBAAwB,YAAY;AAAA,EAChD,MAAM,aAAa,MAAM,oBAAoB;AAAA,EAC7C,OAAO,GAAG;AAAA;AAGJ,IAAM,kBAAiB,iBAAQ,wBAAwB;AAG9D,IAAI;AAEG,IAAM,sBAAsB,YAAY;AAAA,EAC9C,gCAAgC,YAAY;AAAA,IAC3C,IAAI;AAAA,MACH,MAAM,SAAS,MAAM,gBAAe;AAAA,MACpC,MAAM,IAAG,OAAO,QAAQ,YAAY,IAAI;AAAA,MACxC,OAAO;AAAA,MACN,MAAM;AAAA,MAEP,OAAO;AAAA;AAAA,KAEN;AAAA,EAEH,OAAO;AAAA;AAGD,IAAM,oBAAoB,YAAY;AAAA,EAC5C,MAAM,SAAS,MAAM,gBAAe;AAAA,EACpC,MAAM,UAAU,OAAO;AAAA,EAEvB,QAAO,WAAU,MAAM,kBAAkB,SAAS,EAAC,gBAAgB,OAAM,CAAC;AAAA,EAE1E,OAAO,OAAO,KAAK;AAAA;AAGb,IAAM,0BAA0B,OAAM,SAAQ;AAAA,EAEpD,IAAI,gBAAgB,KAAK,IAAI,GAAG;AAAA,IAC/B,OAAO;AAAA,EACR;AAAA,EAEA,IAAI;AAAA,IACH,QAAO,WAAU,MAAM,UAAS,WAAW,CAAC,OAAO,IAAI,GAAG,EAAC,UAAU,OAAM,CAAC;AAAA,IAC5E,OAAO,OAAO,KAAK;AAAA,IAClB,MAAM;AAAA,IAEP,OAAO;AAAA;AAAA;;;AM7FT,SAAwB,kBAAkB,CAAC,QAAQ,cAAc,aAAa;AAAA,EAC7E,MAAM,SAAS,WAAS,OAAO,eAAe,QAAQ,cAAc,EAAC,OAAO,YAAY,MAAM,UAAU,KAAI,CAAC;AAAA,EAE7G,OAAO,eAAe,QAAQ,cAAc;AAAA,IAC3C,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,GAAG,GAAG;AAAA,MACL,MAAM,SAAS,YAAY;AAAA,MAC3B,OAAO,MAAM;AAAA,MACb,OAAO;AAAA;AAAA,IAER,GAAG,CAAC,OAAO;AAAA,MACV,OAAO,KAAK;AAAA;AAAA,EAEd,CAAC;AAAA,EAED,OAAO;AAAA;;;AChBR,sBAAQ;AACR;AACA,qBAAQ;;;ACFR,sBAAQ;AACR;AACA,qBAAQ;AAER,IAAM,gBAAgB,WAAU,SAAQ;AAExC,eAA8B,gBAAgB,GAAG;AAAA,EAChD,IAAI,SAAQ,aAAa,UAAU;AAAA,IAClC,MAAM,IAAI,MAAM,YAAY;AAAA,EAC7B;AAAA,EAEA,QAAO,WAAU,MAAM,cAAc,YAAY,CAAC,QAAQ,4DAA4D,YAAY,CAAC;AAAA,EAGnI,MAAM,QAAQ,mFAAmF,KAAK,MAAM;AAAA,EAE5G,MAAM,YAAY,OAAO,OAAO,MAAM;AAAA,EAGtC,IAAI,cAAc,oBAAoB;AAAA,IACrC,OAAO;AAAA,EACR;AAAA,EAEA,OAAO;AAAA;;;ACvBR;AACA,sBAAQ;AACR,qBAAQ;AAER,IAAM,iBAAgB,WAAU,SAAQ;AAExC,eAAsB,cAAc,CAAC,UAAS,sBAAsB,MAAM,WAAU,CAAC,GAAG;AAAA,EACvF,IAAI,SAAQ,aAAa,UAAU;AAAA,IAClC,MAAM,IAAI,MAAM,YAAY;AAAA,EAC7B;AAAA,EAEA,MAAM,kBAAkB,sBAAsB,CAAC,IAAI,CAAC,KAAK;AAAA,EAEzD,MAAM,cAAc,CAAC;AAAA,EACrB,IAAI,QAAQ;AAAA,IACX,YAAY,SAAS;AAAA,EACtB;AAAA,EAEA,QAAO,WAAU,MAAM,eAAc,aAAa,CAAC,MAAM,QAAQ,eAAe,GAAG,WAAW;AAAA,EAC9F,OAAO,OAAO,KAAK;AAAA;;;ACjBpB,eAA8B,UAAU,CAAC,UAAU;AAAA,EAClD,OAAO,eAAe,qEAAqE;AAAA,6IAAmK;AAAA;;;ACH/P,sBAAQ;AACR,qBAAQ;AAER,IAAM,iBAAgB,WAAU,SAAQ;AAMxC,IAAM,wBAAwB;AAAA,EAC7B,WAAW,EAAC,MAAM,QAAQ,IAAI,qBAAoB;AAAA,EAClD,aAAa,EAAC,MAAM,aAAa,IAAI,0BAAyB;AAAA,EAC9D,aAAa,EAAC,MAAM,YAAY,IAAI,yBAAwB;AAAA,EAC5D,sCAAsC,EAAC,MAAM,QAAQ,IAAI,yBAAwB;AAAA,EACjF,YAAY,EAAC,MAAM,UAAU,IAAI,oBAAmB;AAAA,EACpD,aAAa,EAAC,MAAM,eAAe,IAAI,yBAAwB;AAAA,EAC/D,aAAa,EAAC,MAAM,cAAc,IAAI,wBAAuB;AAAA,EAC7D,aAAa,EAAC,MAAM,YAAY,IAAI,wBAAuB;AAAA,EAC3D,WAAW,EAAC,MAAM,SAAS,IAAI,oBAAmB;AAAA,EAClD,YAAY,EAAC,MAAM,cAAc,IAAI,yBAAwB;AAAA,EAC7D,YAAY,EAAC,MAAM,aAAa,IAAI,wBAAuB;AAAA,EAC3D,YAAY,EAAC,MAAM,iBAAiB,IAAI,4BAA2B;AAAA,EACnE,YAAY,EAAC,MAAM,WAAW,IAAI,sBAAqB;AAAA,EACvD,aAAa,EAAC,MAAM,SAAS,IAAI,0BAAyB;AAAA,EAC1D,YAAY,EAAC,MAAM,WAAW,IAAI,sBAAqB;AAAA,EACvD,WAAW,EAAC,MAAM,qBAAqB,IAAI,mBAAkB;AAC9D;AAEO,IAAM,2BAA2B,IAAI,IAAI,OAAO,QAAQ,qBAAqB,CAAC;AAAA;AAE9E,MAAM,4BAA4B,MAAM;AAAC;AAEhD,eAA8B,cAAc,CAAC,iBAAiB,gBAAe;AAAA,EAC5E,QAAO,WAAU,MAAM,eAAe,OAAO;AAAA,IAC5C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AAAA,EAED,MAAM,QAAQ,+BAA+B,KAAK,MAAM;AAAA,EACxD,IAAI,CAAC,OAAO;AAAA,IACX,MAAM,IAAI,oBAAoB,0CAA0C,KAAK,UAAU,MAAM,GAAG;AAAA,EACjG;AAAA,EAEA,QAAO,OAAM,MAAM;AAAA,EAKnB,MAAM,WAAW,GAAG,YAAY,GAAG;AAAA,EACnC,MAAM,cAAc,GAAG,YAAY,GAAG;AAAA,EACtC,MAAM,cAAc,aAAa,KAAK,YAAY,GAAG,MAAM,GAAG,QAAQ;AAAA,EACtE,MAAM,iBAAiB,gBAAgB,KAAK,YAAY,GAAG,MAAM,GAAG,WAAW;AAAA,EAE/E,OAAO,sBAAsB,OAAO,sBAAsB,gBAAgB,sBAAsB,mBAAmB,EAAC,MAAM,IAAI,GAAE;AAAA;;;AJ9CjI,IAAM,iBAAgB,WAAU,SAAQ;AAGxC,IAAM,WAAW,YAAU,OAAO,YAAY,EAAE,WAAW,iBAAiB,OAAK,EAAE,YAAY,CAAC;AAEhG,eAA8B,eAAc,GAAG;AAAA,EAC9C,IAAI,SAAQ,aAAa,UAAU;AAAA,IAClC,MAAM,KAAK,MAAM,iBAAiB;AAAA,IAClC,MAAM,OAAO,MAAM,WAAW,EAAE;AAAA,IAChC,OAAO,EAAC,MAAM,GAAE;AAAA,EACjB;AAAA,EAEA,IAAI,SAAQ,aAAa,SAAS;AAAA,IACjC,QAAO,WAAU,MAAM,eAAc,YAAY,CAAC,SAAS,WAAW,uBAAuB,CAAC;AAAA,IAC9F,MAAM,KAAK,OAAO,KAAK;AAAA,IACvB,MAAM,OAAO,SAAS,GAAG,QAAQ,aAAa,EAAE,EAAE,QAAQ,KAAK,GAAG,CAAC;AAAA,IACnE,OAAO,EAAC,MAAM,GAAE;AAAA,EACjB;AAAA,EAEA,IAAI,SAAQ,aAAa,SAAS;AAAA,IACjC,OAAO,eAAQ;AAAA,EAChB;AAAA,EAEA,MAAM,IAAI,MAAM,8CAA8C;AAAA;;;AKhC/D;AAEA,IAAM,UAAU,QAAQ,SAAQ,IAAI,kBAChC,SAAQ,IAAI,cACZ,SAAQ,IAAI,OAAO;AAEvB,IAAe;;;AbYf,IAAM,wBAAwB,OAAO,iBAAiB;AAGtD,IAAM,aAAY,YAAY,MAAM,KAAK,QAAQ,cAAc,YAAY,GAAG,CAAC,IAAI;AACnF,IAAM,mBAAmB,KAAK,KAAK,YAAW,UAAU;AAExD,MAAO,UAAU,SAAQ;AAEzB,IAAM,aAAa,OAAO,MAAM,WAAW;AAAA,EAC1C,IAAI,KAAK,WAAW,GAAG;AAAA,IAEtB;AAAA,EACD;AAAA,EAEA,MAAM,SAAS,CAAC;AAAA,EAEhB,WAAW,OAAO,MAAM;AAAA,IACvB,IAAI;AAAA,MACH,OAAO,MAAM,OAAO,GAAG;AAAA,MACtB,OAAO,OAAO;AAAA,MACf,OAAO,KAAK,KAAK;AAAA;AAAA,EAEnB;AAAA,EAEA,MAAM,IAAI,eAAe,QAAQ,sCAAsC;AAAA;AAIxE,IAAM,WAAW,OAAM,YAAW;AAAA,EACjC,UAAU;AAAA,IACT,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,sBAAsB;AAAA,OACnB;AAAA,EACJ;AAAA,EAEA,MAAM,oBAAoB,QAAQ,2BAA2B;AAAA,EAC7D,OAAO,QAAQ;AAAA,EAEf,IAAI,MAAM,QAAQ,QAAQ,GAAG,GAAG;AAAA,IAC/B,OAAO,WAAW,QAAQ,KAAK,eAAa,SAAS;AAAA,SACjD;AAAA,MACH,KAAK;AAAA,OACJ,wBAAwB;AAAA,IAC1B,CAAC,CAAC;AAAA,EACH;AAAA,EAEA,MAAK,MAAM,KAAK,WAAW,eAAe,CAAC,MAAK,QAAQ,OAAO,CAAC;AAAA,EAChE,eAAe,CAAC,GAAG,YAAY;AAAA,EAE/B,IAAI,MAAM,QAAQ,GAAG,GAAG;AAAA,IACvB,OAAO,WAAW,KAAK,aAAW,SAAS;AAAA,SACvC;AAAA,MACH,KAAK;AAAA,QACJ,MAAM;AAAA,QACN,WAAW;AAAA,MACZ;AAAA,OACC,wBAAwB;AAAA,IAC1B,CAAC,CAAC;AAAA,EACH;AAAA,EAEA,IAAI,QAAQ,aAAa,QAAQ,kBAAkB;AAAA,IAGlD,MAAM,MAAM;AAAA,MACX,qBAAqB;AAAA,MACrB,yBAAyB;AAAA,MACzB,qBAAqB;AAAA,MACrB,uBAAuB;AAAA,MACvB,mBAAmB;AAAA,MACnB,wBAAwB;AAAA,MACxB,sBAAsB;AAAA,MACtB,yBAAyB;AAAA,MACzB,0BAA0B;AAAA,MAC1B,oBAAoB;AAAA,IACrB;AAAA,IAGA,MAAM,QAAQ;AAAA,MACb,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,IAEP;AAAA,IAEA,IAAI;AAAA,IACJ,IAAI,gBAAO;AAAA,MACV,MAAM,SAAS,MAAM,kBAAkB;AAAA,MACvC,MAAM,cAAc,yBAAyB,IAAI,MAAM;AAAA,MACvD,UAAU,eAAe,CAAC;AAAA,IAC3B,EAAO;AAAA,MACN,UAAU,MAAM,gBAAe;AAAA;AAAA,IAGhC,IAAI,QAAQ,MAAM,KAAK;AAAA,MACtB,MAAM,cAAc,IAAI,QAAQ,GAAG,YAAY;AAAA,MAE/C,IAAI,QAAQ,kBAAkB;AAAA,QAE7B,IAAI,gBAAgB,UAAU;AAAA,UAC7B,MAAM,IAAI,MAAM,iEAAkE;AAAA,QACnF;AAAA,QAEA,aAAa,KAAK,MAAM,YAAY;AAAA,MACrC;AAAA,MAEA,OAAO,SAAS;AAAA,WACZ;AAAA,QACH,KAAK;AAAA,UACJ,MAAM,KAAK;AAAA,UACX,WAAW;AAAA,QACZ;AAAA,MACD,CAAC;AAAA,IACF;AAAA,IAEA,MAAM,IAAI,MAAM,GAAG,QAAQ,4CAA4C;AAAA,EACxE;AAAA,EAEA,IAAI;AAAA,EACJ,MAAM,eAAe,CAAC;AAAA,EACtB,MAAM,sBAAsB,CAAC;AAAA,EAK7B,IAAI,wBAAwB;AAAA,EAC5B,IAAI,kBAAS,CAAC,kBAAkB,KAAK,CAAC,qBAAW,CAAC,KAAK;AAAA,IACtD,wBAAwB,MAAM,oBAAoB;AAAA,EACnD;AAAA,EAEA,IAAI,aAAa,UAAU;AAAA,IAC1B,UAAU;AAAA,IAEV,IAAI,QAAQ,MAAM;AAAA,MACjB,aAAa,KAAK,aAAa;AAAA,IAChC;AAAA,IAEA,IAAI,QAAQ,YAAY;AAAA,MACvB,aAAa,KAAK,cAAc;AAAA,IACjC;AAAA,IAEA,IAAI,QAAQ,aAAa;AAAA,MACxB,aAAa,KAAK,OAAO;AAAA,IAC1B;AAAA,IAEA,IAAI,KAAK;AAAA,MACR,aAAa,KAAK,MAAM,GAAG;AAAA,IAC5B;AAAA,EACD,EAAO,SAAI,aAAa,WAAW,uBAAuB;AAAA,IACzD,UAAU,MAAM,gBAAe;AAAA,IAE/B,aAAa,KAAK,GAAG,kBAAkB,eAAe;AAAA,IAEtD,IAAI,CAAC,gBAAO;AAAA,MACX,oBAAoB,2BAA2B;AAAA,IAChD;AAAA,IAGA,IAAI,kBAAS,QAAQ,QAAQ;AAAA,MAC5B,QAAQ,SAAS,MAAM,wBAAwB,QAAQ,MAAM;AAAA,IAC9D;AAAA,IAGA,MAAM,mBAAmB,CAAC,6CAA+C,OAAO;AAAA,IAEhF,IAAI,QAAQ,MAAM;AAAA,MACjB,iBAAiB,KAAK,OAAO;AAAA,IAC9B;AAAA,IAEA,IAAI,KAAK;AAAA,MACR,iBAAiB,KAAK,kBAAkB,eAAe,GAAG,CAAC;AAAA,MAC3D,IAAI,QAAQ,QAAQ;AAAA,QACnB,aAAa,KAAK,QAAQ,MAAM;AAAA,MACjC;AAAA,IACD,EAAO,SAAI,QAAQ,QAAQ;AAAA,MAC1B,iBAAiB,KAAK,kBAAkB,eAAe,QAAQ,MAAM,CAAC;AAAA,IACvE;AAAA,IAEA,IAAI,aAAa,SAAS,GAAG;AAAA,MAC5B,eAAe,aAAa,IAAI,cAAY,kBAAkB,eAAe,QAAQ,CAAC;AAAA,MACtF,iBAAiB,KAAK,iBAAiB,aAAa,KAAK,GAAG,CAAC;AAAA,IAC9D;AAAA,IAGA,QAAQ,SAAS,kBAAkB,cAAc,iBAAiB,KAAK,GAAG,CAAC;AAAA,IAE3E,IAAI,CAAC,QAAQ,MAAM;AAAA,MAElB,oBAAoB,QAAQ;AAAA,IAC7B;AAAA,EACD,EAAO;AAAA,IACN,IAAI,KAAK;AAAA,MACR,UAAU;AAAA,IACX,EAAO;AAAA,MAEN,MAAM,YAAY,CAAC,cAAa,eAAc;AAAA,MAG9C,IAAI,kBAAkB;AAAA,MACtB,IAAI;AAAA,QACH,MAAM,IAAG,OAAO,kBAAkB,aAAY,IAAI;AAAA,QAClD,kBAAkB;AAAA,QACjB,MAAM;AAAA,MAER,MAAM,mBAAmB,SAAQ,SAAS,aACrC,aAAa,aAAa,aAAa,CAAC;AAAA,MAC7C,UAAU,mBAAmB,aAAa;AAAA;AAAA,IAG3C,IAAI,aAAa,SAAS,GAAG;AAAA,MAC5B,aAAa,KAAK,GAAG,YAAY;AAAA,IAClC;AAAA,IAEA,IAAI,CAAC,QAAQ,MAAM;AAAA,MAGlB,oBAAoB,QAAQ;AAAA,MAC5B,oBAAoB,WAAW;AAAA,IAChC;AAAA;AAAA,EAGD,IAAI,aAAa,YAAY,aAAa,SAAS,GAAG;AAAA,IACrD,aAAa,KAAK,UAAU,GAAG,YAAY;AAAA,EAC5C;AAAA,EAOA,IAAI,QAAQ,QAAQ;AAAA,IACnB,aAAa,KAAK,QAAQ,MAAM;AAAA,EACjC;AAAA,EAEA,MAAM,aAAa,cAAa,MAAM,SAAS,cAAc,mBAAmB;AAAA,EAEhF,IAAI,QAAQ,MAAM;AAAA,IACjB,OAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,MACvC,WAAW,KAAK,SAAS,MAAM;AAAA,MAE/B,WAAW,KAAK,SAAS,cAAY;AAAA,QACpC,IAAI,CAAC,QAAQ,wBAAwB,aAAa,GAAG;AAAA,UACpD,OAAO,IAAI,MAAM,oBAAoB,UAAU,CAAC;AAAA,UAChD;AAAA,QACD;AAAA,QAEA,QAAQ,UAAU;AAAA,OAClB;AAAA,KACD;AAAA,EACF;AAAA,EAKA,IAAI,mBAAmB;AAAA,IACtB,OAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,MACvC,WAAW,KAAK,SAAS,MAAM;AAAA,MAE/B,WAAW,KAAK,SAAS,MAAM;AAAA,QAE9B,WAAW,KAAK,SAAS,cAAY;AAAA,UACpC,WAAW,IAAI,SAAS,MAAM;AAAA,UAE9B,IAAI,aAAa,GAAG;AAAA,YACnB,OAAO,IAAI,MAAM,oBAAoB,UAAU,CAAC;AAAA,YAChD;AAAA,UACD;AAAA,UAEA,WAAW,MAAM;AAAA,UACjB,QAAQ,UAAU;AAAA,SAClB;AAAA,OACD;AAAA,KACD;AAAA,EACF;AAAA,EAEA,WAAW,MAAM;AAAA,EAIjB,OAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,IACvC,WAAW,KAAK,SAAS,MAAM;AAAA,IAK/B,WAAW,KAAK,SAAS,MAAM;AAAA,MAC9B,WAAW,IAAI,SAAS,MAAM;AAAA,MAC9B,QAAQ,UAAU;AAAA,KAClB;AAAA,GACD;AAAA;AAGF,IAAM,OAAO,CAAC,QAAQ,YAAY;AAAA,EACjC,IAAI,OAAO,WAAW,UAAU;AAAA,IAC/B,MAAM,IAAI,UAAU,qBAAqB;AAAA,EAC1C;AAAA,EAEA,OAAO,SAAS;AAAA,OACZ;AAAA,IACH;AAAA,EACD,CAAC;AAAA;AAsBF,SAAS,gBAAgB,CAAC,QAAQ;AAAA,EACjC,IAAI,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GAAG;AAAA,IACxD,OAAO;AAAA,EACR;AAAA,EAEA,SAAQ,OAAO,eAAc;AAAA,EAE7B,IAAI,CAAC,YAAY;AAAA,IAChB,MAAM,IAAI,MAAM,GAAG,uBAAuB;AAAA,EAC3C;AAAA,EAEA,OAAO;AAAA;AAGR,SAAS,oBAAoB,IAAG,WAAW,oBAAkB,QAAO,CAAC,GAAG;AAAA,EACvE,IAAI,OAAO,gBAAO;AAAA,IACjB,OAAO,iBAAiB,GAAG;AAAA,EAC5B;AAAA,EAEA,IAAI,CAAC,gBAAgB;AAAA,IACpB,MAAM,IAAI,MAAM,GAAG,2BAA2B;AAAA,EAC/C;AAAA,EAEA,OAAO,iBAAiB,cAAc;AAAA;AAGhC,IAAM,OAAO;AAAA,EACnB,SAAS;AAAA,EACT,gBAAgB;AACjB;AAEA,mBAAmB,MAAM,UAAU,MAAM,qBAAqB;AAAA,EAC7D,QAAQ;AAAA,EACR,OAAO;AAAA,EAEP,OAAO,CAAC,iBAAiB,wBAAwB,YAAY,kBAAkB;AAChF,GAAG;AAAA,EACF,KAAK;AAAA,IACJ,MAAM;AAAA,IACN,KAAK,CAAC,6DAA6D,iEAAiE;AAAA,EACrI;AACD,CAAC,CAAC;AAEF,mBAAmB,MAAM,SAAS,MAAM,qBAAqB;AAAA,EAC5D,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,OAAO,CAAC,iBAAiB,OAAO;AACjC,GAAG;AAAA,EACF,KAAK;AAAA,IACJ,MAAM;AAAA,IACN,KAAK,CAAC,0EAA0E,8EAA8E;AAAA,EAC/J;AACD,CAAC,CAAC;AAEF,mBAAmB,MAAM,WAAW,MAAM,qBAAqB;AAAA,EAC9D,QAAQ;AAAA,EACR,OAAO,OAAO;AAAA,EACd,OAAO;AACR,GAAG;AAAA,EACF,KAAK;AACN,CAAC,CAAC;AAEF,mBAAmB,MAAM,QAAQ,MAAM,qBAAqB;AAAA,EAC3D,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,OAAO,CAAC,kBAAkB,oBAAoB;AAC/C,GAAG;AAAA,EACF,KAAK;AACN,CAAC,CAAC;AAEF,mBAAmB,MAAM,UAAU,MAAM,qBAAqB;AAAA,EAC7D,QAAQ;AACT,CAAC,CAAC;AAEF,IAAe;;;ADrYf,IAAM,oBAAoB;AAC1B,IAAM,gBAAgB;AACtB,IAAM,mBAAmB;AACzB,IAAM,mBAAmB;AACzB,IAAM,oBAAoB;AAC1B,IAAM,uBAAuB;AAAA;AAEtB,MAAM,eAAsC;AAAA,EAC/C,OAAc;AAAA,IACV,MAAW;AAAA,IACX,SAAc;AAAA,IACd,UAAe;AAAA,IACf,SAAc;AAAA,IACd,YAAiB;AAAA,IACjB,UAAe;AAAA,EACnB;AAAA,EAEA,MAAY;AAAA,IACR,KAAK,QAAQ;AAAA,IACb,SAAY;AAAA,IACZ,QAAW;AAAA,IACX,QAAQ,CAAC,QAAgB,QAAQ,IAAI;AAAA,EACzC;AAAA,EAEA,QAAgB;AAAA,IACZ,MAAM,OAAO,QAAgB;AAAA,MACzB,MAAM,aAAK,GAAG;AAAA;AAAA,EAEtB;AAAA,OAOM,SAAQ,CACV,OACA,SACmC;AAAA,IACnC,IAAI;AAAA,MACA,IAAI,SAAS;AAAA,QACT,OAAO,MAAS,aAAS,OAAM,OAAO;AAAA,MAC1C;AAAA,MACA,OAAO,MAAS,aAAS,KAAI;AAAA,MAC/B,OAAO,OAAgB;AAAA,MACrB,IAAI,KAAK,SAAS,KAAK;AAAA,QAAG,OAAO;AAAA,MACjC,MAAM;AAAA;AAAA;AAAA,OAIR,UAAS,CACX,UACA,MACa;AAAA,IACb,MAAM,MAAW,cAAQ,QAAQ;AAAA,IACjC,IAAI,KAAK;AAAA,MACL,MAAS,UAAM,KAAK,EAAE,WAAW,KAAK,CAAC;AAAA,IAC3C;AAAA,IACA,MAAS,cAAU,UAAU,IAAI;AAAA;AAAA,OAG/B,WAAU,CACZ,UACA,MACa;AAAA,IACb,MAAM,MAAW,cAAQ,QAAQ;AAAA,IACjC,IAAI,KAAK;AAAA,MACL,MAAS,UAAM,KAAK,EAAE,WAAW,KAAK,CAAC;AAAA,IAC3C;AAAA,IACA,MAAS,eAAW,UAAU,IAAI;AAAA;AAAA,OAGhC,QAAO,CAAC,SAAoC;AAAA,IAC9C,IAAI;AAAA,MACA,OAAO,MAAS,YAAQ,OAAO;AAAA,MACjC,OAAO,OAAgB;AAAA,MACrB,IAAI,KAAK,SAAS,KAAK;AAAA,QAAG,OAAO,CAAC;AAAA,MAClC,MAAM;AAAA;AAAA;AAAA,OAIR,KAAI,CAAC,UAAmD;AAAA,IAC1D,IAAI;AAAA,MACA,MAAM,QAAQ,MAAS,SAAK,QAAQ;AAAA,MACpC,OAAO;AAAA,QACH,QAAQ,MAAM,MAAM,OAAO;AAAA,QAC3B,aAAa,MAAM,MAAM,YAAY;AAAA,QACrC,MAAM,MAAM;AAAA,QACZ,SAAS,MAAM;AAAA,MACnB;AAAA,MACF,OAAO,OAAgB;AAAA,MACrB,IAAI,KAAK,SAAS,KAAK;AAAA,QAAG,OAAO;AAAA,MACjC,MAAM;AAAA;AAAA;AAAA,OAIR,OAAM,CAAC,UAAoC;AAAA,IAC7C,OAAO,WAAW,QAAQ;AAAA;AAAA,OAGxB,MAAK,CAAC,SAAgC;AAAA,IACxC,MAAS,UAAM,SAAS,EAAE,WAAW,KAAK,CAAC;AAAA;AAAA,OAGzC,YAAW,CAAC,UAAgD;AAAA,IAM9D,MAAM,gBAAgB,MAAM,KAAK,uBAAuB,QAAQ;AAAA,IAChE,MAAM,WAAW,GAAG;AAAA,IACpB,MAAM,UAAU,WAAW;AAAA,IAC3B,MAAM,QAAQ,KAAK,IAAI;AAAA,IAEvB,OAAO,MAAM;AAAA,MACT,IAAI;AAAA,QAKA,MAAS,cAAU,UAAU,SAAS,EAAE,MAAM,KAAK,CAAC;AAAA,QACpD,OAAO,KAAK,kBAAkB,UAAU,OAAO;AAAA,QACjD,OAAO,OAAO;AAAA,QACZ,IAAI,CAAC,KAAK,aAAa,OAAO,QAAQ,GAAG;AAAA,UACrC,MAAM;AAAA,QACV;AAAA,QAEA,MAAM,QAAQ,MAAS,SAAK,QAAQ,EAAE,MAAM,MAAM,IAAI;AAAA,QACtD,IAAI,SAAS,KAAK,IAAI,IAAI,MAAM,UAAU,eAAe;AAAA,UAKrD,MAAM,YAAY,MACb,OAAG,UAAU,EAAE,OAAO,KAAK,CAAC,EAC5B,KAAK,MAAM,IAAI,EACf,MAAM,MAAM,KAAK;AAAA,UACtB,IAAI;AAAA,YAAW;AAAA,QACnB;AAAA,QACA,IAAI,KAAK,IAAI,IAAI,QAAQ,kBAAkB;AAAA,UACvC,MAAM,IAAI,MACN,0CAA0C,eAC9C;AAAA,QACJ;AAAA,QACA,MAAM,IAAI,QAAQ,CAAC,aACf,WACI,UACA,oBACI,KAAK,OAAO,IAAI,oBACxB,CACJ;AAAA;AAAA,IAER;AAAA;AAAA,OAGU,uBAAsB,CAAC,UAAmC;AAAA,IAUpE,MAAM,WAAgB,cAAQ,QAAQ;AAAA,IACtC,MAAM,WAAW,MAAS,aAAS,QAAQ,EAAE,MAAM,MAAM,IAAI;AAAA,IAC7D,IAAI;AAAA,MAAU,OAAO;AAAA,IACrB,MAAM,SAAc,cAAQ,QAAQ;AAAA,IACpC,MAAM,OAAY,eAAS,QAAQ;AAAA,IACnC,MAAM,kBAAkB,MAAS,aAAS,MAAM,EAAE,MAAM,MAAM,MAAM;AAAA,IACpE,OAAY,WAAK,iBAAiB,IAAI;AAAA;AAAA,EAGlC,iBAAiB,CACrB,UACA,SACmB;AAAA,IA0BnB,MAAM,iBAAiB,KAAK,IAAI;AAAA,IAChC,IAAI;AAAA,IACJ,IAAI,UAAU;AAAA,IACd,MAAM,gBAAgB,MAAY;AAAA,MAC9B,UAAU;AAAA,MACV,IAAI;AAAA,QAAgB,aAAa,cAAc;AAAA;AAAA,IAEnD,MAAM,wBAAwB,MAAY;AAAA,MACtC,IAAI;AAAA,QAAS;AAAA,MACb,IAAI,KAAK,IAAI,IAAI,kBAAkB,kBAAkB;AAAA,QACjD,UAAU;AAAA,QACV;AAAA,MACJ;AAAA,MACA,iBAAiB,WAAW,MAAM;AAAA,QACzB,aAAa;AAAA,SACnB,iBAAiB;AAAA,MACpB,eAAe,QAAQ;AAAA;AAAA,IAE3B,MAAM,eAAe,YAA2B;AAAA,MAC5C,IAAI;AAAA,QAAS;AAAA,MACb,MAAM,UAAU,MACX,aAAS,UAAU,OAAO,EAC1B,MAAM,MAAM,IAAI;AAAA,MACrB,IAAI;AAAA,QAAS;AAAA,MACb,IAAI,YAAY,SAAS;AAAA,QACrB,UAAU;AAAA,QACV;AAAA,MACJ;AAAA,MACA,MAAM,MAAM,KAAK,IAAI,IAAI;AAAA,MACzB,MAAS,WAAO,UAAU,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE;AAAA,MAClD,sBAAsB;AAAA;AAAA,IAE1B,sBAAsB;AAAA,IAEtB,IAAI,WAAW;AAAA,IACf,OAAO,YAAY;AAAA,MACf,IAAI;AAAA,QAAU;AAAA,MACd,WAAW;AAAA,MACX,cAAc;AAAA,MAgBd,MAAM,UAAU,MACX,aAAS,UAAU,OAAO,EAC1B,MAAM,MAAM,IAAI;AAAA,MACrB,IAAI,YAAY,SAAS;AAAA,QACrB,MAAS,OAAG,UAAU,EAAE,OAAO,KAAK,CAAC;AAAA,MACzC;AAAA;AAAA;AAAA,OAIF,GAAE,CAAC,UAAiC;AAAA,IACtC,MAAS,OAAG,UAAU,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA;AAAA,OAGpD,OAAM,CAAC,SAAiB,SAAgC;AAAA,IAC1D,MAAS,WAAO,SAAS,OAAO;AAAA;AAAA,OAG9B,SAAQ,CAAC,UAAmC;AAAA,IAC9C,IAAI;AAAA,MACA,OAAO,MAAS,aAAS,QAAQ;AAAA,MACnC,OAAO,OAAgB;AAAA,MAIrB,IAAI,KAAK,SAAS,KAAK;AAAA,QAAG,OAAO;AAAA,MACjC,MAAM;AAAA;AAAA;AAAA,OAIR,WAAU,GAAoB;AAAA,IAChC,OAAO,MAAS,YAAa,WAAQ,WAAO,GAAG,YAAY,CAAC;AAAA;AAAA,OAG1D,cAAa,CAAC,YAAoB,UAAiC;AAAA,IACrE,MAAM,cAAc,MAAM,KAAK,KAAK,UAAU;AAAA,IAC9C,IAAI,CAAC,aAAa;AAAA,MACd,MAAM,IAAI,MAAM,oCAAoC,YAAY;AAAA,IACpE;AAAA,IACA,IAAI,CAAC,YAAY,YAAY,GAAG;AAAA,MAC5B,MAAM,IAAI,MAAM,mCAAmC,YAAY;AAAA,IACnE;AAAA,IAEA,MAAM,KAAK,MAAM,QAAQ;AAAA,IAEzB,MAAM,UAAU,MAAM,KAAK,QAAQ,UAAU;AAAA,IAC7C,WAAW,SAAS,SAAS;AAAA,MACzB,MAAM,WAAgB,WAAK,YAAY,KAAK;AAAA,MAC5C,MAAM,YAAiB,WAAK,UAAU,KAAK;AAAA,MAC3C,MAAM,aAAa,MAAM,KAAK,KAAK,QAAQ;AAAA,MAC3C,IAAI,CAAC;AAAA,QAAY;AAAA,MAEjB,IAAI,WAAW,YAAY,GAAG;AAAA,QAC1B,MAAM,KAAK,cAAc,UAAU,SAAS;AAAA,MAChD,EAAO,SAAI,WAAW,OAAO,GAAG;AAAA,QAC5B,MAAM,UAAU,MAAM,KAAK,SAAS,QAAQ;AAAA,QAC5C,IAAI,YAAY,MAAM;AAAA,UAClB,MAAM,KAAK,UAAU,WAAW,OAAO;AAAA,QAC3C;AAAA,MACJ;AAAA,IACJ;AAAA;AAAA,EAGI,QAAQ,CAAC,OAAyB;AAAA,IACtC,OAAO,KAAK,aAAa,OAAO,QAAQ;AAAA;AAAA,EAGpC,YAAY,CAAC,OAAgB,MAAuB;AAAA,IACxD,OACI,OAAO,UAAU,YACjB,UAAU,QACV,UAAU,SACT,MAA2B,SAAS;AAAA;AAGjD;;;AepWA,IAAM,aAAa,IAAI;AAYhB,IAAM,gBAAgB,MAAmB;;;ACRhD,SAAS,aAAa,CAAC,OAA+C;AAAA,EAClE,OACI,UAAU,QACV,OAAO,UAAU,YACjB,OAAQ,MAA6B,SAAS;AAAA;AAc/C,SAAS,UAAa,CACzB,aACkD;AAAA,EAClD,IAAI,cAAc,WAAW,GAAG;AAAA,IAC5B,OAAO,kBAAkB,WAA6B;AAAA,EAC1D;AAAA,EAEA,IAAI;AAAA,IACA,MAAM,SAAU,YAAwB;AAAA,IACxC,IAAI,cAAc,MAAM,GAAG;AAAA,MACvB,OAAO,kBAAkB,MAAwB;AAAA,IACrD;AAAA,IACA,OAAO,CAAC,WAAW,MAAM;AAAA,IAC3B,OAAO,OAAO;AAAA,IACZ,OAAO;AAAA,MACH,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA,MACxD;AAAA,IACJ;AAAA;AAAA;AAMR,SAAS,iBAAoB,CACzB,UAC4B;AAAA,EAC5B,OAAO,QAAQ,QAAQ,QAAQ,EAC1B,KAAK,CAAC,SAA8B,CAAC,WAAW,IAAI,CAAU,EAC9D,MACG,CAAC,UACG;AAAA,IACI,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA,IACxD;AAAA,EACJ,CACR;AAAA;;;ACVR,IAAM,sBAAsB,IAAI,IAAI;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AAMD,IAAM,kBAAkB,IAAI,IAAI;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AAED,IAAM,mBACF,sEACA,2EACA,gFACA,+EACA,4EACA;AAEJ,IAAM,uBACF,2EACA,4EACA;;ACvFJ;AAGO;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,IACE;;;ACaJ,IAAM,oBAAoB,IAAI;AAqB9B,QAAQ,UAAU,WAAW,QAAS,CAAC,UAAqC;AAAA,EACxE,kBAAkB,IAAI,MAAM,QAAQ;AAAA,EACpC,OAAO;AAAA;;ACtCX,SAAS,aAAa,GAA8B;AAAA,EAEhD,OAAO,OAAO,OAAO,WAAW,mCAAiC;AAAA,EACjE,IAAI,SAAS,OAAO,KAAK,sBAAsB,YAAY;AAAA,IAEvD,OAAO;AAAA,MACH,UAAU,MAAG;AAAA,QAAG;AAAA;AAAA,MAChB,KAAK,CAAI,QAAoB,OAAmB,GAAG;AAAA,IACvD;AAAA,EACJ;AAAA,EACA,OAAO,IAAI,IAAI;AAAA;AAGnB,IAAM,mBAAmB,UAAqC,eAAe;AAE7E,IAAM,WAAW,UAAkC,YAAY;AAE/D,IAAM,gBAA2C,iBAAiB,UAC9D,eACA,CAAC,OAAM,cAAc,EACzB;AAMA,IAAM,mBAA+B;AAAA,EACjC,UAAU,CAAC,QAAgB,QAAQ,OAAO,MAAM,GAAG;AAAA,EACnD,UAAU,CAAC,QAAgB,QAAQ,OAAO,MAAM,GAAG;AAAA,EACnD,UAAU,CAAC,QAAgB,QAAQ,OAAO,MAAM,GAAG;AAAA,EACnD,cAAc;AAAA,IACV,eAAe;AAAA,IACf,cAAc;AAAA,IACd,eAAe;AAAA,IACf,aAAa;AAAA,EACjB;AACJ;AAsBO,SAAS,aAAa,GAAe;AAAA,EACxC,OAAO,cAAc,SAAS,KAAK,SAAS,IAAI,KAAK;AAAA;;ACnDzD,IAAM,mBAAmB,OAAO,IAAI,0BAA0B;;ACpB9D,IAAI,WAAW,CAAC,QAAQ;AAAA,EACtB,OAAO,QAAQ,QAAQ,OAAO,UAAU,SAAS,KAAK,GAAG,MAAM;AAAA;AAEjE,IAAI,kBAAkB,CAAC,OAAO,WAAW;AAAA,EACvC,IAAI,UAAU,QAAQ;AAAA,IACpB,OAAO;AAAA,EACT;AAAA,EACA,IAAI,OAAO,UAAU,OAAO,QAAQ;AAAA,IAClC,OAAO;AAAA,EACT;AAAA,EACA,IAAI,MAAM,QAAQ,KAAK,KAAK,MAAM,QAAQ,MAAM,GAAG;AAAA,IACjD,IAAI,MAAM,WAAW,OAAO,QAAQ;AAAA,MAClC,OAAO;AAAA,IACT;AAAA,IACA,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,MACxC,IAAI,CAAC,gBAAgB,MAAM,IAAI,OAAO,EAAE,GAAG;AAAA,QACzC,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,IAAI,SAAS,KAAK,KAAK,SAAS,MAAM,GAAG;AAAA,IACvC,MAAM,eAAe,OAAO,QAAQ,KAAK;AAAA,IACzC,MAAM,aAAa,IAAI,IAAI,OAAO,KAAK,MAAM,CAAC;AAAA,IAC9C,IAAI,aAAa,WAAW,WAAW,MAAM;AAAA,MAC3C,OAAO;AAAA,IACT;AAAA,IACA,YAAY,KAAK,UAAU,cAAc;AAAA,MACvC,IAAI,CAAC,gBAAgB,OAAO,OAAO,IAAI,GAAG;AAAA,QACxC,OAAO;AAAA,MACT;AAAA,MACA,WAAW,OAAO,GAAG;AAAA,IACvB;AAAA,IACA,OAAO,WAAW,SAAS;AAAA,EAC7B;AAAA,EACA,OAAO;AAAA;AAET,IAAI,UAAU,CAAC,QAAQ;AAAA,EACrB,IAAI,QAAQ,QAAQ,QAAa,aAAK,QAAQ,OAAO;AAAA,IACnD,OAAO;AAAA,EACT;AAAA,EACA,IAAI,OAAO,QAAQ,UAAU;AAAA,IAC3B,OAAO,QAAQ;AAAA,EACjB;AAAA,EACA,IAAI,OAAO,QAAQ,UAAU;AAAA,IAC3B,IAAI,MAAM,QAAQ,GAAG,GAAG;AAAA,MACtB,OAAO,IAAI,WAAW;AAAA,IACxB;AAAA,IACA,IAAI,QAAQ,MAAM;AAAA,MAChB,OAAO;AAAA,IACT;AAAA,IACA,OAAO,OAAO,KAAK,GAAG,EAAE,WAAW;AAAA,EACrC;AAAA,EACA,OAAO;AAAA;AAET,IAAI,UAAU,CAAC,OAAO;AAAA,EACpB,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,OAAO,OAAO;AAAA;AAEpE,IAAI,QAAQ,CAAC,OAAO;AAAA,EAClB,OAAO,MAAM,OAAO,MAAM,OAAO,OAAO;AAAA;AAE1C,IAAI,aAAa,CAAC,OAAO;AAAA,EACvB,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,OAAO,OAAO;AAAA;AAE9F,IAAI,gBAAgB,CAAC,UAAU;AAAA,EAC7B,IAAI,EAAE,OAAO,UAAU,aAAa,KAAK,MAAM,KAAK,MAAM,OAAO;AAAA,IAC/D,MAAM,IAAI,MAAM,sCAAsC;AAAA,EACxD;AAAA,EACA,OAAO;AAAA;AAET,IAAI,wBAAwB,CAAC,UAAU;AAAA,EACrC,IAAI,EAAE,OAAO,UAAU,aAAa,QAAQ,KAAK,KAAK,MAAM,KAAK,MAAM,OAAO;AAAA,IAC5E,MAAM,IAAI,MAAM,kDAAkD;AAAA,EACpE;AAAA,EACA,OAAO;AAAA;AAET,IAAI,gBAAgB,IAAI,aAAa;AAAA,EACnC,SAAS,IAAI,EAAG,IAAI,SAAS,QAAQ,KAAK;AAAA,IACxC,IAAI,SAAS,OAAO,QAAQ,SAAS,OAAY,WAAG;AAAA,MAClD,MAAM,IAAI,MAAM,yBAAyB;AAAA,IAC3C;AAAA,IACA,IAAI,OAAO,SAAS,OAAO,UAAU;AAAA,MACnC,MAAM,IAAI,MAAM,cAAc;AAAA,IAChC;AAAA,EACF;AAAA;AAEF,IAAI,UAAU,CAAC,MAAM;AAAA,EACnB,IAAI,CAAC;AAAA,EACL,IAAI,CAAC,GAAG;AAAA,IACN,MAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AAAA,EACA,OAAO;AAAA;AAET,IAAI,MAAM,CAAC,MAAM,UAAU;AAAA,EACzB,cAAc,MAAM,KAAK;AAAA,EACzB,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO;AAAA;AAET,IAAI,MAAM,CAAC,MAAM,UAAU;AAAA,EACzB,cAAc,MAAM,KAAK;AAAA,EACzB,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO;AAAA;AAET,IAAI,MAAM,CAAC,MAAM,UAAU;AAAA,EACzB,cAAc,MAAM,KAAK;AAAA,EACzB,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO;AAAA;AAET,IAAI,SAAS,CAAC,MAAM,UAAU;AAAA,EAC5B,cAAc,MAAM,KAAK;AAAA,EACzB,MAAM,SAAS,OAAO,QAAQ,KAAK;AAAA,EACnC,OAAO;AAAA;AAET,IAAI,MAAM,CAAC,MAAM,UAAU;AAAA,EACzB,cAAc,MAAM,KAAK;AAAA,EACzB,MAAM,SAAS,KAAK,MAAM,OAAO,QAAQ,KAAK,CAAC;AAAA,EAC/C,OAAO;AAAA;AAET,IAAI,MAAM,CAAC,MAAM,UAAU;AAAA,EACzB,cAAc,MAAM,KAAK;AAAA,EACzB,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO;AAAA;AAIT,IAAI,YAAY,CAAC,SAAS,MAAM,OAAO,QAAQ;AAAA,EAC7C,IAAI,CAAC,WAAW,CAAC,MAAM;AAAA,IACrB,OAAO;AAAA,EACT;AAAA,EACA,QAAQ,KAAK,IAAI,cAAc,QAAQ,SAAS,CAAC,GAAG,CAAC;AAAA,EACrD,MAAM,KAAK,IAAI,cAAc,MAAM,OAAO,QAAQ,MAAM,GAAG,QAAQ,MAAM;AAAA,EACzE,MAAM,SAAS,QAAQ,MAAM,OAAO,GAAG,EAAE,QAAQ,IAAI;AAAA,EACrD,OAAO,WAAW,KAAK,OAAO,SAAS;AAAA;AAEzC,IAAI,WAAW,CAAC,SAAS,MAAM,OAAO,QAAQ;AAAA,EAC5C,IAAI,CAAC,WAAW,CAAC,MAAM;AAAA,IACrB,OAAO;AAAA,EACT;AAAA,EACA,QAAQ,KAAK,IAAI,cAAc,QAAQ,SAAS,CAAC,GAAG,CAAC;AAAA,EACrD,MAAM,KAAK,IAAI,cAAc,MAAM,OAAO,QAAQ,MAAM,GAAG,QAAQ,MAAM;AAAA,EACzE,MAAM,SAAS,QAAQ,MAAM,OAAO,GAAG,EAAE,YAAY,IAAI;AAAA,EACzD,MAAM,SAAS,WAAW,KAAK,OAAO,SAAS;AAAA,EAC/C,OAAO;AAAA;AAET,IAAI,QAAQ,CAAC,YAAY,QAAQ,YAAY;AAC7C,IAAI,sBAAsB,CAAC,MAAM,OAAO,YAAY;AAAA,EAClD,UAAU,WAAW;AAAA,EACrB,IAAI,QAAQ,SAAS,GAAG;AAAA,IACtB,MAAM,IAAI,MAAM,kBAAkB,+EAA+E;AAAA,EACnH;AAAA,EACA,sBAAsB,KAAK;AAAA,EAC3B,OAAO;AAAA;AAET,IAAI,UAAU,CAAC,SAAS,OAAO,YAAY;AAAA,EACzC,UAAU,oBAAoB,YAAY,OAAO,OAAO;AAAA,EACxD,OAAO,WAAW,QAAQ,SAAS,OAAO,OAAO,KAAK;AAAA;AAExD,IAAI,WAAW,CAAC,SAAS,OAAO,YAAY;AAAA,EAC1C,UAAU,oBAAoB,aAAa,OAAO,OAAO;AAAA,EACzD,OAAO,WAAW,QAAQ,OAAO,OAAO,OAAO,KAAK;AAAA;AAEtD,IAAI,UAAU,CAAC,SAAS,QAAQ,IAAI,UAAU;AAAA,EAC5C,IAAI,UAAU,GAAG;AAAA,IACf,OAAO;AAAA,EACT;AAAA,EACA,IAAI,CAAC,OAAO;AAAA,IACV,OAAO,QAAQ,MAAM,MAAM,EAAE,KAAK,EAAE;AAAA,EACtC;AAAA,EACA,sBAAsB,KAAK;AAAA,EAC3B,CAAC,GAAG,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,IAAI,MAAM,UAAU,QAAQ,QAAQ,QAAQ,EAAE,CAAC;AAAA,EACxE,OAAO;AAAA;AAET,IAAI,QAAQ,CAAC,SAAS,SAAS,UAAU;AAAA,EACvC,IAAI,QAAQ,UAAU,KAAK,QAAQ,WAAW,GAAG;AAAA,IAC/C,OAAO,CAAC;AAAA,EACV;AAAA,EACA,IAAI,UAAU,QAAQ,UAAe,WAAG;AAAA,IACtC,OAAO,QAAQ,MAAM,OAAO;AAAA,EAC9B;AAAA,EACA,sBAAsB,KAAK;AAAA,EAC3B,IAAI,UAAU,GAAG;AAAA,IACf,OAAO,CAAC,OAAO;AAAA,EACjB;AAAA,EACA,MAAM,SAAS,QAAQ,MAAM,OAAO;AAAA,EACpC,OAAO,CAAC,GAAG,OAAO,MAAM,GAAG,KAAK,GAAG,OAAO,MAAM,KAAK,EAAE,KAAK,OAAO,CAAC;AAAA;AAEtE,IAAI,OAAO,CAAC,SAAS,UAAU;AAAA,EAC7B,OAAO,SAAS,UAAU,SAAS,KAAK,GAAG,KAAK;AAAA;AAElD,IAAI,WAAW,CAAC,SAAS,UAAU;AAAA,EACjC,OAAO,SAAS,SAAS,CAAC,SAAS,IAAI,OAAO,KAAK,aAAa,GAAG,KAAK;AAAA;AAE1E,IAAI,YAAY,CAAC,SAAS,UAAU;AAAA,EAClC,OAAO,SAAS,SAAS,CAAC,SAAS,IAAI,OAAO,SAAS,SAAS,GAAG,KAAK;AAAA;AAE1E,IAAI,WAAW,CAAC,SAAS,UAAU,UAAU;AAAA,EAC3C,MAAM,UAAU,QAAQ,MAAM,QAAQ,yBAAyB,MAAM,IAAI;AAAA,EACzE,OAAO,QAAQ,QAAQ,SAAS,OAAO,GAAG,IAAI;AAAA;AAEhD,IAAI,QAAQ,CAAC,YAAY,QAAQ,YAAY;AAG7C,IAAI,cAAc;AAAA,EAChB,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAU;AAAA,EACV,KAAQ;AAAA,EACR,KAAQ;AACV;AACA,IAAI,qBAAqB;AAAA,EACvB,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AACP;AACA,IAAI,YAAY;AAAA,EACd,MAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM;AAAA,EACN,KAAK;AACP;AACA,IAAI,cAAc,MAAM;AAAA,EACtB,WAAW;AAAA,EACX,0BAA0B;AAAA,EAC1B,QAAQ,CAAC,QAAQ,SAAS;AAAA,IACxB,MAAM,SAAS,CAAC;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,0BAA0B,SAAS,0BAA0B;AAAA,IAClE,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,OAAO,KAAK,WAAW,OAAO,QAAQ;AAAA,MACpC,IAAI,QAAQ,OAAO,KAAK,SAAS,GAAG;AAAA,QAClC,QAAQ,KAAK;AAAA,QACb,aAAa,KAAK,0BAA0B,MAAM;AAAA,QAClD,OAAO,KAAK;AAAA,UACV;AAAA,UACA,MAAM;AAAA,UACN,OAAO;AAAA,QACT,CAAC;AAAA,MACH,EAAO,SAAI,YAAY,OAAO,KAAK,eAAoB,WAAG;AAAA,QACxD,OAAO,KAAK;AAAA,UACV,OAAO,KAAK;AAAA,UACZ,MAAM,YAAY,OAAO,KAAK;AAAA,UAC9B,OAAO,OAAO,KAAK;AAAA,QACrB,CAAC;AAAA,QACD,KAAK,YAAY;AAAA,MACnB,EAAO,SAAI,OAAO,KAAK,cAAc,KAAK;AAAA,QACxC,QAAQ,KAAK;AAAA,QACb,IAAI,KAAK,WAAW,IAAI,OAAO,UAAU,QAAQ,OAAO,KAAK,WAAW,EAAE,GAAG;AAAA,UAC3E,KAAK,YAAY;AAAA,UACjB,aAAa,KAAK,0BAA0B,MAAM;AAAA,UAClD,OAAO,KAAK;AAAA,YACV;AAAA,YACA,MAAM;AAAA,YACN,OAAO;AAAA,UACT,CAAC;AAAA,QACH,EAAO;AAAA,UACL,OAAO,KAAK;AAAA,YACV;AAAA,YACA,MAAM;AAAA,YACN,OAAO,OAAO,KAAK;AAAA,UACrB,CAAC;AAAA,UACD,KAAK,YAAY;AAAA;AAAA,MAErB,EAAO,SAAI,OAAO,KAAK,cAAc,KAAK;AAAA,QACxC,IAAI,KAAK,WAAW,IAAI,OAAO,UAAU,MAAM,OAAO,KAAK,WAAW,EAAE,GAAG;AAAA,UACzE,MAAM,SAAS,KAAK,cAAc,MAAM;AAAA,UACxC,UAAU,OAAO,KAAK,MAAM;AAAA,QAC9B,EAAO;AAAA,UACL,MAAM,SAAS;AAAA,YACb,OAAO,KAAK;AAAA,YACZ,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UACA,OAAO,KAAK,MAAM;AAAA,UAClB,KAAK,YAAY;AAAA;AAAA,MAErB,EAAO,SAAI,MAAM,OAAO,KAAK,SAAS,GAAG;AAAA,QACvC,QAAQ,KAAK,cAAc,MAAM;AAAA,QACjC,OAAO,KAAK,KAAK;AAAA,MACnB,EAAO,SAAI,OAAO,KAAK,cAAc,KAAK;AAAA,QACxC,QAAQ,KAAK,gBAAgB,MAAM;AAAA,QACnC,OAAO,KAAK,KAAK;AAAA,MACnB,EAAO,SAAI,OAAO,KAAK,cAAc,KAAK;AAAA,QACxC,QAAQ,KAAK;AAAA,QACb,aAAa,KAAK,wBAAwB,MAAM;AAAA,QAChD,OAAO,KAAK;AAAA,UACV;AAAA,UACA,MAAM;AAAA,UACN,OAAO;AAAA,QACT,CAAC;AAAA,MACH,EAAO,SAAI,OAAO,KAAK,cAAc,KAAK;AAAA,QACxC,QAAQ,KAAK;AAAA,QACb,aAAa,KAAK,wBAAwB,MAAM;AAAA,QAChD,OAAO,KAAK;AAAA,UACV;AAAA,UACA,MAAM;AAAA,UACN,OAAO;AAAA,QACT,CAAC;AAAA,MACH,EAAO,SAAI,OAAO,KAAK,cAAc,KAAK;AAAA,QACxC,QAAQ,KAAK;AAAA,QACb,MAAM,UAAU,KAAK,eAAe,MAAM;AAAA,QAC1C,OAAO,KAAK;AAAA,UACV;AAAA,UACA,MAAM;AAAA,UACN,OAAO;AAAA,QACT,CAAC;AAAA,MACH,EAAO,SAAI,mBAAmB,OAAO,KAAK,eAAoB,WAAG;AAAA,QAC/D,QAAQ,KAAK,gBAAgB,MAAM;AAAA,QACnC,SAAS,OAAO,KAAK,KAAK;AAAA,MAC5B,EAAO,SAAI,UAAU,OAAO,KAAK,eAAoB,WAAG;AAAA,QACtD,KAAK,YAAY;AAAA,MACnB,EAAO;AAAA,QACL,MAAM,QAAQ,IAAI,MAAM,oCAAoC,OAAO,KAAK,WAAW;AAAA,QACnF,MAAM,OAAO;AAAA,QACb,MAAM;AAAA;AAAA,IAEV;AAAA,IACA,OAAO;AAAA;AAAA,EAET,yBAAyB,CAAC,QAAQ;AAAA,IAChC,MAAM,QAAQ,KAAK;AAAA,IACnB,KAAK,YAAY;AAAA,IACjB,OAAO,KAAK,WAAW,OAAO,UAAU,WAAW,OAAO,KAAK,SAAS,GAAG;AAAA,MACzE,KAAK,YAAY;AAAA,IACnB;AAAA,IACA,OAAO,OAAO,MAAM,OAAO,KAAK,QAAQ;AAAA;AAAA,EAE1C,uBAAuB,CAAC,QAAQ;AAAA,IAC9B,MAAM,QAAQ,KAAK;AAAA,IACnB,KAAK,YAAY;AAAA,IACjB,MAAM,YAAY,OAAO;AAAA,IACzB,OAAO,OAAO,KAAK,cAAc,OAAO,KAAK,WAAW,WAAW;AAAA,MACjE,IAAI,UAAU,KAAK;AAAA,MACnB,IAAI,OAAO,aAAa,SAAS,OAAO,UAAU,OAAO,QAAQ,OAAO,UAAU,OAAO,MAAM;AAAA,QAC7F,WAAW;AAAA,MACb,EAAO;AAAA,QACL,WAAW;AAAA;AAAA,MAEb,KAAK,WAAW;AAAA,IAClB;AAAA,IACA,KAAK,YAAY;AAAA,IACjB,OAAO,OAAO,MAAM,KAAK,UAAU,OAAO,MAAM,OAAO,KAAK,QAAQ,CAAC;AAAA,IACrE,IAAI,CAAC,IAAI;AAAA,MACP,MAAM,QAAQ,IAAI,MAAM,sCAAsC;AAAA,MAC9D,MAAM,OAAO;AAAA,MACb,MAAM;AAAA,IACR;AAAA,IACA,OAAO;AAAA;AAAA,EAET,uBAAuB,CAAC,QAAQ;AAAA,IAC9B,MAAM,QAAQ,KAAK;AAAA,IACnB,KAAK,YAAY;AAAA,IACjB,MAAM,YAAY,OAAO;AAAA,IACzB,OAAO,OAAO,KAAK,cAAc,OAAO,KAAK,WAAW,WAAW;AAAA,MACjE,IAAI,UAAU,KAAK;AAAA,MACnB,IAAI,OAAO,aAAa,SAAS,OAAO,UAAU,OAAO,QAAQ,OAAO,UAAU,OAAO,MAAM;AAAA,QAC7F,WAAW;AAAA,MACb,EAAO;AAAA,QACL,WAAW;AAAA;AAAA,MAEb,KAAK,WAAW;AAAA,IAClB;AAAA,IACA,KAAK,YAAY;AAAA,IACjB,MAAM,UAAU,OAAO,MAAM,QAAQ,GAAG,KAAK,WAAW,CAAC;AAAA,IACzD,OAAO,QAAQ,QAAQ,SAAS,QAAQ,IAAI,GAAG,OAAO,GAAG;AAAA;AAAA,EAE3D,aAAa,CAAC,QAAQ;AAAA,IACpB,MAAM,QAAQ,KAAK;AAAA,IACnB,KAAK,YAAY;AAAA,IACjB,MAAM,YAAY,OAAO;AAAA,IACzB,OAAO,MAAM,OAAO,KAAK,SAAS,KAAK,KAAK,WAAW,WAAW;AAAA,MAChE,KAAK,YAAY;AAAA,IACnB;AAAA,IACA,MAAM,QAAQ,SAAS,OAAO,MAAM,OAAO,KAAK,QAAQ,GAAG,EAAE;AAAA,IAC7D,OAAO,EAAE,OAAO,OAAO,MAAM,SAA0B;AAAA;AAAA,EAEzD,eAAe,CAAC,QAAQ;AAAA,IACtB,MAAM,QAAQ,KAAK;AAAA,IACnB,KAAK,YAAY;AAAA,IACjB,IAAI,OAAO,KAAK,cAAc,KAAK;AAAA,MACjC,KAAK,YAAY;AAAA,MACjB,OAAO,EAAE,OAAO,MAAM,UAA2B,OAAO,KAAK;AAAA,IAC/D;AAAA,IACA,IAAI,OAAO,KAAK,cAAc,KAAK;AAAA,MACjC,KAAK,YAAY;AAAA,MACjB,OAAO,EAAE,OAAO,MAAM,WAA6B,OAAO,KAAK;AAAA,IACjE;AAAA,IACA,OAAO,EAAE,OAAO,MAAM,YAA+B,OAAO,IAAI;AAAA;AAAA,EAElE,aAAa,CAAC,QAAQ,MAAM,OAAO,QAAQ;AAAA,IACzC,MAAM,QAAQ,KAAK;AAAA,IACnB,KAAK,YAAY;AAAA,IACjB,IAAI,KAAK,WAAW,OAAO,UAAU,OAAO,KAAK,cAAc,MAAM;AAAA,MACnE,KAAK,YAAY;AAAA,MACjB,OAAO;AAAA,QACL;AAAA,QACA,MAAM;AAAA,QACN,OAAO,OAAO,MAAM,OAAO,KAAK,QAAQ;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,OAAO,EAAE,OAAO,MAAM,OAAO,OAAO,OAAO,OAAO;AAAA;AAAA,EAEpD,eAAe,CAAC,QAAQ;AAAA,IACtB,MAAM,QAAQ,KAAK;AAAA,IACnB,MAAM,eAAe,OAAO;AAAA,IAC5B,QAAQ;AAAA,WACD;AAAA,QACH,OAAO,KAAK,cAAc,QAAQ,KAAK,OAAqB,IAAiB;AAAA,WAC1E;AAAA,QACH,OAAO,KAAK,cAAc,QAAQ,KAAK,MAAmB,KAAmB;AAAA,WAC1E;AAAA,QACH,OAAO,KAAK,cAAc,QAAQ,KAAK,MAAmB,KAAmB;AAAA,WAC1E;AAAA,QACH,OAAO,KAAK,cAAc,QAAQ,KAAK,UAA2B,IAAiB;AAAA,WAChF;AAAA,QACH,OAAO,KAAK,cAAc,QAAQ,KAAK,UAA2B,KAAmB;AAAA,WAClF;AAAA,QACH,OAAO,KAAK,cAAc,QAAQ,KAAK,QAAuB,IAAiB;AAAA,WAC5E;AAAA,QACH,OAAO,KAAK,cAAc,QAAQ,KAAK,UAA2B,KAAmB;AAAA;AAAA;AAAA,EAG3F,cAAc,CAAC,QAAQ;AAAA,IACrB,KAAK,YAAY;AAAA,IACjB,MAAM,QAAQ,KAAK;AAAA,IACnB,MAAM,YAAY,OAAO;AAAA,IACzB,OAAO,OAAO,KAAK,cAAc,OAAO,KAAK,WAAW,WAAW;AAAA,MACjE,IAAI,UAAU,KAAK;AAAA,MACnB,IAAI,OAAO,aAAa,SAAS,OAAO,UAAU,OAAO,QAAQ,OAAO,UAAU,OAAO,MAAM;AAAA,QAC7F,WAAW;AAAA,MACb,EAAO;AAAA,QACL,WAAW;AAAA;AAAA,MAEb,KAAK,WAAW;AAAA,IAClB;AAAA,IACA,IAAI,gBAAgB,OAAO,MAAM,OAAO,KAAK,QAAQ,EAAE,UAAU;AAAA,IACjE,gBAAgB,cAAc,QAAQ,OAAO,GAAG;AAAA,IAChD,IAAI,UAAU;AAAA,IACd,IAAI,KAAK;AAAA,IACT,IAAI,KAAK,cAAc,aAAa,GAAG;AAAA,MACrC,CAAC,SAAS,EAAE,IAAI,KAAK,UAAU,aAAa;AAAA,IAC9C;AAAA,IACA,IAAI,CAAC,MAAM,KAAK,yBAAyB;AAAA,MACvC,CAAC,SAAS,EAAE,IAAI,KAAK,UAAU,IAAI,gBAAgB;AAAA,IACrD;AAAA,IACA,IAAI,CAAC,IAAI;AAAA,MACP,MAAM,QAAQ,IAAI,MAChB,oFAAoF,OAAO,KAAK,WAClG;AAAA,MACA,MAAM,OAAO;AAAA,MACb,MAAM;AAAA,IACR;AAAA,IACA,KAAK,YAAY;AAAA,IACjB,OAAO;AAAA;AAAA,EAET,aAAa,CAAC,eAAe;AAAA,IAC3B,MAAM,gBAAgB;AAAA,IACtB,MAAM,eAAe,CAAC,QAAQ,SAAS,MAAM;AAAA,IAC7C,MAAM,gBAAgB;AAAA,IACtB,IAAI,kBAAkB,IAAI;AAAA,MACxB,OAAO;AAAA,IACT;AAAA,IACA,IAAI,cAAc,SAAS,cAAc,EAAE,GAAG;AAAA,MAC5C,OAAO;AAAA,IACT;AAAA,IACA,IAAI,aAAa,SAAS,aAAa,GAAG;AAAA,MACxC,OAAO;AAAA,IACT;AAAA,IACA,IAAI,cAAc,SAAS,cAAc,EAAE,GAAG;AAAA,MAC5C,OAAO,GAAG,MAAM,KAAK,UAAU,aAAa;AAAA,MAC5C,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA;AAAA,EAET,SAAS,CAAC,MAAM;AAAA,IACd,IAAI;AAAA,MACF,MAAM,OAAO,KAAK,MAAM,IAAI;AAAA,MAC5B,OAAO,CAAC,MAAM,IAAI;AAAA,MAClB,MAAM;AAAA,MACN,OAAO,CAAC,MAAM,KAAK;AAAA;AAAA;AAGzB;AACA,IAAI,QAAQ,IAAI;AAChB,IAAI,gBAAgB;AAGpB,IAAI,eAAe;AAAA,GAChB,QAAsB;AAAA,GACtB,aAAgC;AAAA,GAChC,uBAAoD;AAAA,GACpD,qBAAgD;AAAA,GAChD,aAAgC;AAAA,GAChC,WAA4B;AAAA,GAC5B,UAA0B;AAAA,GAC1B,WAA4B;AAAA,GAC5B,WAA4B;AAAA,GAC5B,YAA8B;AAAA,GAC9B,WAA4B;AAAA,GAC5B,SAAwB;AAAA,GACxB,WAA4B;AAAA,GAC5B,SAAwB;AAAA,GACxB,aAAgC;AAAA,GAChC,OAAoB;AAAA,GACpB,QAAsB;AAAA,GACtB,OAAoB;AAAA,GACpB,OAAoB;AAAA,GACpB,OAAoB;AAAA,GACpB,QAAsB;AAAA,GACtB,QAAsB;AAAA,GACtB,OAAoB;AAAA,GACpB,UAA0B;AAAA,GAC1B,SAAwB;AAAA,GACxB,QAAsB;AAAA,GACtB,WAA4B;AAAA,GAC5B,WAA4B;AAAA,GAC5B,aAAgC;AAAA,GAChC,YAA8B;AAAA,GAC9B,SAAwB;AAAA,GACxB,WAA4B;AAAA,GAC5B,QAAsB;AAAA,GACtB,QAAsB;AAAA,GACtB,WAA4B;AAAA,GAC5B,aAAgC;AAAA,GAChC,WAA4B;AAC/B;AACA,IAAI,cAAc,MAAM,aAAa;AAAA,EACnC,QAAQ;AAAA,EACR,SAAS,CAAC;AAAA,EACV,KAAK,CAAC,YAAY,SAAS;AAAA,IACzB,KAAK,WAAW,YAAY,WAAW,EAAE,wBAAwB,MAAM,CAAC;AAAA,IACxE,KAAK,QAAQ;AAAA,IACb,MAAM,MAAM,KAAK,WAAW,CAAC;AAAA,IAC7B,IAAI,KAAK,UAAU,CAAC,MAAM,OAAqB;AAAA,MAC7C,MAAM,QAAQ,KAAK,eAAe,CAAC;AAAA,MACnC,KAAK,WAAW,OAAO,wCAAwC,MAAM,gBAAgB,MAAM,OAAO;AAAA,IACpG;AAAA,IACA,OAAO;AAAA;AAAA,EAET,UAAU,CAAC,YAAY,SAAS;AAAA,IAC9B,KAAK,SAAS,cAAc,SAAS,YAAY,OAAO;AAAA,IACxD,KAAK,OAAO,KAAK,EAAE,MAAM,OAAqB,OAAO,IAAI,OAAO,WAAW,OAAO,CAAC;AAAA;AAAA,EAErF,UAAU,CAAC,KAAK;AAAA,IACd,MAAM,YAAY,KAAK,eAAe,CAAC;AAAA,IACvC,KAAK,QAAQ;AAAA,IACb,IAAI,OAAO,KAAK,IAAI,SAAS;AAAA,IAC7B,IAAI,mBAAmB,KAAK,UAAU,CAAC;AAAA,IACvC,OAAO,MAAM,aAAa,mBAAmB;AAAA,MAC3C,KAAK,QAAQ;AAAA,MACb,OAAO,KAAK,IAAI,kBAAkB,IAAI;AAAA,MACtC,mBAAmB,KAAK,UAAU,CAAC;AAAA,IACrC;AAAA,IACA,OAAO;AAAA;AAAA,EAET,SAAS,CAAC,QAAQ;AAAA,IAChB,OAAO,KAAK,OAAO,KAAK,QAAQ,QAAQ;AAAA;AAAA,EAE1C,cAAc,CAAC,QAAQ;AAAA,IACrB,OAAO,KAAK,OAAO,KAAK,QAAQ;AAAA;AAAA,EAElC,OAAO,GAAG;AAAA,IACR,KAAK,SAAS;AAAA;AAAA,EAEhB,GAAG,CAAC,OAAO;AAAA,IACT,QAAQ,MAAM;AAAA,WACP;AAAA,QACH,OAAO,EAAE,MAAM,YAAY,MAAM,MAAM,MAAM;AAAA,WAC1C;AAAA,QACH,OAAO,EAAE,MAAM,WAAW,OAAO,MAAM,MAAM;AAAA,WAC1C,sBAAmD;AAAA,QACtD,IAAI,aAAa,UAAU,OAAO,KAAK,KAAK,KAAK,UAAU,CAAC,MAAM,YAA+B;AAAA,UAC/F,OAAO,KAAK,mBAAmB;AAAA,QACjC,EAAO;AAAA,UACL,OAAO,EAAE,MAAM,SAAS,MAAM,MAAM,MAAM;AAAA;AAAA,MAE9C;AAAA,WACK;AAAA,QACH,IAAI,KAAK,UAAU,CAAC,MAAM,UAA2B;AAAA,UACnD,MAAM,IAAI,MAAM,iEAAiE;AAAA,QACnF,EAAO;AAAA,UACL,OAAO,EAAE,MAAM,SAAS,MAAM,MAAM,MAAM;AAAA;AAAA,WAEzC,OAAqB;AAAA,QACxB,MAAM,QAAQ,KAAK,WAAW,aAAa,GAAG;AAAA,QAC9C,OAAO,EAAE,MAAM,iBAAiB,MAAM;AAAA,MACxC;AAAA,WACK,SAAyB;AAAA,QAC5B,MAAM,QAAQ,KAAK,WAAW,aAAa,KAAK;AAAA,QAChD,OAAO;AAAA,UACL,MAAM;AAAA,UACN,UAAU,MAAM;AAAA,UAChB,SAAS;AAAA,QACX;AAAA,MACF;AAAA,WACK,QAAuB;AAAA,QAC1B,MAAM,QAAQ,KAAK,WAAW,aAAa,IAAI;AAAA,QAC/C,OAAO;AAAA,UACL,MAAM;AAAA,UACN,UAAU,MAAM;AAAA,UAChB,SAAS;AAAA,QACX;AAAA,MACF;AAAA,WACK,QAAuB;AAAA,QAC1B,MAAM,OAAO,EAAE,MAAM,WAAW;AAAA,QAChC,OAAO,EAAE,MAAM,mBAAmB,MAAM,OAAO,KAAK,mBAAmB,aAAa,IAAI,EAAE;AAAA,MAC5F;AAAA,WACK;AAAA,QACH,OAAO,KAAK,IAAI,MAAM,MAAM,EAAE,MAAM,WAAW,CAAC;AAAA,WAC7C;AAAA,QACH,OAAO,KAAK,qBAAqB;AAAA,WAC9B,WAA6B;AAAA,QAChC,MAAM,OAAO;AAAA,UACX,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,WAAW;AAAA,QAC5B;AAAA,QACA,MAAM,QAAQ,KAAK,mBAAmB,aAAa,OAAO;AAAA,QAC1D,OAAO,EAAE,MAAM,cAAc,MAAM,MAAM;AAAA,MAC3C;AAAA,WACK,YAA+B;AAAA,QAClC,IAAI,KAAK,UAAU,CAAC,MAAM,YAA6B,KAAK,UAAU,CAAC,MAAM,SAAyB;AAAA,UACpG,MAAM,QAAQ,KAAK,qBAAqB;AAAA,UACxC,OAAO,KAAK,eAAe,EAAE,MAAM,WAAW,GAAG,KAAK;AAAA,QACxD;AAAA,QACA,IAAI,KAAK,UAAU,CAAC,MAAM,UAAyB,KAAK,UAAU,CAAC,MAAM,YAA+B;AAAA,UACtG,KAAK,QAAQ;AAAA,UACb,KAAK,QAAQ;AAAA,UACb,MAAM,QAAQ,KAAK,mBAAmB,aAAa,IAAI;AAAA,UACvD,OAAO;AAAA,YACL,MAAM,EAAE,MAAM,WAAW;AAAA,YACzB;AAAA,YACA,MAAM;AAAA,UACR;AAAA,QACF;AAAA,QACA,OAAO,KAAK,qBAAqB;AAAA,MACnC;AAAA,WACK;AAAA,QACH,OAAO,EAAE,MAAM,UAA4B;AAAA,WACxC;AAAA,QACH,OAAO,EAAE,MAAM,OAAsB;AAAA,WAClC,UAA2B;AAAA,QAC9B,MAAM,QAAQ,KAAK,WAAW,aAAa,MAAM;AAAA,QACjD,OAAO,EAAE,MAAM,uBAAuB,MAAM;AAAA,MAC9C;AAAA,WACK,UAA2B;AAAA,QAC9B,MAAM,aAAa,KAAK,WAAW,CAAC;AAAA,QACpC,KAAK,MAAM,QAAyB;AAAA,QACpC,OAAO;AAAA,MACT;AAAA;AAAA,QAEE,KAAK,WAAW,KAAK;AAAA;AAAA;AAAA,EAG3B,GAAG,CAAC,WAAW,MAAM;AAAA,IACnB,QAAQ;AAAA,WACD,YAA+B;AAAA,QAClC,MAAM,WAAW,KAAK,WAAW,CAAC;AAAA,QAClC,KAAK,MAAM,OAAuB;AAAA,QAClC,MAAM,YAAY,KAAK,WAAW,CAAC;AAAA,QACnC,OAAO;AAAA,UACL,MAAM;AAAA,UACN,WAAW;AAAA,UACX;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,WACK,OAAqB;AAAA,QACxB,MAAM,MAAM,aAAa;AAAA,QACzB,IAAI,KAAK,UAAU,CAAC,MAAM,QAAuB;AAAA,UAC/C,MAAM,SAAS,KAAK,YAAY,GAAG;AAAA,UACnC,OAAO,EAAE,MAAM,iBAAiB,MAAM,OAAO,OAAO;AAAA,QACtD;AAAA,QACA,KAAK,QAAQ;AAAA,QACb,MAAM,QAAQ,KAAK,mBAAmB,GAAG;AAAA,QACzC,OAAO,EAAE,MAAM,mBAAmB,MAAM,MAAM;AAAA,MAChD;AAAA,WACK,QAAuB;AAAA,QAC1B,MAAM,QAAQ,KAAK,WAAW,aAAa,IAAI;AAAA,QAC/C,OAAO,EAAE,MAAM,QAAQ,MAAM,MAAM;AAAA,MACrC;AAAA,WACK,MAAmB;AAAA,QACtB,MAAM,QAAQ,KAAK,WAAW,aAAa,EAAE;AAAA,QAC7C,OAAO,EAAE,MAAM,gBAAgB,MAAM,MAAM;AAAA,MAC7C;AAAA,WACK,OAAqB;AAAA,QACxB,MAAM,QAAQ,KAAK,WAAW,aAAa,GAAG;AAAA,QAC9C,OAAO,EAAE,MAAM,iBAAiB,MAAM,MAAM;AAAA,MAC9C;AAAA,WACK,UAA2B;AAAA,QAC9B,IAAI,KAAK,SAAS,SAAS;AAAA,UACzB,MAAM,IAAI,MAAM,qCAAqC;AAAA,QACvD;AAAA,QACA,MAAM,OAAO,KAAK;AAAA,QAClB,MAAM,OAAO,KAAK,yCAAyC,QAAyB;AAAA,QACpF,MAAM,OAAO,EAAE,MAAM,MAAM,YAAY,UAAU,KAAK;AAAA,QACtD,OAAO;AAAA,MACT;AAAA,WACK,UAA2B;AAAA,QAC9B,MAAM,YAAY,KAAK,WAAW,CAAC;AAAA,QACnC,KAAK,MAAM,UAA6B;AAAA,QACxC,MAAM,QAAQ,KAAK,UAAU,CAAC,MAAM,YAA8B,EAAE,MAAM,WAAW,IAAI,KAAK,mBAAmB,aAAa,MAAM;AAAA,QACpI,OAAO,EAAE,MAAM,oBAAoB,MAAM,OAAO,UAAU;AAAA,MAC5D;AAAA,WACK,WAA6B;AAAA,QAChC,MAAM,WAAW,EAAE,MAAM,WAAW,OAAO,KAAK;AAAA,QAChD,MAAM,QAAQ,KAAK,mBAAmB,aAAa,OAAO;AAAA,QAC1D,OAAO,EAAE,MAAM,cAAc,MAAM,UAAU,MAAM;AAAA,MACrD;AAAA,WACK,UAA2B;AAAA,QAC9B,MAAM,WAAW;AAAA,QACjB,MAAM,QAAQ,KAAK,WAAW,CAAC;AAAA,QAC/B,OAAO;AAAA,UACL,MAAM;AAAA,UACN,UAAU,SAAS;AAAA,UACnB,WAAW;AAAA,QACb;AAAA,MACF;AAAA,WACK;AAAA,WACA;AAAA,WACA;AAAA,WACA;AAAA,WACA;AAAA,WACA;AAAA,QACH,OAAO,KAAK,gBAAgB,MAAM,SAAS;AAAA,WACxC;AAAA,WACA;AAAA,WACA;AAAA,WACA;AAAA,WACA;AAAA,WACA;AAAA,WACA;AAAA,QACH,OAAO,KAAK,gBAAgB,MAAM,SAAS;AAAA,WACxC,YAA+B;AAAA,QAClC,MAAM,QAAQ,KAAK,eAAe,CAAC;AAAA,QACnC,IAAI,MAAM,SAAS,YAA6B,MAAM,SAAS,SAAyB;AAAA,UACtF,MAAM,SAAS,KAAK,qBAAqB;AAAA,UACzC,OAAO,KAAK,eAAe,MAAM,MAAM;AAAA,QACzC;AAAA,QACA,KAAK,MAAM,MAAqB;AAAA,QAChC,KAAK,MAAM,UAA6B;AAAA,QACxC,MAAM,QAAQ,KAAK,mBAAmB,aAAa,IAAI;AAAA,QACvD,OAAO,EAAE,MAAM,cAAc,MAAM,MAAM;AAAA,MAC3C;AAAA;AAAA,QAEE,OAAO,KAAK,WAAW,KAAK,eAAe,CAAC,CAAC;AAAA;AAAA;AAAA,SAG5C,SAAS,CAAC,OAAO,SAAS;AAAA,IAC/B,OAAO,MAAM,SAAS,wBAAqD,MAAM,UAAU;AAAA;AAAA,EAE7F,KAAK,CAAC,WAAW;AAAA,IACf,IAAI,KAAK,UAAU,CAAC,MAAM,WAAW;AAAA,MACnC,KAAK,QAAQ;AAAA,MACb;AAAA,IACF,EAAO;AAAA,MACL,MAAM,QAAQ,KAAK,eAAe,CAAC;AAAA,MACnC,KAAK,WAAW,OAAO,0BAA0B,mBAAmB,MAAM,MAAM;AAAA;AAAA;AAAA,EAGpF,UAAU,CAAC,OAAO,UAAU,IAAI;AAAA,IAC9B,MAAM,QAAQ,IAAI,MAAM,WAAW,gCAAgC,MAAM,WAAW,MAAM,QAAQ;AAAA,IAClG,MAAM,OAAO;AAAA,IACb,MAAM;AAAA;AAAA,EAER,oBAAoB,GAAG;AAAA,IACrB,IAAI,KAAK,UAAU,CAAC,MAAM,WAA2B,KAAK,UAAU,CAAC,MAAM,SAAyB;AAAA,MAClG,OAAO,KAAK,qBAAqB;AAAA,IACnC;AAAA,IACA,MAAM,QAAQ,OAAO,KAAK,eAAe,CAAC,EAAE,KAAK;AAAA,IACjD,KAAK,QAAQ;AAAA,IACb,KAAK,MAAM,UAA6B;AAAA,IACxC,OAAO,EAAE,MAAM,SAAS,MAAM;AAAA;AAAA,EAEhC,cAAc,CAAC,MAAM,OAAO;AAAA,IAC1B,MAAM,YAAY;AAAA,MAChB,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACF;AAAA,IACA,IAAI,MAAM,SAAS,SAAS;AAAA,MAC1B,OAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,KAAK,mBAAmB,aAAa,IAAI;AAAA,QAChD,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAET,oBAAoB,GAAG;AAAA,IACrB,MAAM,QAAQ,CAAC,MAAM,MAAM,IAAI;AAAA,IAC/B,IAAI,QAAQ;AAAA,IACZ,IAAI,UAAU,KAAK,eAAe,CAAC;AAAA,IACnC,OAAO,QAAQ,QAAQ,cAAiC,QAAQ,GAAG;AAAA,MACjE,IAAI,QAAQ,SAAS,SAAyB;AAAA,QAC5C;AAAA,QACA,IAAI,UAAU,GAAG;AAAA,UACf,KAAK,WAAW,KAAK,eAAe,CAAC,GAAG,mDAAmD;AAAA,QAC7F;AAAA,QACA,KAAK,QAAQ;AAAA,MACf,EAAO,SAAI,QAAQ,SAAS,UAA2B;AAAA,QACrD,MAAM,OAAO,KAAK,eAAe,CAAC,EAAE;AAAA,QACpC,MAAM,SAAS;AAAA,QACf,KAAK,QAAQ;AAAA,MACf,EAAO;AAAA,QACL,MAAM,OAAO,KAAK,eAAe,CAAC;AAAA,QAClC,KAAK,WAAW,MAAM,mCAAmC,KAAK,SAAS,KAAK,OAAO;AAAA;AAAA,MAErF,UAAU,KAAK,eAAe,CAAC;AAAA,IACjC;AAAA,IACA,KAAK,MAAM,UAA6B;AAAA,IACxC,OAAO,OAAO,MAAM,QAAQ;AAAA,IAC5B,OAAO,EAAE,MAAM,SAAS,OAAO,MAAM,KAAK;AAAA;AAAA,EAE5C,kBAAkB,GAAG;AAAA,IACnB,MAAM,YAAY,KAAK,2CAA2C,IAAI;AAAA,IACtE,MAAM,aAAa,KAAK,WAAW,CAAC;AAAA,IACpC,MAAM,WAAW,UAAU,IAAI,CAAC,YAAY,OAAO;AAAA,IACnD,OAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACF;AAAA;AAAA,EAEF,0CAA0C,CAAC,SAAS;AAAA,IAClD,OAAO,KAAK,oCACV,MAAM;AAAA,MACJ,OAAO,aAAa,UAAU,KAAK,eAAe,CAAC,GAAG,OAAO;AAAA,OAE/D,MAAM;AAAA,MACJ,KAAK,QAAQ;AAAA,KAEjB;AAAA;AAAA,EAEF,wCAAwC,CAAC,OAAO;AAAA,IAC9C,OAAO,KAAK,oCACV,MAAM;AAAA,MACJ,OAAO,KAAK,UAAU,CAAC,MAAM;AAAA,OAE/B,MAAM;AAAA,MACJ,OAAO,KAAK,MAAM,KAAK;AAAA,KAE3B;AAAA;AAAA,EAEF,mCAAmC,CAAC,YAAY,eAAe;AAAA,IAC7D,MAAM,OAAO,CAAC;AAAA,IACd,IAAI;AAAA,IACJ,OAAO,CAAC,WAAW,GAAG;AAAA,MACpB,aAAa,KAAK,WAAW,CAAC;AAAA,MAC9B,IAAI,KAAK,UAAU,CAAC,MAAM,SAAyB;AAAA,QACjD,KAAK,MAAM,OAAuB;AAAA,MACpC;AAAA,MACA,KAAK,KAAK,UAAU;AAAA,IACtB;AAAA,IACA,cAAc;AAAA,IACd,OAAO;AAAA;AAAA,EAET,eAAe,CAAC,MAAM,YAAY;AAAA,IAChC,MAAM,QAAQ,KAAK,WAAW,aAAa,WAAW;AAAA,IACtD,OAAO,EAAE,MAAM,cAAc,MAAM,YAAY,MAAM,MAAM;AAAA;AAAA,EAE7D,eAAe,CAAC,MAAM,UAAU;AAAA,IAC9B,MAAM,QAAQ,KAAK,WAAW,aAAa,SAAS;AAAA,IACpD,OAAO,EAAE,MAAM,cAAc,UAAU,MAAM,MAAM;AAAA;AAAA,EAErD,WAAW,CAAC,KAAK;AAAA,IACf,MAAM,YAAY,KAAK,UAAU,CAAC;AAAA,IAClC,MAAM,aAAa,CAAC,sBAAmD,oBAA+C,MAAqB;AAAA,IAC3I,IAAI,WAAW,SAAS,SAAS,GAAG;AAAA,MAClC,OAAO,KAAK,WAAW,GAAG;AAAA,IAC5B;AAAA,IACA,IAAI,cAAc,YAA+B;AAAA,MAC/C,KAAK,MAAM,UAA6B;AAAA,MACxC,OAAO,KAAK,qBAAqB;AAAA,IACnC;AAAA,IACA,IAAI,cAAc,UAA2B;AAAA,MAC3C,KAAK,MAAM,QAAyB;AAAA,MACpC,OAAO,KAAK,qBAAqB;AAAA,IACnC;AAAA,IACA,MAAM,QAAQ,KAAK,eAAe,CAAC;AAAA,IACnC,KAAK,WAAW,OAAO,mCAAmC,MAAM,SAAS,MAAM,OAAO;AAAA;AAAA,EAExF,kBAAkB,CAAC,KAAK;AAAA,IACtB,IAAI,aAAa,KAAK,UAAU,CAAC,KAAK,IAAI;AAAA,MACxC,OAAO,EAAE,MAAM,WAAW;AAAA,IAC5B;AAAA,IACA,IAAI,KAAK,UAAU,CAAC,MAAM,YAA+B;AAAA,MACvD,OAAO,KAAK,WAAW,GAAG;AAAA,IAC5B;AAAA,IACA,IAAI,KAAK,UAAU,CAAC,MAAM,UAA2B;AAAA,MACnD,OAAO,KAAK,WAAW,GAAG;AAAA,IAC5B;AAAA,IACA,IAAI,KAAK,UAAU,CAAC,MAAM,OAAqB;AAAA,MAC7C,KAAK,MAAM,KAAmB;AAAA,MAC9B,OAAO,KAAK,YAAY,GAAG;AAAA,IAC7B;AAAA,IACA,MAAM,QAAQ,KAAK,eAAe,CAAC;AAAA,IACnC,KAAK,WAAW,OAAO,mCAAmC,MAAM,SAAS,MAAM,OAAO;AAAA;AAAA,EAExF,oBAAoB,GAAG;AAAA,IACrB,MAAM,cAAc,CAAC;AAAA,IACrB,OAAO,KAAK,UAAU,CAAC,MAAM,YAA+B;AAAA,MAC1D,MAAM,aAAa,KAAK,WAAW,CAAC;AAAA,MACpC,YAAY,KAAK,UAAU;AAAA,MAC3B,IAAI,KAAK,UAAU,CAAC,MAAM,SAAyB;AAAA,QACjD,KAAK,MAAM,OAAuB;AAAA,QAClC,IAAI,KAAK,UAAU,CAAC,MAAM,YAA+B;AAAA,UACvD,MAAM,IAAI,MAAM,yCAAyC;AAAA,QAC3D;AAAA,MACF;AAAA,IACF;AAAA,IACA,KAAK,MAAM,UAA6B;AAAA,IACxC,OAAO,EAAE,MAAM,mBAAmB,UAAU,YAAY;AAAA;AAAA,EAE1D,oBAAoB,GAAG;AAAA,IACrB,MAAM,QAAQ,CAAC;AAAA,IACf,MAAM,kBAAkB,CAAC,sBAAmD,kBAA6C;AAAA,IACzH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAW;AAAA,MACT,WAAW,KAAK,eAAe,CAAC;AAAA,MAChC,IAAI,CAAC,gBAAgB,SAAS,SAAS,IAAI,GAAG;AAAA,QAC5C,MAAM,IAAI,MAAM,qDAAqD,SAAS,MAAM;AAAA,MACtF;AAAA,MACA,UAAU,SAAS;AAAA,MACnB,KAAK,QAAQ;AAAA,MACb,KAAK,MAAM,OAAuB;AAAA,MAClC,QAAQ,KAAK,WAAW,CAAC;AAAA,MACzB,MAAM,KAAK,EAAE,OAAO,MAAM,gBAAgB,MAAM,QAAQ,CAAC;AAAA,MACzD,IAAI,KAAK,UAAU,CAAC,MAAM,SAAyB;AAAA,QACjD,KAAK,MAAM,OAAuB;AAAA,MACpC,EAAO,SAAI,KAAK,UAAU,CAAC,MAAM,UAA2B;AAAA,QAC1D,KAAK,MAAM,QAAyB;AAAA,QACpC;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO,EAAE,MAAM,mBAAmB,UAAU,MAAM;AAAA;AAEtD;AACA,IAAI,SAAS,IAAI;AACjB,IAAI,iBAAiB;AAGrB,IAAI,OAAO,MAAM,MAAM;AAAA,EACrB;AAAA,EACA,WAAW,CAAC,MAAM;AAAA,IAChB,KAAK,QAAQ;AAAA;AAAA,MAEX,MAAM,GAAG;AAAA,IACX,OAAO,KAAK;AAAA;AAAA,MAEV,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,WAAW;AAAA;AAAA,EAEzB,SAAS,CAAC,OAAO;AAAA,IACf,OAAO,MAAM,QAAQ,MAAM,IAAI,MAAM,KAAK,CAAC;AAAA;AAAA,aAElC,QAAQ,GAAG;AAAA,IACpB,MAAM,iBAAiB,CAAC,MAAM,UAAU;AAAA,MACtC,OAAO,IAAI,MAAM,IAAI,EAAE,UAAU,KAAK;AAAA;AAAA,IAExC,OAAO;AAAA;AAAA,SAEF,OAAO,CAAC,MAAM,OAAO;AAAA,IAC1B,MAAM,SAAS,KAAK;AAAA,IACpB,MAAM,UAAU,MAAM;AAAA,IACtB,SAAS,QAAQ,EAAG,QAAQ,KAAK,IAAI,OAAO,QAAQ,QAAQ,MAAM,GAAG,SAAS;AAAA,MAC5E,IAAI,OAAO,WAAW,QAAQ,QAAQ;AAAA,QACpC;AAAA,MACF;AAAA,MACA,OAAO,OAAO,SAAS,QAAQ,SAAS,IAAI,IAAI;AAAA,IAClD;AAAA,IACA,OAAO,OAAO,SAAS,QAAQ,SAAS,IAAI,IAAI;AAAA;AAAA,EAElD,OAAO,GAAG;AAAA,IACR,OAAO,OAAO,cAAc,GAAG,KAAK,WAAW,QAAQ,CAAC;AAAA;AAAA,MAEtD,UAAU,GAAG;AAAA,IACf,MAAM,QAAQ,CAAC,GAAG,KAAK,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAAA,IACzD,OAAO;AAAA;AAEX;AAGA,IAAI,qBAAqB,CAAC,WAAW,EAAE,WAAW,OAAO,KAAK;AAC9D,IAAI,uBAAuB,CAAC,aAAa,EAAE,aAAa,SAAS,OAAO;AACxE,IAAI,uBAAuB,CAAC,UAAU,EAAE,SAAS,MAAM,GAAG;AAC1D,IAAI,UAAU,MAAM;AAAA,EAClB;AAAA,EACA;AAAA,EACA,mCAAmC,IAAI;AAAA,EACvC,kBAAkB,OAAO,OAAO;AAAA,KAC7B,IAAsB;AAAA,KACtB,IAAmB;AAAA,KACnB,IAAsB;AAAA,KACtB,IAAqB;AAAA,KACrB,IAAsB;AAAA,KACtB,IAAuB;AAAA,KACvB,IAAsB;AAAA,KACtB,IAAoB;AAAA,KACpB,IAA4B;AAAA,KAC5B,KAA6B;AAAA,KAC7B,IAA4B;AAAA,KAC5B,KAA4B;AAAA,EAC/B,CAAC;AAAA,EACD,WAAW,CAAC,aAAa;AAAA,IACvB,KAAK,eAAe;AAAA,IACpB,KAAK,iBAAiB,KAAK,mBAAmB;AAAA;AAAA,EAEhD,kBAAkB,GAAG;AAAA,IACnB,OAAO;AAAA,MAEL,KAAK,EAAE,OAAO,mBAAmB,KAAK,GAAG,GAAG,YAAY,CAAC,EAAE,OAAO,CAAC,CAAmB,EAAE,CAAC,EAAE;AAAA,MAC3F,MAAM,EAAE,OAAO,mBAAmB,KAAK,IAAI,GAAG,YAAY,CAAC,EAAE,OAAO,CAAC,CAAmB,EAAE,CAAC,EAAE;AAAA,MAC7F,OAAO,EAAE,OAAO,mBAAmB,KAAK,KAAK,GAAG,YAAY,CAAC,EAAE,OAAO,CAAC,CAAmB,EAAE,CAAC,EAAE;AAAA,MAE/F,OAAO,EAAE,OAAO,qBAAqB,KAAK,GAAG,YAAY,CAAC,EAAE,OAAO,CAAC,CAAmB,EAAE,CAAC,EAAE;AAAA,MAC5F,OAAO,EAAE,OAAO,qBAAqB,KAAK,GAAG,YAAY,CAAC,EAAE,OAAO,CAAC,CAAmB,EAAE,CAAC,EAAE;AAAA,MAE5F,MAAM,EAAE,OAAO,qBAAqB,OAAO,IAAI,GAAG,YAAY,CAAC,EAAE,OAAO,CAAC,CAAmB,EAAE,CAAC,EAAE;AAAA,MACjG,QAAQ,EAAE,OAAO,qBAAqB,OAAO,MAAM,GAAG,YAAY,CAAC,EAAE,OAAO,CAAC,CAAmB,EAAE,CAAC,EAAE;AAAA,MAErG,KAAK,EAAE,OAAO,KAAK,aAAa,YAAY,CAAC,EAAE,OAAO,CAAC,CAAyB,EAAE,CAAC,EAAE;AAAA,MACrF,UAAU;AAAA,QACR,OAAO,KAAK;AAAA,QACZ,YAAY;AAAA,UACV,EAAE,OAAO,CAAC,GAAqB,CAAkB,EAAE;AAAA,UACnD,EAAE,OAAO,CAAC,CAAgB,EAAE;AAAA,QAC9B;AAAA,MACF;AAAA,MACA,WAAW;AAAA,QACT,OAAO,KAAK;AAAA,QACZ,YAAY,CAAC,EAAE,OAAO,CAAC,CAAmB,EAAE,GAAG,EAAE,OAAO,CAAC,CAAmB,EAAE,CAAC;AAAA,MACjF;AAAA,MACA,YAAY;AAAA,QACV,OAAO,KAAK;AAAA,QACZ,YAAY;AAAA,UACV,EAAE,OAAO,CAAC,CAAmB,EAAE;AAAA,UAC/B,EAAE,OAAO,CAAC,CAAmB,EAAE;AAAA,UAC/B,EAAE,OAAO,CAAC,CAAmB,GAAG,UAAU,KAAK;AAAA,UAC/C,EAAE,OAAO,CAAC,CAAmB,GAAG,UAAU,KAAK;AAAA,QACjD;AAAA,MACF;AAAA,MACA,WAAW;AAAA,QACT,OAAO,KAAK;AAAA,QACZ,YAAY;AAAA,UACV,EAAE,OAAO,CAAC,CAAmB,EAAE;AAAA,UAC/B,EAAE,OAAO,CAAC,CAAmB,EAAE;AAAA,UAC/B,EAAE,OAAO,CAAC,CAAmB,GAAG,UAAU,KAAK;AAAA,UAC/C,EAAE,OAAO,CAAC,CAAmB,GAAG,UAAU,KAAK;AAAA,QACjD;AAAA,MACF;AAAA,MACA,YAAY,EAAE,OAAO,KAAK,mBAAmB,YAAY,CAAC,EAAE,OAAO,CAAC,EAAyB,EAAE,CAAC,EAAE;AAAA,MAClG,UAAU;AAAA,QACR,OAAO,KAAK;AAAA,QACZ,YAAY,CAAC,EAAE,OAAO,CAAC,CAAkB,EAAE,GAAG,EAAE,OAAO,CAAC,CAAmB,EAAE,CAAC;AAAA,MAChF;AAAA,MACA,OAAO,EAAE,OAAO,KAAK,eAAe,YAAY,CAAC,EAAE,OAAO,CAAC,CAAmB,EAAE,CAAC,EAAE;AAAA,MACnF,MAAM;AAAA,QACJ,OAAO,KAAK;AAAA,QACZ,YAAY,CAAC,EAAE,OAAO,CAAC,CAAmB,EAAE,GAAG,EAAE,OAAO,CAAC,CAAyB,EAAE,CAAC;AAAA,MACvF;AAAA,MACA,QAAQ;AAAA,QACN,OAAO,KAAK;AAAA,QACZ,YAAY,CAAC,EAAE,OAAO,CAAC,GAAqB,GAAoB,CAAmB,EAAE,CAAC;AAAA,MACxF;AAAA,MACA,KAAK;AAAA,QACH,OAAO,KAAK;AAAA,QACZ,YAAY,CAAC,EAAE,OAAO,CAAC,CAAmB,EAAE,GAAG,EAAE,OAAO,CAAC,CAAkB,EAAE,CAAC;AAAA,MAChF;AAAA,MACA,KAAK;AAAA,QACH,OAAO,KAAK;AAAA,QACZ,YAAY,CAAC,EAAE,OAAO,CAAC,GAA2B,CAAyB,EAAE,CAAC;AAAA,MAChF;AAAA,MACA,QAAQ;AAAA,QACN,OAAO,KAAK;AAAA,QACZ,YAAY,CAAC,EAAE,OAAO,CAAC,CAAkB,EAAE,GAAG,EAAE,OAAO,CAAC,CAAmB,EAAE,CAAC;AAAA,MAChF;AAAA,MACA,OAAO,EAAE,OAAO,KAAK,eAAe,YAAY,CAAC,EAAE,OAAO,CAAC,CAAmB,GAAG,UAAU,KAAK,CAAC,EAAE;AAAA,MACnG,KAAK;AAAA,QACH,OAAO,KAAK;AAAA,QACZ,YAAY,CAAC,EAAE,OAAO,CAAC,GAA2B,CAAyB,EAAE,CAAC;AAAA,MAChF;AAAA,MACA,QAAQ;AAAA,QACN,OAAO,KAAK;AAAA,QACZ,YAAY,CAAC,EAAE,OAAO,CAAC,CAAkB,EAAE,GAAG,EAAE,OAAO,CAAC,CAAmB,EAAE,CAAC;AAAA,MAChF;AAAA,MACA,UAAU,EAAE,OAAO,KAAK,iBAAiB,YAAY,CAAC,EAAE,OAAO,CAAC,CAAgB,GAAG,UAAU,KAAK,CAAC,EAAE;AAAA,MACrG,UAAU;AAAA,QACR,OAAO,KAAK;AAAA,QACZ,YAAY;AAAA,UACV,EAAE,OAAO,CAAC,CAAmB,EAAE;AAAA,UAC/B,EAAE,OAAO,CAAC,CAAmB,EAAE;AAAA,UAC/B,EAAE,OAAO,CAAC,CAAmB,GAAG,UAAU,KAAK;AAAA,QACjD;AAAA,MACF;AAAA,MACA,WAAW;AAAA,QACT,OAAO,KAAK;AAAA,QACZ,YAAY;AAAA,UACV,EAAE,OAAO,CAAC,CAAmB,EAAE;AAAA,UAC/B,EAAE,OAAO,CAAC,CAAmB,EAAE;AAAA,UAC/B,EAAE,OAAO,CAAC,CAAmB,GAAG,UAAU,KAAK;AAAA,QACjD;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,OAAO,KAAK;AAAA,QACZ,YAAY;AAAA,UACV,EAAE,OAAO,CAAC,CAAmB,EAAE;AAAA,UAC/B,EAAE,OAAO,CAAC,CAAmB,EAAE;AAAA,UAC/B,EAAE,OAAO,CAAC,CAAmB,EAAE;AAAA,UAC/B,EAAE,OAAO,CAAC,CAAmB,GAAG,UAAU,KAAK;AAAA,QACjD;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,OAAO,KAAK;AAAA,QACZ,YAAY,CAAC,EAAE,OAAO,CAAC,GAAqB,CAAkB,EAAE,CAAC;AAAA,MACnE;AAAA,MACA,MAAM;AAAA,QACJ,OAAO,KAAK;AAAA,QACZ,YAAY,CAAC,EAAE,OAAO,CAAC,GAA2B,CAAyB,EAAE,CAAC;AAAA,MAChF;AAAA,MACA,SAAS;AAAA,QACP,OAAO,KAAK;AAAA,QACZ,YAAY,CAAC,EAAE,OAAO,CAAC,CAAkB,EAAE,GAAG,EAAE,OAAO,CAAC,CAAmB,EAAE,CAAC;AAAA,MAChF;AAAA,MACA,OAAO;AAAA,QACL,OAAO,KAAK;AAAA,QACZ,YAAY;AAAA,UACV,EAAE,OAAO,CAAC,CAAmB,EAAE;AAAA,UAC/B,EAAE,OAAO,CAAC,CAAmB,EAAE;AAAA,UAC/B,EAAE,OAAO,CAAC,CAAmB,GAAG,UAAU,KAAK;AAAA,QACjD;AAAA,MACF;AAAA,MACA,aAAa;AAAA,QACX,OAAO,KAAK;AAAA,QACZ,YAAY,CAAC,EAAE,OAAO,CAAC,CAAmB,EAAE,GAAG,EAAE,OAAO,CAAC,CAAmB,EAAE,CAAC;AAAA,MACjF;AAAA,MACA,KAAK,EAAE,OAAO,KAAK,aAAa,YAAY,CAAC,EAAE,OAAO,CAAC,CAAyB,EAAE,CAAC,EAAE;AAAA,MACrF,UAAU,EAAE,OAAO,KAAK,iBAAiB,YAAY,CAAC,EAAE,OAAO,CAAC,CAAgB,EAAE,CAAC,EAAE;AAAA,MACrF,WAAW,EAAE,OAAO,KAAK,kBAAkB,YAAY,CAAC,EAAE,OAAO,CAAC,CAAgB,EAAE,CAAC,EAAE;AAAA,MACvF,WAAW,EAAE,OAAO,KAAK,kBAAkB,YAAY,CAAC,EAAE,OAAO,CAAC,CAAgB,EAAE,CAAC,EAAE;AAAA,MACvF,MAAM;AAAA,QACJ,OAAO,KAAK;AAAA,QACZ,YAAY,CAAC,EAAE,OAAO,CAAC,CAAmB,EAAE,GAAG,EAAE,OAAO,CAAC,CAAmB,GAAG,UAAU,KAAK,CAAC;AAAA,MACjG;AAAA,MACA,WAAW;AAAA,QACT,OAAO,KAAK;AAAA,QACZ,YAAY,CAAC,EAAE,OAAO,CAAC,CAAmB,EAAE,GAAG,EAAE,OAAO,CAAC,CAAmB,GAAG,UAAU,KAAK,CAAC;AAAA,MACjG;AAAA,MACA,YAAY;AAAA,QACV,OAAO,KAAK;AAAA,QACZ,YAAY,CAAC,EAAE,OAAO,CAAC,CAAmB,EAAE,GAAG,EAAE,OAAO,CAAC,CAAmB,GAAG,UAAU,KAAK,CAAC;AAAA,MACjG;AAAA,MACA,MAAM,EAAE,OAAO,KAAK,cAAc,YAAY,CAAC,EAAE,OAAO,CAAC,CAAgB,EAAE,CAAC,EAAE;AAAA,MAC9E,KAAK,EAAE,OAAO,KAAK,aAAa,YAAY,CAAC,EAAE,OAAO,CAAC,CAAkB,GAAG,UAAU,KAAK,CAAC,EAAE;AAAA,IAChG;AAAA;AAAA,EAMF,gBAAgB,CAAC,MAAM,gBAAgB,WAAW,SAAS;AAAA,IACzD,MAAM,SAAS,KAAK,kBAAkB,MAAM,gBAAgB,WAAW,OAAO;AAAA,IAC9E,IAAI,CAAC,OAAO,SAAS;AAAA,MACnB,MAAM,IAAI,MAAM,OAAO,OAAO;AAAA,IAChC;AAAA;AAAA,EAKF,iBAAiB,CAAC,MAAM,gBAAgB,WAAW,UAAU,CAAC,GAAG;AAAA,IAC/D,IAAI,CAAC,QAAQ,OAAO,SAAS,YAAY,KAAK,KAAK,MAAM,IAAI;AAAA,MAC3D,OAAO;AAAA,QACL,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,IAAI;AAAA,MACF,KAAK,wBAAwB,MAAM,SAAS;AAAA,MAC5C,OAAO,OAAO;AAAA,MACd,OAAO;AAAA,QACL,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,SAAS,iBAAiB,QAAQ,MAAM,UAAU;AAAA,MACpD;AAAA;AAAA,IAEF,QAAQ,WAAW,OAAO,OAAO,UAAU;AAAA,IAC3C,MAAM,UAAS,QAAQ,KAAK;AAAA,IAC5B,IAAI,WAAU,CAAC,UAAU;AAAA,MACvB,OAAO;AAAA,QACL,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,SAAS,6BAA6B;AAAA,MACxC;AAAA,IACF;AAAA,IACA,IAAI,WAAU,YAAY,MAAM;AAAA,MAC9B,QAAQ,KAAK,0CAA0C,QAAQ;AAAA,IACjE;AAAA,IACA,KAAK,eAAe,QAAQ;AAAA,MAC1B,OAAO,eAAe,KAAK,IAAI;AAAA,MAC/B,YAAY;AAAA,IACd;AAAA,IACA,KAAK,iBAAiB,IAAI,IAAI;AAAA,IAC9B,MAAM,UAAU,UAAS,YAAY,mCAAmC,YAAY;AAAA,IACpF,OAAO,EAAE,SAAS,MAAM,QAAQ;AAAA;AAAA,EAKlC,QAAQ,CAAC,MAAM,gBAAgB,WAAW,UAAU,CAAC,GAAG;AAAA,IACtD,OAAO,KAAK,kBAAkB,MAAM,gBAAgB,WAAW,OAAO;AAAA;AAAA,EAKxE,UAAU,CAAC,MAAM;AAAA,IACf,IAAI,CAAC,KAAK,iBAAiB,IAAI,IAAI,GAAG;AAAA,MACpC,OAAO;AAAA,IACT;AAAA,IACA,OAAO,KAAK,eAAe;AAAA,IAC3B,KAAK,iBAAiB,OAAO,IAAI;AAAA,IACjC,OAAO;AAAA;AAAA,EAKT,YAAY,CAAC,MAAM;AAAA,IACjB,OAAO,QAAQ,KAAK;AAAA;AAAA,EAKtB,aAAa,GAAG;AAAA,IACd,OAAO,OAAO,KAAK,KAAK,cAAc;AAAA;AAAA,EAKxC,kBAAkB,GAAG;AAAA,IACnB,OAAO,MAAM,KAAK,KAAK,gBAAgB;AAAA;AAAA,EAKzC,oBAAoB,GAAG;AAAA,IACrB,WAAW,QAAQ,KAAK,kBAAkB;AAAA,MACxC,OAAO,KAAK,eAAe;AAAA,IAC7B;AAAA,IACA,KAAK,iBAAiB,MAAM;AAAA;AAAA,EAE9B,YAAY,CAAC,MAAM,cAAc;AAAA,IAC/B,MAAM,gBAAgB,KAAK,eAAe;AAAA,IAC1C,IAAI,kBAAuB,WAAG;AAAA,MAC5B,MAAM,IAAI,MAAM,qBAAqB,QAAQ;AAAA,IAC/C;AAAA,IACA,KAAK,aAAa,MAAM,cAAc,cAAc,UAAU;AAAA,IAC9D,OAAO,cAAc,MAAM,KAAK,MAAM,YAAY;AAAA;AAAA,EAEpD,uBAAuB,CAAC,MAAM,WAAW;AAAA,IACvC,SAAS,IAAI,EAAG,IAAI,UAAU,QAAQ,KAAK,GAAG;AAAA,MAC5C,IAAI,cAAc,UAAU,MAAM,MAAM,UAAU,SAAS,GAAG;AAAA,QAC5D,MAAM,IAAI,MAAM,kBAAkB,8BAA8B,IAAI,mBAAmB;AAAA,MACzF;AAAA,IACF;AAAA;AAAA,EAEF,YAAY,CAAC,MAAM,MAAM,WAAW;AAAA,IAClC,KAAK,wBAAwB,MAAM,SAAS;AAAA,IAC5C,KAAK,cAAc,MAAM,MAAM,SAAS;AAAA,IACxC,KAAK,cAAc,MAAM,MAAM,SAAS;AAAA;AAAA,EAE1C,aAAa,CAAC,MAAM,MAAM,WAAW;AAAA,IACnC,MAAM,uBAAuB,UAAU,OAAO,CAAC,iBAAiB,EAAE,aAAa,YAAY,MAAM,EAAE;AAAA,IACnG,MAAM,oBAAoB,UAAU,UAAU,SAAS,IAAI,YAAY;AAAA,IACvE,MAAM,aAAa,KAAK,SAAS;AAAA,IACjC,MAAM,cAAc,KAAK,SAAS,UAAU;AAAA,IAC5C,IAAI,qBAAqB,cAAc,CAAC,sBAAsB,cAAc,cAAc;AAAA,MACxF,MAAM,iBAAiB,eAAe,CAAC,qBAAqB,uBAAuB,KAAK,qBAAqB,cAAc;AAAA,MAC3H,MAAM,aAAa,UAAU,SAAS;AAAA,MACtC,MAAM,IAAI,MACR,kBAAkB,gBAAgB,iBAAiB,gCAAgC,cAAc,OAAO,mBAAmB,KAAK,QAClI;AAAA,IACF;AAAA;AAAA,EAEF,aAAa,CAAC,MAAM,MAAM,WAAW;AAAA,IACnC,SAAS,IAAI,EAAG,IAAI,UAAU,QAAQ,KAAK,GAAG;AAAA,MAC5C,MAAM,cAAc,UAAU,GAAG;AAAA,MACjC,MAAM,aAAa,KAAK,YAAY,KAAK,EAAE;AAAA,MAC3C,IAAI,eAAoB,WAAG;AAAA,QACzB;AAAA,MACF;AAAA,MACA,MAAM,cAAc,YAAY,KAAK,CAAC,iBAAiB,KAAK,YAAY,YAAY,cAAc,KAAK,EAAE,CAAC;AAAA,MAC1G,IAAI,CAAC,aAAa;AAAA,QAChB,MAAM,WAAW,YAAY,IAAI,CAAC,WAAW,KAAK,gBAAgB,OAAO,EAAE,KAAK,KAAK;AAAA,QACrF,MAAM,IAAI,MACR,iBAAiB,4BAA4B,IAAI,iBAAiB,+BAA+B,KAAK,gBAAgB,sBACxH;AAAA,MACF;AAAA,IACF;AAAA;AAAA,EAEF,WAAW,CAAC,QAAQ,UAAU,UAAU;AAAA,IACtC,IAAI,aAAa,GAAkB;AAAA,MACjC,OAAO;AAAA,IACT;AAAA,IACA,IAAI,aAAa,KAA6B,aAAa,KAA6B,aAAa,MAA8B,aAAa,MAA6B,aAAa,GAAoB;AAAA,MAC5M,IAAI,aAAa,GAAoB;AAAA,QACnC,OAAO,WAAW;AAAA,MACpB;AAAA,MACA,IAAI,WAAW,GAAoB;AAAA,QACjC,IAAI;AAAA,QACJ,IAAI,aAAa,GAA2B;AAAA,UAC1C,UAAU;AAAA,QACZ,EAAO,SAAI,aAAa,IAA4B;AAAA,UAClD,UAAU;AAAA,QACZ,EAAO,SAAI,aAAa,GAA2B;AAAA,UACjD,UAAU;AAAA,QACZ,EAAO,SAAI,aAAa,IAA2B;AAAA,UACjD,UAAU;AAAA,QACZ;AAAA,QACA,MAAM,QAAQ;AAAA,QACd,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,UACxC,MAAM,WAAW,KAAK,YAAY,MAAM,EAAE;AAAA,UAC1C,IAAI,aAAkB,aAAK,YAAiB,aAAK,CAAC,KAAK,YAAY,UAAU,SAAS,MAAM,EAAE,GAAG;AAAA,YAC/F,OAAO;AAAA,UACT;AAAA,QACF;AAAA,QACA,OAAO;AAAA,MACT;AAAA,IACF,EAAO;AAAA,MACL,OAAO,WAAW;AAAA;AAAA,IAEpB,OAAO;AAAA;AAAA,EAET,WAAW,CAAC,KAAK;AAAA,IACf,IAAI,QAAQ,MAAM;AAAA,MAChB,OAAO;AAAA,IACT;AAAA,IACA,IAAI,OAAO,QAAQ,UAAU;AAAA,MAC3B,OAAO;AAAA,IACT;AAAA,IACA,IAAI,OAAO,QAAQ,UAAU;AAAA,MAC3B,OAAO;AAAA,IACT;AAAA,IACA,IAAI,OAAO,QAAQ,WAAW;AAAA,MAC5B,OAAO;AAAA,IACT;AAAA,IACA,IAAI,MAAM,QAAQ,GAAG,GAAG;AAAA,MACtB,OAAO;AAAA,IACT;AAAA,IACA,IAAI,OAAO,QAAQ,UAAU;AAAA,MAC3B,IAAI,IAAI,QAAQ;AAAA,QACd,OAAO;AAAA,MACT;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA;AAAA;AAAA,EAEF,iBAAiB,CAAC,YAAY,cAAc;AAAA,IAC1C,MAAM,cAAc,KAAK;AAAA,IACzB,MAAM,UAAU,CAAC,MAAM;AAAA,MACrB,MAAM,UAAU,YAAY,MAAM,YAAY,CAAC;AAAA,MAC/C,IAAI,CAAC,aAAa,SAAS,KAAK,YAAY,OAAO,CAAC,GAAG;AAAA,QACrD,MAAM,MAAM,kCAAkC,aAAa,IAAI,CAAC,MAAM,KAAK,gBAAgB,EAAE,EAAE,KAAK,KAAK,gBAAgB,KAAK,gBAAgB,KAAK,YAAY,OAAO;AAAA,QACtK,MAAM,IAAI,MAAM,GAAG;AAAA,MACrB;AAAA,MACA,OAAO;AAAA;AAAA,IAET,OAAO;AAAA;AAAA,EAET,cAAc,EAAE,gBAAgB;AAAA,IAC9B,IAAI,CAAC,cAAc,WAAW,UAAU,GAAG;AAAA,MACzC,OAAO;AAAA,IACT;AAAA,IACA,IAAI,MAAM;AAAA,IACV,SAAS,IAAI,EAAG,IAAI,WAAW,QAAQ,KAAK,GAAG;AAAA,MAC7C,OAAO,WAAW;AAAA,IACpB;AAAA,IACA,OAAO,MAAM,WAAW;AAAA;AAAA,EAE1B,mBAAmB;AAAA,IACjB;AAAA,IACA;AAAA,QACI;AAAA,IACJ,IAAI,MAAM,QAAQ,UAAU,GAAG;AAAA,MAC7B,MAAM,QAAQ;AAAA,MACd,OAAO,MAAM,SAAS,WAAW;AAAA,IACnC;AAAA,IACA,IAAI,OAAO,eAAe,UAAU;AAAA,MAClC,MAAM,OAAO;AAAA,MACb,IAAI,OAAO,gBAAgB,UAAU;AAAA,QACnC,OAAO,KAAK,SAAS,WAAW;AAAA,MAClC;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAET,mBAAmB,CAAC,iBAAiB;AAAA,IACnC,OAAO,WAAW,UAAU;AAAA,IAC5B,OAAO,UAAU,SAAS,QAAQ,UAAU,SAAS,OAAO,MAAM;AAAA;AAAA,EAEpE,oBAAoB,KAAK,mBAAmB,SAAS;AAAA,EACrD,mBAAmB,KAAK,mBAAmB,QAAQ;AAAA,EACnD,kBAAkB,CAAC,QAAQ;AAAA,IACzB,OAAO,CAAC,iBAAiB;AAAA,MACvB,MAAM,UAAU,aAAa;AAAA,MAC7B,MAAM,UAAU,aAAa;AAAA,MAC7B,MAAM,QAAQ,aAAa,SAAS,IAAI,aAAa,KAAU;AAAA,MAC/D,MAAM,MAAM,aAAa,SAAS,IAAI,aAAa,KAAU;AAAA,MAC7D,OAAO,OAAO,SAAS,SAAS,OAAO,GAAG;AAAA;AAAA;AAAA,EAG9C,oBAAoB,EAAE,WAAW;AAAA,IAC/B,MAAM,IAAI,CAAC,SAAS;AAAA,MAClB,IAAI,KAAK,UAAU,KAAK,OAAO,KAAK,OAAO,UAAU;AAAA,QACnD,MAAM,IAAI,MAAM,iFAAiF;AAAA,MACnG;AAAA,KACD;AAAA,IACD,OAAO,OAAO,YAAY,KAAK;AAAA;AAAA,EAEjC,kBAAkB,EAAE,OAAO,gBAAgB;AAAA,IACzC,MAAM,cAAc,KAAK,kBAAkB,YAAY,CAAC,CAAmB,CAAC;AAAA,IAC5E,OAAO,MAAM,OAAO,CAAC,KAAK,QAAQ;AAAA,MAChC,MAAM,IAAI,YAAY,OAAO,CAAC,CAAC;AAAA,MAC/B,MAAM,SAAS,IAAI,KAAK,IAAI,MAAM,CAAC;AAAA,MACnC,OAAO,KAAK,GAAG;AAAA,MACf,OAAO;AAAA,OACN,CAAC,CAAC;AAAA;AAAA,EAEP,gBAAgB,EAAE,gBAAgB;AAAA,IAChC,OAAO,OAAO,QAAQ,UAAU;AAAA;AAAA,EAElC,eAAe,CAAC,iBAAiB;AAAA,IAC/B,OAAO,UAAU,YAAY;AAAA,IAC7B,OAAO,SAAS,KAAK,QAAQ;AAAA;AAAA,EAE/B,iBAAiB,EAAE,gBAAgB;AAAA,IACjC,IAAI,OAAO,eAAe,UAAU;AAAA,MAClC,OAAO,IAAI,KAAK,UAAU,EAAE;AAAA,IAC9B;AAAA,IACA,IAAI,MAAM,QAAQ,UAAU,GAAG;AAAA,MAC7B,OAAO,WAAW;AAAA,IACpB;AAAA,IACA,OAAO,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,EAEjC,cAAc,EAAE,YAAY,cAAc;AAAA,IACxC,IAAI,CAAC,KAAK,cAAc;AAAA,MACtB,OAAO,CAAC;AAAA,IACV;AAAA,IACA,MAAM,SAAS,CAAC;AAAA,IAChB,MAAM,cAAc,KAAK;AAAA,IACzB,SAAS,IAAI,EAAG,IAAI,SAAS,QAAQ,KAAK,GAAG;AAAA,MAC3C,OAAO,KAAK,YAAY,MAAM,YAAY,SAAS,EAAE,CAAC;AAAA,IACxD;AAAA,IACA,OAAO;AAAA;AAAA,EAET,cAAc,EAAE,gBAAgB;AAAA,IAC9B,IAAI,CAAC,WAAW,QAAQ;AAAA,MACtB,OAAO;AAAA,IACT;AAAA,IACA,MAAM,WAAW,KAAK,YAAY,WAAW,EAAE;AAAA,IAC/C,IAAI,aAAa,GAAqB;AAAA,MACpC,OAAO,KAAK,IAAI,GAAG,UAAU;AAAA,IAC/B;AAAA,IACA,MAAM,WAAW;AAAA,IACjB,IAAI,aAAa,SAAS;AAAA,IAC1B,SAAS,IAAI,EAAG,IAAI,SAAS,QAAQ,KAAK,GAAG;AAAA,MAC3C,IAAI,WAAW,cAAc,SAAS,EAAE,IAAI,GAAG;AAAA,QAC7C,aAAa,SAAS;AAAA,MACxB;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAET,gBAAgB,CAAC,iBAAiB;AAAA,IAChC,MAAM,aAAa,aAAa;AAAA,IAChC,MAAM,gBAAgB,aAAa;AAAA,IACnC,MAAM,cAAc,KAAK,kBAAkB,YAAY,CAAC,GAAqB,CAAmB,CAAC;AAAA,IACjG,IAAI,YAAY;AAAA,IAChB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,SAAS,IAAI,EAAG,IAAI,cAAc,QAAQ,KAAK,GAAG;AAAA,MAChD,UAAU,eAAe,YAAY,cAAc,EAAE;AAAA,MACrD,IAAI,YAAiB,aAAK,UAAU,WAAW;AAAA,QAC7C,YAAY;AAAA,QACZ,YAAY,cAAc;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,OAAO,aAAa;AAAA;AAAA,EAEtB,gBAAgB,CAAC,iBAAiB;AAAA,IAChC,IAAI,SAAS,CAAC;AAAA,IACd,SAAS,IAAI,EAAG,IAAI,aAAa,QAAQ,KAAK,GAAG;AAAA,MAC/C,MAAM,UAAU,aAAa;AAAA,MAC7B,SAAS,OAAO,OAAO,QAAQ,OAAO;AAAA,IACxC;AAAA,IACA,OAAO;AAAA;AAAA,EAET,cAAc,EAAE,gBAAgB;AAAA,IAC9B,IAAI,CAAC,WAAW,QAAQ;AAAA,MACtB,OAAO;AAAA,IACT;AAAA,IACA,MAAM,WAAW,KAAK,YAAY,WAAW,EAAE;AAAA,IAC/C,IAAI,aAAa,GAAqB;AAAA,MACpC,OAAO,KAAK,IAAI,GAAG,UAAU;AAAA,IAC/B;AAAA,IACA,MAAM,WAAW;AAAA,IACjB,IAAI,aAAa,SAAS;AAAA,IAC1B,SAAS,IAAI,EAAG,IAAI,SAAS,QAAQ,KAAK,GAAG;AAAA,MAC3C,IAAI,SAAS,GAAG,cAAc,UAAU,IAAI,GAAG;AAAA,QAC7C,aAAa,SAAS;AAAA,MACxB;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAET,gBAAgB,CAAC,iBAAiB;AAAA,IAChC,MAAM,aAAa,aAAa;AAAA,IAChC,MAAM,gBAAgB,aAAa;AAAA,IACnC,MAAM,cAAc,KAAK,kBAAkB,YAAY,CAAC,GAAqB,CAAmB,CAAC;AAAA,IACjG,IAAI,YAAY;AAAA,IAChB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,SAAS,IAAI,EAAG,IAAI,cAAc,QAAQ,KAAK,GAAG;AAAA,MAChD,UAAU,eAAe,YAAY,cAAc,EAAE;AAAA,MACrD,IAAI,YAAiB,aAAK,UAAU,WAAW;AAAA,QAC7C,YAAY;AAAA,QACZ,YAAY,cAAc;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,OAAO,aAAa;AAAA;AAAA,EAEtB,kBAAkB,CAAC,iBAAiB;AAAA,IAClC,SAAS,IAAI,EAAG,IAAI,aAAa,QAAQ,KAAK,GAAG;AAAA,MAC/C,IAAI,KAAK,YAAY,aAAa,EAAE,MAAM,GAAmB;AAAA,QAC3D,OAAO,aAAa;AAAA,MACtB;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAET,kBAAkB,KAAK,kBAAkB,OAAO;AAAA,EAChD,mBAAmB,KAAK,kBAAkB,QAAQ;AAAA,EAClD,iBAAiB,CAAC,OAAO;AAAA,IACvB,OAAO,CAAC,iBAAiB;AAAA,MACvB,MAAM,UAAU,aAAa;AAAA,MAC7B,MAAM,QAAQ,aAAa;AAAA,MAC3B,MAAM,UAAU,aAAa,SAAS,IAAI,aAAa,KAAU;AAAA,MACjE,OAAO,MAAM,SAAS,OAAO,OAAO;AAAA;AAAA;AAAA,EAGxC,kBAAkB,CAAC,iBAAiB;AAAA,IAClC,MAAM,UAAU,aAAa;AAAA,IAC7B,MAAM,SAAS,aAAa;AAAA,IAC5B,MAAM,KAAK,aAAa;AAAA,IACxB,OAAO,QAAQ,SAAS,QAAQ,IAAI,aAAa,SAAS,IAAI,aAAa,KAAU,SAAC;AAAA;AAAA,EAExF,gBAAgB,CAAC,iBAAiB;AAAA,IAChC,MAAM,UAAU,aAAa;AAAA,IAC7B,MAAM,UAAU,aAAa;AAAA,IAC7B,OAAO,MAAM,SAAS,SAAS,aAAa,SAAS,IAAI,aAAa,KAAU,SAAC;AAAA;AAAA,EAEnF,kBAAkB,EAAE,gBAAgB;AAAA,IAClC,MAAM,WAAW,KAAK,YAAY,UAAU;AAAA,IAC5C,IAAI,aAAa,GAAqB;AAAA,MACpC,OAAO,IAAI,KAAK,UAAU,EAAE,QAAQ;AAAA,IACtC;AAAA,IACA,MAAM,gBAAgB,WAAW,MAAM,CAAC;AAAA,IACxC,cAAc,QAAQ;AAAA,IACtB,OAAO;AAAA;AAAA,EAET,eAAe,EAAE,gBAAgB;AAAA,IAC/B,IAAI,WAAW,UAAU,GAAG;AAAA,MAC1B,OAAO;AAAA,IACT;AAAA,IACA,IAAI,OAAO,WAAW,OAAO,UAAU;AAAA,MACrC,OAAO,CAAC,GAAG,UAAU,EAAE,KAAK,KAAK,QAAQ;AAAA,IAC3C;AAAA,IACA,OAAO,CAAC,GAAG,UAAU,EAAE,KAAK;AAAA;AAAA,EAE9B,iBAAiB,CAAC,iBAAiB;AAAA,IACjC,MAAM,cAAc,aAAa,GAAG,MAAM,CAAC;AAAA,IAC3C,IAAI,YAAY,WAAW,GAAG;AAAA,MAC5B,OAAO;AAAA,IACT;AAAA,IACA,MAAM,cAAc,KAAK;AAAA,IACzB,MAAM,aAAa,aAAa;AAAA,IAChC,MAAM,eAAe,KAAK,YAAY,YAAY,MAAM,YAAY,YAAY,EAAE,CAAC;AAAA,IACnF,IAAI,iBAAsB,aAAK,CAAC,CAAC,GAAqB,CAAmB,EAAE,SAAS,YAAY,GAAG;AAAA,MACjG,MAAM,IAAI,MAAM,kCAAkC,KAAK,gBAAgB,gBAAgB;AAAA,IACzF;AAAA,IACA,SAAS,qBAAqB,CAAC,IAAI,MAAM;AAAA,MACvC,MAAM,IAAI,MACR,2BAA2B,GAAG,gBAAgB,4BAA4B,GAAG,gBAAgB,GAAG,YAAY,IAAI,IAClH;AAAA;AAAA,IAEF,OAAO,YAAY,KAAK,CAAC,GAAG,MAAM;AAAA,MAChC,MAAM,QAAQ,YAAY,MAAM,YAAY,CAAC;AAAA,MAC7C,MAAM,QAAQ,YAAY,MAAM,YAAY,CAAC;AAAA,MAC7C,IAAI,KAAK,YAAY,KAAK,MAAM,cAAc;AAAA,QAC5C,sBAAsB,MAAM,KAAK;AAAA,MACnC,EAAO,SAAI,KAAK,YAAY,KAAK,MAAM,cAAc;AAAA,QACnD,sBAAsB,MAAM,KAAK;AAAA,MACnC;AAAA,MACA,IAAI,iBAAiB,GAAqB;AAAA,QACxC,OAAO,KAAK,SAAS,OAAO,KAAK;AAAA,MACnC;AAAA,MACA,OAAO,QAAQ;AAAA,KAChB;AAAA;AAAA,EAEH,qBAAqB,EAAE,YAAY,eAAe;AAAA,IAChD,OAAO,WAAW,WAAW,SAAS;AAAA;AAAA,EAExC,cAAc,EAAE,gBAAgB;AAAA,IAC9B,OAAO,WAAW,OAAO,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC;AAAA;AAAA,EAE7C,kBAAkB,EAAE,gBAAgB;AAAA,IAClC,IAAI,KAAK,YAAY,UAAU,MAAM,GAAoB;AAAA,MACvD,OAAO;AAAA,IACT;AAAA,IACA,OAAO,CAAC,UAAU;AAAA;AAAA,EAEpB,mBAAmB,EAAE,gBAAgB;AAAA,IACnC,MAAM,WAAW,KAAK,YAAY,UAAU;AAAA,IAC5C,IAAI;AAAA,IACJ,IAAI,aAAa,GAAqB;AAAA,MACpC,OAAO;AAAA,IACT;AAAA,IACA,IAAI,aAAa,GAAqB;AAAA,MACpC,iBAAiB,CAAC;AAAA,MAClB,IAAI,CAAC,MAAM,cAAc,GAAG;AAAA,QAC1B,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAET,mBAAmB,EAAE,gBAAgB;AAAA,IACnC,IAAI,KAAK,YAAY,UAAU,MAAM,GAAqB;AAAA,MACxD,OAAO;AAAA,IACT;AAAA,IACA,OAAO,KAAK,UAAU,UAAU;AAAA;AAAA,EAElC,eAAe,KAAK,mBAAmB,IAAI;AAAA,EAC3C,mBAAmB,KAAK,mBAAmB,QAAQ;AAAA,EACnD,oBAAoB,KAAK,mBAAmB,SAAS;AAAA,EACrD,kBAAkB,CAAC,QAAQ;AAAA,IACzB,OAAO,CAAC,iBAAiB;AAAA,MACvB,MAAM,UAAU,aAAa;AAAA,MAC7B,MAAM,QAAQ,aAAa,SAAS,IAAI,aAAa,KAAU;AAAA,MAC/D,OAAO,OAAO,SAAS,KAAK;AAAA;AAAA;AAAA,EAGhC,eAAe,EAAE,gBAAgB;AAAA,IAC/B,QAAQ,KAAK,YAAY,UAAU;AAAA,WAC5B;AAAA,QACH,OAAO;AAAA,WACJ;AAAA,QACH,OAAO;AAAA,WACJ;AAAA,QACH,OAAO;AAAA,WACJ;AAAA,QACH,OAAO;AAAA,WACJ;AAAA,QACH,OAAO;AAAA,WACJ;AAAA,QACH,OAAO;AAAA;AAAA,QAEP,MAAM,IAAI,MAAM,cAAc;AAAA;AAAA;AAAA,EAGpC,cAAc,CAAC,UAAU;AAAA,IACvB,MAAM,SAAS,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC;AAAA,IACzD,MAAM,SAAS,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,IAAI,CAAC,GAAG,UAAU,MAAM,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC;AAAA,IACxF,OAAO;AAAA;AAEX;AAGA,IAAI,aAAa,MAAM,YAAY;AAAA,EACjC,QAAa;AAAA,EACb,OAAO,CAAC;AAAA,MACJ,gBAAgB,GAAG;AAAA,IACrB,OAAO,KAAK;AAAA;AAAA,EAEd,SAAS,CAAC,MAAM;AAAA,IACd,MAAM,QAAQ,IAAI;AAAA,IAClB,MAAM,QAAQ;AAAA,IACd,MAAM,OAAO;AAAA,IACb,OAAO;AAAA;AAAA,EAET,QAAQ,CAAC,YAAY;AAAA,IACnB,IAAI,OAAO,UAAU,eAAe,KAAK,KAAK,MAAM,UAAU,GAAG;AAAA,MAC/D,OAAO,KAAK,KAAK;AAAA,IACnB;AAAA,IACA,IAAI,KAAK,OAAO;AAAA,MACd,OAAO,KAAK,MAAM,SAAS,UAAU;AAAA,IACvC;AAAA,IACA,OAAO;AAAA;AAEX;AAGA,IAAI,kBAAkB,IAAI;AAC1B,IAAI,kBAAkB,MAAM,iBAAiB;AAAA,EAC3C;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA,WAAW,GAAG;AAAA,IACZ,KAAK,UAAU,IAAI,QAAQ,IAAI;AAAA,IAC/B,KAAK,SAAS,IAAI;AAAA;AAAA,EAEpB,SAAS,CAAC,OAAO;AAAA,IACf,MAAM,cAAc,IAAI;AAAA,IACxB,YAAY,QAAQ,iBAAiB,KAAK,QAAQ;AAAA,IAClD,YAAY,aAAa,KAAK;AAAA,IAC9B,YAAY,SAAS,KAAK,OAAO,UAAU,KAAK;AAAA,IAChD,OAAO;AAAA;AAAA,EAET,MAAM,CAAC,MAAM,OAAO;AAAA,IAClB,KAAK,aAAa;AAAA,IAClB,KAAK,SAAS;AAAA,IACd,OAAO,KAAK,MAAM,MAAM,KAAK;AAAA;AAAA,EAE/B,KAAK,CAAC,MAAM,OAAO;AAAA,IACjB,QAAQ,KAAK;AAAA,WACN,WAAW;AAAA,QACd,MAAM,YAAY,KAAK,MAAM,KAAK,WAAW,KAAK;AAAA,QAClD,IAAI,CAAC,QAAQ,SAAS,GAAG;AAAA,UACvB,OAAO,KAAK,MAAM,KAAK,UAAU,KAAK;AAAA,QACxC;AAAA,QACA,OAAO,KAAK,MAAM,KAAK,WAAW,KAAK;AAAA,MACzC;AAAA,WACK;AAAA,QACH,MAAM,aAAa,KAAK;AAAA,QACxB,IAAI,UAAU,QAAQ,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAAG;AAAA,UACvE,OAAO;AAAA,QACT;AAAA,QACA,OAAO,MAAM,eAAe;AAAA,WACzB,iBAAiB;AAAA,QACpB,QAAQ,UAAU,eAAe;AAAA,QACjC,IAAI,QAAQ,CAAC;AAAA,QACb,SAAS,QAAQ,CAAC,YAAY;AAAA,UAC5B,MAAM,YAAY,KAAK,MAAM,SAAS,KAAK;AAAA,UAC3C,QAAQ;AAAA,eACH;AAAA,eACA;AAAA,UACL;AAAA,SACD;AAAA,QACD,OAAO,KAAK,UAAU,KAAK,EAAE,MAAM,YAAY,KAAK;AAAA,MACtD;AAAA,WACK,WAAW;AAAA,QACd,QAAQ,UAAU,cAAc;AAAA,QAChC,MAAM,SAAS,KAAK,MAAM,WAAW,KAAK;AAAA,QAC1C,OAAO,GAAG,WAAW,OAAO;AAAA,MAC9B;AAAA,WACK,YAAY;AAAA,QACf,MAAM,WAAW,KAAK;AAAA,QACtB,IAAI,CAAC,KAAK,OAAO,SAAS,QAAQ,KAAK,CAAC,OAAO,UAAU,eAAe,KAAK,KAAK,OAAO,kBAAkB,QAAQ,GAAG;AAAA,UACpH,MAAM,IAAI,MAAM,wCAAwC,UAAU;AAAA,QACpE;AAAA,QACA,OAAO,KAAK,OAAO,SAAS,QAAQ;AAAA,MACtC;AAAA,WACK;AAAA,QACH,OAAO,KAAK,MAAM,KAAK,OAAO,KAAK,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,WACvD,iBAAiB;AAAA,QACpB,MAAM,SAAS,KAAK,MAAM,KAAK,MAAM,KAAK;AAAA,QAC1C,OAAO,UAAU,OAAO,KAAK,MAAM,KAAK,OAAO,MAAM,KAAK,OAAO;AAAA,MACnE;AAAA,WACK,SAAS;AAAA,QACZ,IAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AAAA,UACzB,OAAO;AAAA,QACT;AAAA,QACA,MAAM,QAAQ,KAAK,QAAQ,IAAI,MAAM,SAAS,KAAK,QAAQ,KAAK;AAAA,QAChE,OAAO,MAAM,UAAU;AAAA,MACzB;AAAA,WACK,SAAS;AAAA,QACZ,IAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,OAAO,UAAU,UAAU;AAAA,UACtD,OAAO;AAAA,QACT;AAAA,QACA,QAAQ,OAAO,MAAM,SAAS,KAAK,mBAAmB,MAAM,QAAQ,IAAI;AAAA,QACxE,IAAI,OAAO,UAAU,UAAU;AAAA,UAC7B,MAAM,QAAQ,CAAC,GAAG,KAAK;AAAA,UACvB,MAAM,SAAS,KAAK,MAAM,OAAO,OAAO,MAAM,IAAI;AAAA,UAClD,OAAO,OAAO,KAAK,EAAE;AAAA,QACvB,EAAO;AAAA,UACL,OAAO,KAAK,MAAM,OAAO,OAAO,MAAM,IAAI;AAAA;AAAA,MAE9C;AAAA,WACK,cAAc;AAAA,QACjB,QAAQ,MAAM,UAAU;AAAA,QACxB,IAAI,cAAc;AAAA,QAClB,IAAI,KAAK,SAAS,qBAAqB,KAAK,MAAM,SAAS,SAAS;AAAA,UAClE,cAAc;AAAA,QAChB;AAAA,QACA,MAAM,OAAO,KAAK,MAAM,MAAM,KAAK;AAAA,QACnC,IAAI,eAAe,OAAO,SAAS,UAAU;AAAA,UAC3C,OAAO,KAAK,MAAM,OAAO,IAAI;AAAA,QAC/B;AAAA,QACA,IAAI,CAAC,MAAM,QAAQ,IAAI,GAAG;AAAA,UACxB,OAAO;AAAA,QACT;AAAA,QACA,MAAM,YAAY,CAAC;AAAA,QACnB,WAAW,QAAQ,MAAM;AAAA,UACvB,MAAM,UAAU,KAAK,MAAM,OAAO,IAAI;AAAA,UACtC,IAAI,YAAY,MAAM;AAAA,YACpB,UAAU,KAAK,OAAO;AAAA,UACxB;AAAA,QACF;AAAA,QACA,OAAO;AAAA,MACT;AAAA,WACK,mBAAmB;AAAA,QACtB,QAAQ,MAAM,UAAU;AAAA,QACxB,MAAM,OAAO,KAAK,MAAM,MAAM,KAAK;AAAA,QACnC,IAAI,SAAS,QAAQ,OAAO,SAAS,YAAY,MAAM,QAAQ,IAAI,GAAG;AAAA,UACpE,OAAO;AAAA,QACT;AAAA,QACA,MAAM,YAAY,CAAC;AAAA,QACnB,MAAM,SAAS,OAAO,OAAO,IAAI;AAAA,QACjC,WAAW,QAAQ,QAAQ;AAAA,UACzB,MAAM,UAAU,KAAK,MAAM,OAAO,IAAI;AAAA,UACtC,IAAI,YAAY,MAAM;AAAA,YACpB,UAAU,KAAK,OAAO;AAAA,UACxB;AAAA,QACF;AAAA,QACA,OAAO;AAAA,MACT;AAAA,WACK,oBAAoB;AAAA,QACvB,QAAQ,MAAM,OAAO,cAAc;AAAA,QACnC,MAAM,OAAO,KAAK,MAAM,MAAM,KAAK;AAAA,QACnC,IAAI,CAAC,MAAM,QAAQ,IAAI,GAAG;AAAA,UACxB,OAAO;AAAA,QACT;AAAA,QACA,MAAM,UAAU,CAAC;AAAA,QACjB,WAAW,QAAQ,MAAM;AAAA,UACvB,MAAM,UAAU,KAAK,MAAM,WAAW,IAAI;AAAA,UAC1C,IAAI,QAAQ,OAAO,GAAG;AAAA,YACpB;AAAA,UACF;AAAA,UACA,MAAM,SAAS,KAAK,MAAM,OAAO,IAAI;AAAA,UACrC,IAAI,WAAW,MAAM;AAAA,YACnB,QAAQ,KAAK,MAAM;AAAA,UACrB;AAAA,QACF;AAAA,QACA,OAAO;AAAA,MACT;AAAA,WACK,cAAc;AAAA,QACjB,MAAM,QAAQ,KAAK,MAAM,KAAK,MAAM,KAAK;AAAA,QACzC,MAAM,SAAS,KAAK,MAAM,KAAK,OAAO,KAAK;AAAA,QAC3C,QAAQ,KAAK;AAAA,eACN;AAAA,YACH,OAAO,IAAI,OAAO,MAAM;AAAA,eACrB;AAAA,YACH,OAAO,IAAI,OAAO,MAAM;AAAA,eACrB;AAAA,eACA;AAAA,YACH,OAAO,IAAI,OAAO,MAAM;AAAA,eACrB;AAAA,YACH,OAAO,OAAO,OAAO,MAAM;AAAA,eACxB;AAAA,YACH,OAAO,IAAI,OAAO,MAAM;AAAA,eACrB;AAAA,YACH,OAAO,IAAI,OAAO,MAAM;AAAA;AAAA,YAExB,MAAM,IAAI,MAAM,8CAA8C,KAAK,UAAU;AAAA;AAAA,MAEnF;AAAA,WACK,SAAS;AAAA,QACZ,MAAM,UAAU,KAAK,MAAM,KAAK,SAAS,KAAK;AAAA,QAC9C,QAAQ,KAAK;AAAA,eACN;AAAA,YACH,cAAc,OAAO;AAAA,YACrB,OAAO;AAAA,eACJ;AAAA,YACH,cAAc,OAAO;AAAA,YACrB,OAAO,CAAC;AAAA;AAAA,YAER,MAAM,IAAI,MAAM,8CAA8C,KAAK,UAAU;AAAA;AAAA,MAEnF;AAAA,WACK,cAAc;AAAA,QACjB,MAAM,QAAQ,KAAK,MAAM,KAAK,MAAM,KAAK;AAAA,QACzC,MAAM,SAAS,KAAK,MAAM,KAAK,OAAO,KAAK;AAAA,QAC3C,QAAQ,KAAK;AAAA,eACN;AAAA,YACH,OAAO,gBAAgB,OAAO,MAAM;AAAA,eACjC;AAAA,YACH,OAAO,CAAC,gBAAgB,OAAO,MAAM;AAAA;AAAA,QAEzC,IAAI,OAAO,UAAU,YAAY,OAAO,WAAW,UAAU;AAAA,UAC3D,OAAO;AAAA,QACT;AAAA,QACA,QAAQ,KAAK;AAAA,eACN;AAAA,YACH,OAAO,QAAQ;AAAA,eACZ;AAAA,YACH,OAAO,SAAS;AAAA,eACb;AAAA,YACH,OAAO,QAAQ;AAAA,eACZ;AAAA,YACH,OAAO,SAAS;AAAA;AAAA,MAEtB;AAAA,WACK,WAAW;AAAA,QACd,MAAM,WAAW,KAAK,MAAM,KAAK,OAAO,KAAK;AAAA,QAC7C,OAAO,MAAM,QAAQ,QAAQ,IAAI,SAAS,KAAK,IAAI;AAAA,MACrD;AAAA,WACK;AAAA,QACH,OAAO,KAAK;AAAA,WACT,mBAAmB;AAAA,QACtB,MAAM,YAAY,CAAC;AAAA,QACnB,WAAW,SAAS,KAAK,UAAU;AAAA,UACjC,UAAU,KAAK,KAAK,MAAM,OAAO,KAAK,CAAC;AAAA,QACzC;AAAA,QACA,OAAO;AAAA,MACT;AAAA,WACK,mBAAmB;AAAA,QACtB,MAAM,YAAY,CAAC;AAAA,QACnB,WAAW,SAAS,KAAK,UAAU;AAAA,UACjC,UAAU,MAAM,QAAQ,KAAK,MAAM,MAAM,OAAO,KAAK;AAAA,QACvD;AAAA,QACA,OAAO;AAAA,MACT;AAAA,WACK,gBAAgB;AAAA,QACnB,MAAM,SAAS,KAAK,MAAM,KAAK,MAAM,KAAK;AAAA,QAC1C,IAAI,QAAQ,MAAM,GAAG;AAAA,UACnB,OAAO,KAAK,MAAM,KAAK,OAAO,KAAK;AAAA,QACrC;AAAA,QACA,OAAO;AAAA,MACT;AAAA,WACK,iBAAiB;AAAA,QACpB,MAAM,SAAS,KAAK,MAAM,KAAK,MAAM,KAAK;AAAA,QAC1C,IAAI,QAAQ,MAAM,GAAG;AAAA,UACnB,OAAO;AAAA,QACT;AAAA,QACA,OAAO,KAAK,MAAM,KAAK,OAAO,KAAK;AAAA,MACrC;AAAA,WACK;AAAA,QACH,OAAO,QAAQ,KAAK,MAAM,KAAK,OAAO,KAAK,CAAC;AAAA,WACzC;AAAA,QACH,OAAO,KAAK;AAAA,WACT;AAAA,QACH,OAAO,KAAK,MAAM,KAAK,OAAO,KAAK,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,WACvD,YAAY;AAAA,QACf,MAAM,OAAO,CAAC;AAAA,QACd,WAAW,SAAS,KAAK,UAAU;AAAA,UACjC,KAAK,KAAK,KAAK,MAAM,OAAO,KAAK,CAAC;AAAA,QACpC;AAAA,QACA,OAAO,KAAK,QAAQ,aAAa,KAAK,MAAM,IAAI;AAAA,MAClD;AAAA,WACK;AAAA,QACH,OAAO;AAAA,UACL,QAAQ;AAAA,aACL,KAAK;AAAA,QACV;AAAA,WACG;AAAA,WACA;AAAA,QACH,OAAO;AAAA;AAAA;AAAA,EAGb,kBAAkB,CAAC,aAAa,WAAW;AAAA,IACzC,MAAM,OAAO,MAAM,SAAS;AAAA,IAC5B,IAAI,SAAS,MAAM;AAAA,MACjB,OAAO;AAAA,IACT,EAAO,SAAI,SAAS,GAAG;AAAA,MACrB,MAAM,QAAQ,IAAI,MAAM,uCAAuC;AAAA,MAC/D,MAAM,OAAO;AAAA,MACb,MAAM;AAAA,IACR;AAAA,IACA,QAAQ,UAAU,OAAO,OAAO,IAAI,cAAc,IAAI,IAAI,KAAK,cAAc,aAAa,OAAO,IAAI;AAAA,IACrG,OAAO,SAAS,OAAO,OAAO,IAAI,KAAK,cAAc,KAAK,cAAc,aAAa,MAAM,IAAI;AAAA,IAC/F,OAAO,EAAE,OAAO,MAAM,KAAK;AAAA;AAAA,EAE7B,aAAa,CAAC,aAAa,aAAa,MAAM;AAAA,IAC5C,IAAI,kBAAkB;AAAA,IACtB,IAAI,kBAAkB,GAAG;AAAA,MACvB,mBAAmB;AAAA,MACnB,IAAI,kBAAkB,GAAG;AAAA,QACvB,kBAAkB,OAAO,IAAI,KAAK;AAAA,MACpC;AAAA,IACF,EAAO,SAAI,mBAAmB,aAAa;AAAA,MACzC,kBAAkB,OAAO,IAAI,cAAc,IAAI;AAAA,IACjD;AAAA,IACA,OAAO;AAAA;AAAA,EAET,KAAK,CAAC,YAAY,OAAO,KAAK,MAAM;AAAA,IAClC,MAAM,SAAS,CAAC;AAAA,IAChB,IAAI,OAAO,GAAG;AAAA,MACZ,SAAS,IAAI,MAAO,IAAI,KAAK,KAAK,MAAM;AAAA,QACtC,OAAO,KAAK,WAAW,EAAE;AAAA,MAC3B;AAAA,IACF,EAAO;AAAA,MACL,SAAS,IAAI,MAAO,IAAI,KAAK,KAAK,MAAM;AAAA,QACtC,OAAO,KAAK,WAAW,EAAE;AAAA,MAC3B;AAAA;AAAA,IAEF,OAAO;AAAA;AAEX;AACA,IAAI,0BAA0B,IAAI;AAClC,IAAI,0BAA0B;AA2C9B,SAAS,MAAM,CAAC,MAAM,YAAY,SAAS;AAAA,EACzC,MAAM,WAAW,eAAe,MAAM,YAAY,OAAO;AAAA,EACzD,OAAO,wBAAwB,OAAO,UAAU,IAAI;AAAA;;;ACtgEtD;AAAA,IAAI,YAAW,OAAO;AACtB,IAAI,aAAY,OAAO;AACvB,IAAI,mBAAmB,OAAO;AAC9B,IAAI,qBAAoB,OAAO;AAC/B,IAAI,gBAAe,OAAO;AAC1B,IAAI,gBAAe,OAAO,UAAU;AACpC,IAAI,gBAAgB,CAAC,IAAI,SAAQ,OAAO,SAAQ,IAAI,OAAM,EAAE,SAAS,CAAC,EAAE,GAAG,SAAS,IAAG,GAAG,KAAK,OAAO,KAAI;AAC1G,IAAI,cAAc,CAAC,IAAI,MAAM,QAAQ,SAAS;AAAA,EAC7C,IAAI,QAAQ,OAAO,SAAS,YAAY,OAAO,SAAS;AAAA,IAAY,SAAS,OAAO,mBAAkB,IAAI,GAAG,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAK,IAAI,GAAG,KAAK;AAAA,MACrJ,MAAM,KAAK;AAAA,MACX,IAAI,CAAC,cAAa,KAAK,IAAI,GAAG,KAAK,QAAQ;AAAA,QAAQ,WAAU,IAAI,KAAK;AAAA,UACrE,MAAM,CAAC,MAAM,KAAK,IAAI,KAAK,MAAM,GAAG;AAAA,UACpC,YAAY,EAAE,OAAO,iBAAiB,MAAM,GAAG,MAAM,KAAK;AAAA,QAC3D,CAAC;AAAA,IACF;AAAA,EACA,OAAO;AAAA;AAER,IAAI,WAAU,CAAC,MAAK,YAAY,YAAY,SAAS,QAAO,OAAO,UAAS,cAAa,IAAG,CAAC,IAAI,CAAC,GAAG,YAAY,cAAc,CAAC,QAAO,CAAC,KAAI,aAAa,WAAU,QAAQ,WAAW;AAAA,EACrL,OAAO;AAAA,EACP,YAAY;AACb,CAAC,IAAI,QAAQ,IAAG;AAGhB,IAAI,iCAAiC,cAAe,CAAC,SAAS,WAAW;AAAA,EACxE,SAAS,SAAS,CAAC,SAAS;AAAA,IAC3B,OAAO,OAAO,YAAY,eAAe,YAAY;AAAA;AAAA,EAEtD,SAAS,SAAQ,CAAC,SAAS;AAAA,IAC1B,OAAO,OAAO,YAAY,YAAY,YAAY;AAAA;AAAA,EAEnD,SAAS,OAAO,CAAC,UAAU;AAAA,IAC1B,IAAI,MAAM,QAAQ,QAAQ;AAAA,MAAG,OAAO;AAAA,IAC/B,SAAI,UAAU,QAAQ;AAAA,MAAG,OAAO,CAAC;AAAA,IACtC,OAAO,CAAC,QAAQ;AAAA;AAAA,EAEjB,SAAS,MAAM,CAAC,QAAQ,QAAQ;AAAA,IAC/B,IAAI,QAAQ;AAAA,MACX,MAAM,aAAa,OAAO,KAAK,MAAM;AAAA,MACrC,SAAS,QAAQ,GAAG,SAAS,WAAW,OAAQ,QAAQ,QAAQ,SAAS,GAAG;AAAA,QAC3E,MAAM,MAAM,WAAW;AAAA,QACvB,OAAO,OAAO,OAAO;AAAA,MACtB;AAAA,IACD;AAAA,IACA,OAAO;AAAA;AAAA,EAER,SAAS,MAAM,CAAC,QAAQ,OAAO;AAAA,IAC9B,IAAI,SAAS;AAAA,IACb,SAAS,QAAQ,EAAG,QAAQ,OAAO,SAAS;AAAA,MAAG,UAAU;AAAA,IACzD,OAAO;AAAA;AAAA,EAER,SAAS,cAAc,CAAC,QAAQ;AAAA,IAC/B,OAAO,WAAW,KAAK,OAAO,sBAAsB,IAAI;AAAA;AAAA,EAEzD,OAAO,QAAQ,YAAY;AAAA,EAC3B,OAAO,QAAQ,WAAW;AAAA,EAC1B,OAAO,QAAQ,UAAU;AAAA,EACzB,OAAO,QAAQ,SAAS;AAAA,EACxB,OAAO,QAAQ,iBAAiB;AAAA,EAChC,OAAO,QAAQ,SAAS;AAAA,CACvB;AAGF,IAAI,oCAAoC,cAAe,CAAC,SAAS,WAAW;AAAA,EAC3E,SAAS,WAAW,CAAC,WAAW,SAAS;AAAA,IACxC,IAAI,QAAQ;AAAA,IACZ,MAAM,UAAU,UAAU,UAAU;AAAA,IACpC,IAAI,CAAC,UAAU;AAAA,MAAM,OAAO;AAAA,IAC5B,IAAI,UAAU,KAAK;AAAA,MAAM,SAAS,SAAU,UAAU,KAAK,OAAO;AAAA,IAClE,SAAS,OAAO,UAAU,KAAK,OAAO,KAAK,OAAO,UAAU,KAAK,SAAS,KAAK;AAAA,IAC/E,IAAI,CAAC,WAAW,UAAU,KAAK;AAAA,MAAS,SAAS;AAAA;AAAA,IAAS,UAAU,KAAK;AAAA,IACzE,OAAO,UAAU,MAAM;AAAA;AAAA,EAExB,SAAS,aAAa,CAAC,QAAQ,MAAM;AAAA,IACpC,MAAM,KAAK,IAAI;AAAA,IACf,KAAK,OAAO;AAAA,IACZ,KAAK,SAAS;AAAA,IACd,KAAK,OAAO;AAAA,IACZ,KAAK,UAAU,YAAY,MAAM,KAAK;AAAA,IACtC,IAAI,MAAM;AAAA,MAAmB,MAAM,kBAAkB,MAAM,KAAK,WAAW;AAAA,IACtE;AAAA,WAAK,yBAAyB,IAAI,MAAM,GAAG,SAAS;AAAA;AAAA,EAE1D,cAAc,YAAY,OAAO,OAAO,MAAM,SAAS;AAAA,EACvD,cAAc,UAAU,cAAc;AAAA,EACtC,cAAc,UAAU,WAAW,SAAS,QAAQ,CAAC,SAAS;AAAA,IAC7D,OAAO,KAAK,OAAO,OAAO,YAAY,MAAM,OAAO;AAAA;AAAA,EAEpD,OAAO,UAAU;AAAA,CAChB;AAGF,IAAI,kCAAkC,cAAe,CAAC,SAAS,WAAW;AAAA,EACzE,IAAI,SAAS,eAAe;AAAA,EAC5B,SAAS,OAAO,CAAC,QAAQ,WAAW,SAAS,UAAU,eAAe;AAAA,IACrE,IAAI,OAAO;AAAA,IACX,IAAI,OAAO;AAAA,IACX,MAAM,gBAAgB,KAAK,MAAM,gBAAgB,CAAC,IAAI;AAAA,IACtD,IAAI,WAAW,YAAY,eAAe;AAAA,MACzC,OAAO;AAAA,MACP,YAAY,WAAW,gBAAgB,KAAK;AAAA,IAC7C;AAAA,IACA,IAAI,UAAU,WAAW,eAAe;AAAA,MACvC,OAAO;AAAA,MACP,UAAU,WAAW,gBAAgB,KAAK;AAAA,IAC3C;AAAA,IACA,OAAO;AAAA,MACN,KAAK,OAAO,OAAO,MAAM,WAAW,OAAO,EAAE,QAAQ,OAAO,GAAE,IAAI;AAAA,MAClE,KAAK,WAAW,YAAY,KAAK;AAAA,IAClC;AAAA;AAAA,EAED,SAAS,QAAQ,CAAC,QAAQ,KAAK;AAAA,IAC9B,OAAO,OAAO,OAAO,KAAK,MAAM,OAAO,MAAM,IAAI;AAAA;AAAA,EAElD,SAAS,WAAW,CAAC,MAAM,SAAS;AAAA,IACnC,UAAU,OAAO,OAAO,WAAW,IAAI;AAAA,IACvC,IAAI,CAAC,KAAK;AAAA,MAAQ,OAAO;AAAA,IACzB,IAAI,CAAC,QAAQ;AAAA,MAAW,QAAQ,YAAY;AAAA,IAC5C,IAAI,OAAO,QAAQ,WAAW;AAAA,MAAU,QAAQ,SAAS;AAAA,IACzD,IAAI,OAAO,QAAQ,gBAAgB;AAAA,MAAU,QAAQ,cAAc;AAAA,IACnE,IAAI,OAAO,QAAQ,eAAe;AAAA,MAAU,QAAQ,aAAa;AAAA,IACjE,MAAM,KAAK;AAAA,IACX,MAAM,aAAa,CAAC,CAAC;AAAA,IACrB,MAAM,WAAW,CAAC;AAAA,IAClB,IAAI;AAAA,IACJ,IAAI,cAAc;AAAA,IAClB,OAAO,QAAQ,GAAG,KAAK,KAAK,MAAM,GAAG;AAAA,MACpC,SAAS,KAAK,MAAM,KAAK;AAAA,MACzB,WAAW,KAAK,MAAM,QAAQ,MAAM,GAAG,MAAM;AAAA,MAC7C,IAAI,KAAK,YAAY,MAAM,SAAS,cAAc;AAAA,QAAG,cAAc,WAAW,SAAS;AAAA,IACxF;AAAA,IACA,IAAI,cAAc;AAAA,MAAG,cAAc,WAAW,SAAS;AAAA,IACvD,IAAI,SAAS;AAAA,IACb,MAAM,eAAe,KAAK,IAAI,KAAK,OAAO,QAAQ,YAAY,SAAS,MAAM,EAAE,SAAS,EAAE;AAAA,IAC1F,MAAM,gBAAgB,QAAQ,aAAa,QAAQ,SAAS,eAAe;AAAA,IAC3E,SAAS,IAAI,EAAG,KAAK,QAAQ,aAAa,KAAK;AAAA,MAC9C,IAAI,cAAc,IAAI;AAAA,QAAG;AAAA,MACzB,MAAM,QAAO,QAAQ,KAAK,QAAQ,WAAW,cAAc,IAAI,SAAS,cAAc,IAAI,KAAK,YAAY,WAAW,eAAe,WAAW,cAAc,KAAK,aAAa;AAAA,MAChL,SAAS,OAAO,OAAO,KAAK,QAAQ,MAAM,IAAI,UAAU,KAAK,OAAO,IAAI,GAAG,SAAS,GAAG,YAAY,IAAI,QAAQ,MAAK,MAAM;AAAA,IAAO;AAAA,IAClI;AAAA,IACA,MAAM,OAAO,QAAQ,KAAK,QAAQ,WAAW,cAAc,SAAS,cAAc,KAAK,UAAU,aAAa;AAAA,IAC9G,UAAU,OAAO,OAAO,KAAK,QAAQ,MAAM,IAAI,UAAU,KAAK,OAAO,GAAG,SAAS,GAAG,YAAY,IAAI,QAAQ,KAAK,MAAM;AAAA;AAAA,IACvH,UAAU,OAAO,OAAO,KAAK,QAAQ,SAAS,eAAe,IAAI,KAAK,GAAG,IAAI;AAAA;AAAA,IAC7E,SAAS,IAAI,EAAG,KAAK,QAAQ,YAAY,KAAK;AAAA,MAC7C,IAAI,cAAc,KAAK,SAAS;AAAA,QAAQ;AAAA,MACxC,MAAM,QAAO,QAAQ,KAAK,QAAQ,WAAW,cAAc,IAAI,SAAS,cAAc,IAAI,KAAK,YAAY,WAAW,eAAe,WAAW,cAAc,KAAK,aAAa;AAAA,MAChL,UAAU,OAAO,OAAO,KAAK,QAAQ,MAAM,IAAI,UAAU,KAAK,OAAO,IAAI,GAAG,SAAS,GAAG,YAAY,IAAI,QAAQ,MAAK,MAAM;AAAA;AAAA,IAC5H;AAAA,IACA,OAAO,OAAO,QAAQ,OAAO,EAAE;AAAA;AAAA,EAEhC,OAAO,UAAU;AAAA,CAChB;AAGF,IAAI,+BAA+B,cAAe,CAAC,SAAS,WAAW;AAAA,EACtE,IAAI,gBAAgB,kBAAkB;AAAA,EACtC,IAAI,2BAA2B;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,IAAI,kBAAkB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,SAAS,mBAAmB,CAAC,KAAK;AAAA,IACjC,MAAM,SAAS,CAAC;AAAA,IAChB,IAAI,QAAQ;AAAA,MAAM,OAAO,KAAK,GAAG,EAAE,QAAQ,QAAQ,CAAC,OAAO;AAAA,QAC1D,IAAI,OAAO,QAAQ,QAAQ,CAAC,OAAO;AAAA,UAClC,OAAO,OAAO,KAAK,KAAK;AAAA,SACxB;AAAA,OACD;AAAA,IACD,OAAO;AAAA;AAAA,EAER,SAAS,IAAI,CAAC,KAAK,SAAS;AAAA,IAC3B,UAAU,WAAW,CAAC;AAAA,IACtB,OAAO,KAAK,OAAO,EAAE,QAAQ,QAAQ,CAAC,MAAM;AAAA,MAC3C,IAAI,yBAAyB,QAAQ,IAAI,MAAM;AAAA,QAAI,MAAM,IAAI,cAAc,qBAAsB,OAAO,gCAAkC,MAAM,cAAe;AAAA,KAC/J;AAAA,IACD,KAAK,UAAU;AAAA,IACf,KAAK,MAAM;AAAA,IACX,KAAK,OAAO,QAAQ,WAAW;AAAA,IAC/B,KAAK,UAAU,QAAQ,cAAc,QAAQ,GAAG;AAAA,MAC/C,OAAO;AAAA;AAAA,IAER,KAAK,YAAY,QAAQ,gBAAgB,QAAQ,CAAC,MAAM;AAAA,MACvD,OAAO;AAAA;AAAA,IAER,KAAK,aAAa,QAAQ,iBAAiB;AAAA,IAC3C,KAAK,YAAY,QAAQ,gBAAgB;AAAA,IACzC,KAAK,YAAY,QAAQ,gBAAgB;AAAA,IACzC,KAAK,gBAAgB,QAAQ,oBAAoB;AAAA,IACjD,KAAK,eAAe,QAAQ,mBAAmB;AAAA,IAC/C,KAAK,QAAQ,QAAQ,YAAY;AAAA,IACjC,KAAK,eAAe,oBAAoB,QAAQ,mBAAmB,IAAI;AAAA,IACvE,IAAI,gBAAgB,QAAQ,KAAK,IAAI,MAAM;AAAA,MAAI,MAAM,IAAI,cAAc,mBAAoB,KAAK,OAAO,yBAA2B,MAAM,cAAe;AAAA;AAAA,EAExJ,OAAO,UAAU;AAAA,CAChB;AAGF,IAAI,iCAAiC,cAAe,CAAC,SAAS,WAAW;AAAA,EACxE,IAAI,gBAAgB,kBAAkB;AAAA,EACtC,IAAI,OAAO,aAAa;AAAA,EACxB,SAAS,WAAW,CAAC,QAAQ,MAAM;AAAA,IAClC,MAAM,SAAS,CAAC;AAAA,IAChB,OAAO,MAAM,QAAQ,QAAQ,CAAC,aAAa;AAAA,MAC1C,IAAI,WAAW,OAAO;AAAA,MACtB,OAAO,QAAQ,QAAQ,CAAC,cAAc,eAAe;AAAA,QACpD,IAAI,aAAa,QAAQ,YAAY,OAAO,aAAa,SAAS,YAAY,QAAQ,aAAa,UAAU,YAAY;AAAA,UAAO,WAAW;AAAA,OAC3I;AAAA,MACD,OAAO,YAAY;AAAA,KACnB;AAAA,IACD,OAAO;AAAA;AAAA,EAER,SAAS,UAAU,GAAG;AAAA,IACrB,MAAM,SAAS;AAAA,MACd,QAAQ,CAAC;AAAA,MACT,UAAU,CAAC;AAAA,MACX,SAAS,CAAC;AAAA,MACV,UAAU,CAAC;AAAA,MACX,OAAO;AAAA,QACN,QAAQ,CAAC;AAAA,QACT,UAAU,CAAC;AAAA,QACX,SAAS,CAAC;AAAA,QACV,UAAU,CAAC;AAAA,MACZ;AAAA,IACD;AAAA,IACA,SAAS,WAAW,CAAC,MAAM;AAAA,MAC1B,IAAI,KAAK,OAAO;AAAA,QACf,OAAO,MAAM,KAAK,MAAM,KAAK,IAAI;AAAA,QACjC,OAAO,MAAM,YAAY,KAAK,IAAI;AAAA,MACnC,EAAO;AAAA,eAAO,KAAK,MAAM,KAAK,OAAO,OAAO,YAAY,KAAK,OAAO;AAAA;AAAA,IAErE,SAAS,QAAQ,GAAG,SAAS,UAAU,OAAQ,QAAQ,QAAQ,SAAS;AAAA,MAAG,UAAU,OAAO,QAAQ,WAAW;AAAA,IAC/G,OAAO;AAAA;AAAA,EAER,SAAS,MAAM,CAAC,YAAY;AAAA,IAC3B,OAAO,KAAK,OAAO,UAAU;AAAA;AAAA,EAE9B,OAAO,UAAU,SAAS,SAAS,MAAM,CAAC,YAAY;AAAA,IACrD,IAAI,WAAW,CAAC;AAAA,IAChB,IAAI,WAAW,CAAC;AAAA,IAChB,IAAI,sBAAsB;AAAA,MAAM,SAAS,KAAK,UAAU;AAAA,IACnD,SAAI,MAAM,QAAQ,UAAU;AAAA,MAAG,WAAW,SAAS,OAAO,UAAU;AAAA,IACpE,SAAI,eAAe,MAAM,QAAQ,WAAW,QAAQ,KAAK,MAAM,QAAQ,WAAW,QAAQ,IAAI;AAAA,MAClG,IAAI,WAAW;AAAA,QAAU,WAAW,SAAS,OAAO,WAAW,QAAQ;AAAA,MACvE,IAAI,WAAW;AAAA,QAAU,WAAW,SAAS,OAAO,WAAW,QAAQ;AAAA,IACxE,EAAO;AAAA,YAAM,IAAI,cAAc,kHAAkH;AAAA,IACjJ,SAAS,QAAQ,QAAQ,CAAC,MAAM;AAAA,MAC/B,IAAI,EAAE,gBAAgB;AAAA,QAAO,MAAM,IAAI,cAAc,oFAAoF;AAAA,MACzI,IAAI,KAAK,YAAY,KAAK,aAAa;AAAA,QAAU,MAAM,IAAI,cAAc,iHAAiH;AAAA,MAC1L,IAAI,KAAK;AAAA,QAAO,MAAM,IAAI,cAAc,oGAAoG;AAAA,KAC5I;AAAA,IACD,SAAS,QAAQ,QAAQ,CAAC,MAAM;AAAA,MAC/B,IAAI,EAAE,gBAAgB;AAAA,QAAO,MAAM,IAAI,cAAc,oFAAoF;AAAA,KACzI;AAAA,IACD,MAAM,SAAS,OAAO,OAAO,OAAO,SAAS;AAAA,IAC7C,OAAO,YAAY,KAAK,YAAY,CAAC,GAAG,OAAO,QAAQ;AAAA,IACvD,OAAO,YAAY,KAAK,YAAY,CAAC,GAAG,OAAO,QAAQ;AAAA,IACvD,OAAO,mBAAmB,YAAY,QAAQ,UAAU;AAAA,IACxD,OAAO,mBAAmB,YAAY,QAAQ,UAAU;AAAA,IACxD,OAAO,kBAAkB,WAAW,OAAO,kBAAkB,OAAO,gBAAgB;AAAA,IACpF,OAAO;AAAA;AAAA,EAER,OAAO,UAAU;AAAA,CAChB;AAGF,IAAI,8BAA8B,cAAe,CAAC,SAAS,WAAW;AAAA,EACrE,OAAO,UAAU,KAAK,aAAa,GAAG,yBAAyB;AAAA,IAC9D,MAAM;AAAA,IACN,WAAW,QAAQ,CAAC,MAAM;AAAA,MACzB,OAAO,SAAS,OAAO,OAAO;AAAA;AAAA,EAEhC,CAAC;AAAA,CACA;AAGF,IAAI,8BAA8B,cAAe,CAAC,SAAS,WAAW;AAAA,EACrE,OAAO,UAAU,KAAK,aAAa,GAAG,yBAAyB;AAAA,IAC9D,MAAM;AAAA,IACN,WAAW,QAAQ,CAAC,MAAM;AAAA,MACzB,OAAO,SAAS,OAAO,OAAO,CAAC;AAAA;AAAA,EAEjC,CAAC;AAAA,CACA;AAGF,IAAI,8BAA8B,cAAe,CAAC,SAAS,WAAW;AAAA,EACrE,OAAO,UAAU,KAAK,aAAa,GAAG,yBAAyB;AAAA,IAC9D,MAAM;AAAA,IACN,WAAW,QAAQ,CAAC,MAAM;AAAA,MACzB,OAAO,SAAS,OAAO,OAAO,CAAC;AAAA;AAAA,EAEjC,CAAC;AAAA,CACA;AAGF,IAAI,mCAAmC,cAAe,CAAC,SAAS,WAAW;AAAA,EAC1E,OAAO,UAAU,KAAK,eAAe,GAAG,EAAE,UAAU;AAAA,IACnD,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,YAAY;AAAA,EACb,EAAE,CAAC;AAAA,CACF;AAGF,IAAI,+BAA+B,cAAe,CAAC,SAAS,WAAW;AAAA,EACtE,IAAI,OAAO,aAAa;AAAA,EACxB,SAAS,eAAe,CAAC,MAAM;AAAA,IAC9B,IAAI,SAAS;AAAA,MAAM,OAAO;AAAA,IAC1B,MAAM,MAAM,KAAK;AAAA,IACjB,OAAO,QAAQ,KAAK,SAAS,OAAO,QAAQ,MAAM,SAAS,UAAU,SAAS,UAAU,SAAS;AAAA;AAAA,EAElG,SAAS,iBAAiB,GAAG;AAAA,IAC5B,OAAO;AAAA;AAAA,EAER,SAAS,MAAM,CAAC,QAAQ;AAAA,IACvB,OAAO,WAAW;AAAA;AAAA,EAEnB,OAAO,UAAU,IAAI,KAAK,0BAA0B;AAAA,IACnD,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,MACV,WAAW,QAAQ,GAAG;AAAA,QACrB,OAAO;AAAA;AAAA,MAER,WAAW,QAAQ,GAAG;AAAA,QACrB,OAAO;AAAA;AAAA,MAER,WAAW,QAAQ,GAAG;AAAA,QACrB,OAAO;AAAA;AAAA,MAER,WAAW,QAAQ,GAAG;AAAA,QACrB,OAAO;AAAA;AAAA,MAER,OAAO,QAAQ,GAAG;AAAA,QACjB,OAAO;AAAA;AAAA,IAET;AAAA,IACA,cAAc;AAAA,EACf,CAAC;AAAA,CACA;AAGF,IAAI,+BAA+B,cAAe,CAAC,SAAS,WAAW;AAAA,EACtE,IAAI,OAAO,aAAa;AAAA,EACxB,SAAS,kBAAkB,CAAC,MAAM;AAAA,IACjC,IAAI,SAAS;AAAA,MAAM,OAAO;AAAA,IAC1B,MAAM,MAAM,KAAK;AAAA,IACjB,OAAO,QAAQ,MAAM,SAAS,UAAU,SAAS,UAAU,SAAS,WAAW,QAAQ,MAAM,SAAS,WAAW,SAAS,WAAW,SAAS;AAAA;AAAA,EAE/I,SAAS,oBAAoB,CAAC,MAAM;AAAA,IACnC,OAAO,SAAS,UAAU,SAAS,UAAU,SAAS;AAAA;AAAA,EAEvD,SAAS,SAAS,CAAC,QAAQ;AAAA,IAC1B,OAAO,OAAO,UAAU,SAAS,KAAK,MAAM,MAAM;AAAA;AAAA,EAEnD,OAAO,UAAU,IAAI,KAAK,0BAA0B;AAAA,IACnD,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,MACV,WAAW,QAAQ,CAAC,QAAQ;AAAA,QAC3B,OAAO,SAAS,SAAS;AAAA;AAAA,MAE1B,WAAW,QAAQ,CAAC,QAAQ;AAAA,QAC3B,OAAO,SAAS,SAAS;AAAA;AAAA,MAE1B,WAAW,QAAQ,CAAC,QAAQ;AAAA,QAC3B,OAAO,SAAS,SAAS;AAAA;AAAA,IAE3B;AAAA,IACA,cAAc;AAAA,EACf,CAAC;AAAA,CACA;AAGF,IAAI,8BAA8B,cAAe,CAAC,SAAS,WAAW;AAAA,EACrE,IAAI,SAAS,eAAe;AAAA,EAC5B,IAAI,OAAO,aAAa;AAAA,EACxB,SAAS,SAAS,CAAC,GAAG;AAAA,IACrB,OAAO,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK;AAAA;AAAA,EAEpE,SAAS,SAAS,CAAC,GAAG;AAAA,IACrB,OAAO,KAAK,MAAM,KAAK;AAAA;AAAA,EAExB,SAAS,SAAS,CAAC,GAAG;AAAA,IACrB,OAAO,KAAK,MAAM,KAAK;AAAA;AAAA,EAExB,SAAS,kBAAkB,CAAC,MAAM;AAAA,IACjC,IAAI,SAAS;AAAA,MAAM,OAAO;AAAA,IAC1B,MAAM,MAAM,KAAK;AAAA,IACjB,IAAI,QAAQ;AAAA,IACZ,IAAI,YAAY;AAAA,IAChB,IAAI,CAAC;AAAA,MAAK,OAAO;AAAA,IACjB,IAAI,KAAK,KAAK;AAAA,IACd,IAAI,OAAO,OAAO,OAAO;AAAA,MAAK,KAAK,KAAK,EAAE;AAAA,IAC1C,IAAI,OAAO,KAAK;AAAA,MACf,IAAI,QAAQ,MAAM;AAAA,QAAK,OAAO;AAAA,MAC9B,KAAK,KAAK,EAAE;AAAA,MACZ,IAAI,OAAO,KAAK;AAAA,QACf;AAAA,QACA,MAAO,QAAQ,KAAK,SAAS;AAAA,UAC5B,KAAK,KAAK;AAAA,UACV,IAAI,OAAO,OAAO,OAAO;AAAA,YAAK,OAAO;AAAA,UACrC,YAAY;AAAA,QACb;AAAA,QACA,OAAO,aAAa,OAAO,SAAS,iBAAiB,IAAI,CAAC;AAAA,MAC3D;AAAA,MACA,IAAI,OAAO,KAAK;AAAA,QACf;AAAA,QACA,MAAO,QAAQ,KAAK,SAAS;AAAA,UAC5B,IAAI,CAAC,UAAU,KAAK,WAAW,KAAK,CAAC;AAAA,YAAG,OAAO;AAAA,UAC/C,YAAY;AAAA,QACb;AAAA,QACA,OAAO,aAAa,OAAO,SAAS,iBAAiB,IAAI,CAAC;AAAA,MAC3D;AAAA,MACA,IAAI,OAAO,KAAK;AAAA,QACf;AAAA,QACA,MAAO,QAAQ,KAAK,SAAS;AAAA,UAC5B,IAAI,CAAC,UAAU,KAAK,WAAW,KAAK,CAAC;AAAA,YAAG,OAAO;AAAA,UAC/C,YAAY;AAAA,QACb;AAAA,QACA,OAAO,aAAa,OAAO,SAAS,iBAAiB,IAAI,CAAC;AAAA,MAC3D;AAAA,IACD;AAAA,IACA,MAAO,QAAQ,KAAK,SAAS;AAAA,MAC5B,IAAI,CAAC,UAAU,KAAK,WAAW,KAAK,CAAC;AAAA,QAAG,OAAO;AAAA,MAC/C,YAAY;AAAA,IACb;AAAA,IACA,IAAI,CAAC;AAAA,MAAW,OAAO;AAAA,IACvB,OAAO,OAAO,SAAS,iBAAiB,IAAI,CAAC;AAAA;AAAA,EAE9C,SAAS,gBAAgB,CAAC,MAAM;AAAA,IAC/B,IAAI,QAAQ;AAAA,IACZ,IAAI,OAAO;AAAA,IACX,IAAI,KAAK,MAAM;AAAA,IACf,IAAI,OAAO,OAAO,OAAO,KAAK;AAAA,MAC7B,IAAI,OAAO;AAAA,QAAK,OAAO;AAAA,MACvB,QAAQ,MAAM,MAAM,CAAC;AAAA,MACrB,KAAK,MAAM;AAAA,IACZ;AAAA,IACA,IAAI,UAAU;AAAA,MAAK,OAAO;AAAA,IAC1B,IAAI,OAAO,KAAK;AAAA,MACf,IAAI,MAAM,OAAO;AAAA,QAAK,OAAO,OAAO,SAAS,MAAM,MAAM,CAAC,GAAG,CAAC;AAAA,MAC9D,IAAI,MAAM,OAAO;AAAA,QAAK,OAAO,OAAO,SAAS,MAAM,MAAM,CAAC,GAAG,EAAE;AAAA,MAC/D,IAAI,MAAM,OAAO;AAAA,QAAK,OAAO,OAAO,SAAS,MAAM,MAAM,CAAC,GAAG,CAAC;AAAA,IAC/D;AAAA,IACA,OAAO,OAAO,SAAS,OAAO,EAAE;AAAA;AAAA,EAEjC,SAAS,oBAAoB,CAAC,MAAM;AAAA,IACnC,OAAO,iBAAiB,IAAI;AAAA;AAAA,EAE7B,SAAS,SAAS,CAAC,QAAQ;AAAA,IAC1B,OAAO,OAAO,UAAU,SAAS,KAAK,MAAM,MAAM,qBAAqB,SAAS,MAAM,KAAK,CAAC,OAAO,eAAe,MAAM;AAAA;AAAA,EAEzH,OAAO,UAAU,IAAI,KAAK,yBAAyB;AAAA,IAClD,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,MACV,QAAQ,QAAQ,CAAC,KAAK;AAAA,QACrB,OAAO,OAAO,IAAI,OAAO,IAAI,SAAS,CAAC,IAAI,QAAQ,IAAI,SAAS,CAAC,EAAE,MAAM,CAAC;AAAA;AAAA,MAE3E,OAAO,QAAQ,CAAC,KAAK;AAAA,QACpB,OAAO,OAAO,IAAI,OAAO,IAAI,SAAS,CAAC,IAAI,QAAQ,IAAI,SAAS,CAAC,EAAE,MAAM,CAAC;AAAA;AAAA,MAE3E,SAAS,QAAQ,CAAC,KAAK;AAAA,QACtB,OAAO,IAAI,SAAS,EAAE;AAAA;AAAA,MAEvB,aAAa,QAAQ,CAAC,KAAK;AAAA,QAC1B,OAAO,OAAO,IAAI,OAAO,IAAI,SAAS,EAAE,EAAE,YAAY,IAAI,QAAQ,IAAI,SAAS,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC;AAAA;AAAA,IAE1G;AAAA,IACA,cAAc;AAAA,IACd,cAAc;AAAA,MACb,QAAQ,CAAC,GAAG,KAAK;AAAA,MACjB,OAAO,CAAC,GAAG,KAAK;AAAA,MAChB,SAAS,CAAC,IAAI,KAAK;AAAA,MACnB,aAAa,CAAC,IAAI,KAAK;AAAA,IACxB;AAAA,EACD,CAAC;AAAA,CACA;AAGF,IAAI,gCAAgC,cAAe,CAAC,SAAS,WAAW;AAAA,EACvE,IAAI,SAAS,eAAe;AAAA,EAC5B,IAAI,OAAO,aAAa;AAAA,EACxB,IAAI,qCAAqC,IAAI,OAAO,kIAAkI;AAAA,EACtL,IAAI,6CAA6C,IAAI,OAAO,kDAAkD;AAAA,EAC9G,SAAS,gBAAgB,CAAC,MAAM;AAAA,IAC/B,IAAI,SAAS;AAAA,MAAM,OAAO;AAAA,IAC1B,IAAI,CAAC,mBAAmB,KAAK,IAAI;AAAA,MAAG,OAAO;AAAA,IAC3C,IAAI,OAAO,SAAS,WAAW,MAAM,EAAE,CAAC;AAAA,MAAG,OAAO;AAAA,IAClD,OAAO,2BAA2B,KAAK,IAAI;AAAA;AAAA,EAE5C,SAAS,kBAAkB,CAAC,MAAM;AAAA,IACjC,IAAI,QAAQ,KAAK,YAAY;AAAA,IAC7B,MAAM,OAAO,MAAM,OAAO,MAAM,KAAK;AAAA,IACrC,IAAI,KAAK,QAAQ,MAAM,EAAE,KAAK;AAAA,MAAG,QAAQ,MAAM,MAAM,CAAC;AAAA,IACtD,IAAI,UAAU;AAAA,MAAQ,OAAO,SAAS,IAAI,OAAO,oBAAoB,OAAO;AAAA,IACvE,SAAI,UAAU;AAAA,MAAQ,OAAO;AAAA,IAClC,OAAO,OAAO,WAAW,OAAO,EAAE;AAAA;AAAA,EAEnC,IAAI,yBAAyB;AAAA,EAC7B,SAAS,kBAAkB,CAAC,QAAQ,OAAO;AAAA,IAC1C,IAAI,MAAM,MAAM;AAAA,MAAG,QAAQ;AAAA,aACrB;AAAA,UAAa,OAAO;AAAA,aACpB;AAAA,UAAa,OAAO;AAAA,aACpB;AAAA,UAAa,OAAO;AAAA;AAAA,IAErB,SAAI,OAAO,sBAAsB;AAAA,MAAQ,QAAQ;AAAA,aAChD;AAAA,UAAa,OAAO;AAAA,aACpB;AAAA,UAAa,OAAO;AAAA,aACpB;AAAA,UAAa,OAAO;AAAA;AAAA,IAErB,SAAI,OAAO,sBAAsB;AAAA,MAAQ,QAAQ;AAAA,aAChD;AAAA,UAAa,OAAO;AAAA,aACpB;AAAA,UAAa,OAAO;AAAA,aACpB;AAAA,UAAa,OAAO;AAAA;AAAA,IAErB,SAAI,OAAO,eAAe,MAAM;AAAA,MAAG,OAAO;AAAA,IAC/C,MAAM,MAAM,OAAO,SAAS,EAAE;AAAA,IAC9B,OAAO,uBAAuB,KAAK,GAAG,IAAI,IAAI,QAAQ,KAAK,IAAI,IAAI;AAAA;AAAA,EAEpE,SAAS,OAAO,CAAC,QAAQ;AAAA,IACxB,OAAO,OAAO,UAAU,SAAS,KAAK,MAAM,MAAM,sBAAsB,SAAS,MAAM,KAAK,OAAO,eAAe,MAAM;AAAA;AAAA,EAEzH,OAAO,UAAU,IAAI,KAAK,2BAA2B;AAAA,IACpD,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,cAAc;AAAA,EACf,CAAC;AAAA,CACA;AAGF,IAAI,+BAA+B,cAAe,CAAC,SAAS,WAAW;AAAA,EACtE,OAAO,UAAU,iBAAiB,EAAE,OAAO,EAAE,UAAU;AAAA,IACtD,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,cAAc;AAAA,EACf,EAAE,CAAC;AAAA,CACF;AAGF,IAAI,+BAA+B,cAAe,CAAC,SAAS,WAAW;AAAA,EACtE,OAAO,UAAU,aAAa;AAAA,CAC7B;AAGF,IAAI,oCAAoC,cAAe,CAAC,SAAS,WAAW;AAAA,EAC3E,IAAI,OAAO,aAAa;AAAA,EACxB,IAAI,mCAAmC,IAAI,OAAO,oDAAoD;AAAA,EACtG,IAAI,wCAAwC,IAAI,OAAO,kLAAkL;AAAA,EACzO,SAAS,oBAAoB,CAAC,MAAM;AAAA,IACnC,IAAI,SAAS;AAAA,MAAM,OAAO;AAAA,IAC1B,IAAI,iBAAiB,KAAK,IAAI,MAAM;AAAA,MAAM,OAAO;AAAA,IACjD,IAAI,sBAAsB,KAAK,IAAI,MAAM;AAAA,MAAM,OAAO;AAAA,IACtD,OAAO;AAAA;AAAA,EAER,SAAS,sBAAsB,CAAC,MAAM;AAAA,IACrC,IAAI,WAAW;AAAA,IACf,IAAI,QAAQ;AAAA,IACZ,IAAI,QAAQ,iBAAiB,KAAK,IAAI;AAAA,IACtC,IAAI,UAAU;AAAA,MAAM,QAAQ,sBAAsB,KAAK,IAAI;AAAA,IAC3D,IAAI,UAAU;AAAA,MAAM,MAAM,IAAI,MAAM,oBAAoB;AAAA,IACxD,MAAM,OAAO,CAAC,MAAM;AAAA,IACpB,MAAM,QAAQ,CAAC,MAAM,KAAK;AAAA,IAC1B,MAAM,MAAM,CAAC,MAAM;AAAA,IACnB,IAAI,CAAC,MAAM;AAAA,MAAI,OAAO,IAAI,KAAK,KAAK,IAAI,MAAM,OAAO,GAAG,CAAC;AAAA,IACzD,MAAM,OAAO,CAAC,MAAM;AAAA,IACpB,MAAM,SAAS,CAAC,MAAM;AAAA,IACtB,MAAM,SAAS,CAAC,MAAM;AAAA,IACtB,IAAI,MAAM,IAAI;AAAA,MACb,WAAW,MAAM,GAAG,MAAM,GAAG,CAAC;AAAA,MAC9B,OAAO,SAAS,SAAS;AAAA,QAAG,YAAY;AAAA,MACxC,WAAW,CAAC;AAAA,IACb;AAAA,IACA,IAAI,MAAM,IAAI;AAAA,MACb,MAAM,SAAS,CAAC,MAAM;AAAA,MACtB,MAAM,WAAW,EAAE,MAAM,OAAO;AAAA,MAChC,SAAS,SAAS,KAAK,YAAY;AAAA,MACnC,IAAI,MAAM,OAAO;AAAA,QAAK,QAAQ,CAAC;AAAA,IAChC;AAAA,IACA,MAAM,OAAO,IAAI,KAAK,KAAK,IAAI,MAAM,OAAO,KAAK,MAAM,QAAQ,QAAQ,QAAQ,CAAC;AAAA,IAChF,IAAI;AAAA,MAAO,KAAK,QAAQ,KAAK,QAAQ,IAAI,KAAK;AAAA,IAC9C,OAAO;AAAA;AAAA,EAER,SAAS,sBAAsB,CAAC,QAAQ;AAAA,IACvC,OAAO,OAAO,YAAY;AAAA;AAAA,EAE3B,OAAO,UAAU,IAAI,KAAK,+BAA+B;AAAA,IACxD,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,WAAW;AAAA,EACZ,CAAC;AAAA,CACA;AAGF,IAAI,gCAAgC,cAAe,CAAC,SAAS,WAAW;AAAA,EACvE,IAAI,OAAO,aAAa;AAAA,EACxB,SAAS,gBAAgB,CAAC,MAAM;AAAA,IAC/B,OAAO,SAAS,QAAQ,SAAS;AAAA;AAAA,EAElC,OAAO,UAAU,IAAI,KAAK,2BAA2B;AAAA,IACpD,MAAM;AAAA,IACN,SAAS;AAAA,EACV,CAAC;AAAA,CACA;AAGF,IAAI,iCAAiC,cAAe,CAAC,SAAS,WAAW;AAAA,EACxE,IAAI,OAAO,aAAa;AAAA,EACxB,IAAI,aAAa;AAAA;AAAA,EACjB,SAAS,iBAAiB,CAAC,MAAM;AAAA,IAChC,IAAI,SAAS;AAAA,MAAM,OAAO;AAAA,IAC1B,IAAI,SAAS;AAAA,IACb,MAAM,MAAM,KAAK;AAAA,IACjB,MAAM,MAAM;AAAA,IACZ,SAAS,MAAM,EAAG,MAAM,KAAK,OAAO;AAAA,MACnC,MAAM,OAAO,IAAI,QAAQ,KAAK,OAAO,GAAG,CAAC;AAAA,MACzC,IAAI,OAAO;AAAA,QAAI;AAAA,MACf,IAAI,OAAO;AAAA,QAAG,OAAO;AAAA,MACrB,UAAU;AAAA,IACX;AAAA,IACA,OAAO,SAAS,MAAM;AAAA;AAAA,EAEvB,SAAS,mBAAmB,CAAC,MAAM;AAAA,IAClC,MAAM,QAAQ,KAAK,QAAQ,YAAY,EAAE;AAAA,IACzC,MAAM,MAAM,MAAM;AAAA,IAClB,MAAM,MAAM;AAAA,IACZ,IAAI,OAAO;AAAA,IACX,MAAM,SAAS,CAAC;AAAA,IAChB,SAAS,MAAM,EAAG,MAAM,KAAK,OAAO;AAAA,MACnC,IAAI,MAAM,MAAM,KAAK,KAAK;AAAA,QACzB,OAAO,KAAK,QAAQ,KAAK,GAAG;AAAA,QAC5B,OAAO,KAAK,QAAQ,IAAI,GAAG;AAAA,QAC3B,OAAO,KAAK,OAAO,GAAG;AAAA,MACvB;AAAA,MACA,OAAO,QAAQ,IAAI,IAAI,QAAQ,MAAM,OAAO,GAAG,CAAC;AAAA,IACjD;AAAA,IACA,MAAM,WAAW,MAAM,IAAI;AAAA,IAC3B,IAAI,aAAa,GAAG;AAAA,MACnB,OAAO,KAAK,QAAQ,KAAK,GAAG;AAAA,MAC5B,OAAO,KAAK,QAAQ,IAAI,GAAG;AAAA,MAC3B,OAAO,KAAK,OAAO,GAAG;AAAA,IACvB,EAAO,SAAI,aAAa,IAAI;AAAA,MAC3B,OAAO,KAAK,QAAQ,KAAK,GAAG;AAAA,MAC5B,OAAO,KAAK,QAAQ,IAAI,GAAG;AAAA,IAC5B,EAAO,SAAI,aAAa;AAAA,MAAI,OAAO,KAAK,QAAQ,IAAI,GAAG;AAAA,IACvD,OAAO,IAAI,WAAW,MAAM;AAAA;AAAA,EAE7B,SAAS,mBAAmB,CAAC,QAAQ;AAAA,IACpC,IAAI,SAAS;AAAA,IACb,IAAI,OAAO;AAAA,IACX,MAAM,MAAM,OAAO;AAAA,IACnB,MAAM,MAAM;AAAA,IACZ,SAAS,MAAM,EAAG,MAAM,KAAK,OAAO;AAAA,MACnC,IAAI,MAAM,MAAM,KAAK,KAAK;AAAA,QACzB,UAAU,IAAI,QAAQ,KAAK;AAAA,QAC3B,UAAU,IAAI,QAAQ,KAAK;AAAA,QAC3B,UAAU,IAAI,QAAQ,IAAI;AAAA,QAC1B,UAAU,IAAI,OAAO;AAAA,MACtB;AAAA,MACA,QAAQ,QAAQ,KAAK,OAAO;AAAA,IAC7B;AAAA,IACA,MAAM,OAAO,MAAM;AAAA,IACnB,IAAI,SAAS,GAAG;AAAA,MACf,UAAU,IAAI,QAAQ,KAAK;AAAA,MAC3B,UAAU,IAAI,QAAQ,KAAK;AAAA,MAC3B,UAAU,IAAI,QAAQ,IAAI;AAAA,MAC1B,UAAU,IAAI,OAAO;AAAA,IACtB,EAAO,SAAI,SAAS,GAAG;AAAA,MACtB,UAAU,IAAI,QAAQ,KAAK;AAAA,MAC3B,UAAU,IAAI,QAAQ,IAAI;AAAA,MAC1B,UAAU,IAAI,QAAQ,IAAI;AAAA,MAC1B,UAAU,IAAI;AAAA,IACf,EAAO,SAAI,SAAS,GAAG;AAAA,MACtB,UAAU,IAAI,QAAQ,IAAI;AAAA,MAC1B,UAAU,IAAI,QAAQ,IAAI;AAAA,MAC1B,UAAU,IAAI;AAAA,MACd,UAAU,IAAI;AAAA,IACf;AAAA,IACA,OAAO;AAAA;AAAA,EAER,SAAS,QAAQ,CAAC,KAAK;AAAA,IACtB,OAAO,OAAO,UAAU,SAAS,KAAK,GAAG,MAAM;AAAA;AAAA,EAEhD,OAAO,UAAU,IAAI,KAAK,4BAA4B;AAAA,IACrD,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,EACZ,CAAC;AAAA,CACA;AAGF,IAAI,+BAA+B,cAAe,CAAC,SAAS,WAAW;AAAA,EACtE,IAAI,OAAO,aAAa;AAAA,EACxB,IAAI,kBAAkB,OAAO,UAAU;AAAA,EACvC,IAAI,YAAY,OAAO,UAAU;AAAA,EACjC,SAAS,eAAe,CAAC,MAAM;AAAA,IAC9B,IAAI,SAAS;AAAA,MAAM,OAAO;AAAA,IAC1B,MAAM,aAAa,CAAC;AAAA,IACpB,MAAM,SAAS;AAAA,IACf,SAAS,QAAQ,GAAG,SAAS,OAAO,OAAQ,QAAQ,QAAQ,SAAS,GAAG;AAAA,MACvE,MAAM,OAAO,OAAO;AAAA,MACpB,IAAI,aAAa;AAAA,MACjB,IAAI,UAAU,KAAK,IAAI,MAAM;AAAA,QAAmB,OAAO;AAAA,MACvD,IAAI;AAAA,MACJ,KAAK,WAAW;AAAA,QAAM,IAAI,gBAAgB,KAAK,MAAM,OAAO;AAAA,UAAG,IAAI,CAAC;AAAA,YAAY,aAAa;AAAA,UACxF;AAAA,mBAAO;AAAA,MACZ,IAAI,CAAC;AAAA,QAAY,OAAO;AAAA,MACxB,IAAI,WAAW,QAAQ,OAAO,MAAM;AAAA,QAAI,WAAW,KAAK,OAAO;AAAA,MAC1D;AAAA,eAAO;AAAA,IACb;AAAA,IACA,OAAO;AAAA;AAAA,EAER,SAAS,iBAAiB,CAAC,MAAM;AAAA,IAChC,OAAO,SAAS,OAAO,OAAO,CAAC;AAAA;AAAA,EAEhC,OAAO,UAAU,IAAI,KAAK,0BAA0B;AAAA,IACnD,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,EACZ,CAAC;AAAA,CACA;AAGF,IAAI,gCAAgC,cAAe,CAAC,SAAS,WAAW;AAAA,EACvE,IAAI,OAAO,aAAa;AAAA,EACxB,IAAI,YAAY,OAAO,UAAU;AAAA,EACjC,SAAS,gBAAgB,CAAC,MAAM;AAAA,IAC/B,IAAI,SAAS;AAAA,MAAM,OAAO;AAAA,IAC1B,MAAM,SAAS;AAAA,IACf,MAAM,SAAS,IAAI,MAAM,OAAO,MAAM;AAAA,IACtC,SAAS,QAAQ,GAAG,SAAS,OAAO,OAAQ,QAAQ,QAAQ,SAAS,GAAG;AAAA,MACvE,MAAM,OAAO,OAAO;AAAA,MACpB,IAAI,UAAU,KAAK,IAAI,MAAM;AAAA,QAAmB,OAAO;AAAA,MACvD,MAAM,OAAO,OAAO,KAAK,IAAI;AAAA,MAC7B,IAAI,KAAK,WAAW;AAAA,QAAG,OAAO;AAAA,MAC9B,OAAO,SAAS,CAAC,KAAK,IAAI,KAAK,KAAK,GAAG;AAAA,IACxC;AAAA,IACA,OAAO;AAAA;AAAA,EAER,SAAS,kBAAkB,CAAC,MAAM;AAAA,IACjC,IAAI,SAAS;AAAA,MAAM,OAAO,CAAC;AAAA,IAC3B,MAAM,SAAS;AAAA,IACf,MAAM,SAAS,IAAI,MAAM,OAAO,MAAM;AAAA,IACtC,SAAS,QAAQ,GAAG,SAAS,OAAO,OAAQ,QAAQ,QAAQ,SAAS,GAAG;AAAA,MACvE,MAAM,OAAO,OAAO;AAAA,MACpB,MAAM,OAAO,OAAO,KAAK,IAAI;AAAA,MAC7B,OAAO,SAAS,CAAC,KAAK,IAAI,KAAK,KAAK,GAAG;AAAA,IACxC;AAAA,IACA,OAAO;AAAA;AAAA,EAER,OAAO,UAAU,IAAI,KAAK,2BAA2B;AAAA,IACpD,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,EACZ,CAAC;AAAA,CACA;AAGF,IAAI,8BAA8B,cAAe,CAAC,SAAS,WAAW;AAAA,EACrE,IAAI,OAAO,aAAa;AAAA,EACxB,IAAI,kBAAkB,OAAO,UAAU;AAAA,EACvC,SAAS,cAAc,CAAC,MAAM;AAAA,IAC7B,IAAI,SAAS;AAAA,MAAM,OAAO;AAAA,IAC1B,MAAM,SAAS;AAAA,IACf,WAAW,OAAO;AAAA,MAAQ,IAAI,gBAAgB,KAAK,QAAQ,GAAG,GAAG;AAAA,QAChE,IAAI,OAAO,SAAS;AAAA,UAAM,OAAO;AAAA,MAClC;AAAA,IACA,OAAO;AAAA;AAAA,EAER,SAAS,gBAAgB,CAAC,MAAM;AAAA,IAC/B,OAAO,SAAS,OAAO,OAAO,CAAC;AAAA;AAAA,EAEhC,OAAO,UAAU,IAAI,KAAK,yBAAyB;AAAA,IAClD,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,EACZ,CAAC;AAAA,CACA;AAGF,IAAI,kCAAkC,cAAe,CAAC,SAAS,WAAW;AAAA,EACzE,OAAO,UAAU,aAAa,EAAE,OAAO;AAAA,IACtC,UAAU,CAAC,kBAAkB,GAAG,cAAc,CAAC;AAAA,IAC/C,UAAU;AAAA,MACT,eAAe;AAAA,MACf,aAAa;AAAA,MACb,cAAc;AAAA,MACd,YAAY;AAAA,IACb;AAAA,EACD,CAAC;AAAA,CACA;AAGF,IAAI,iCAAiC,cAAe,CAAC,SAAS,WAAW;AAAA,EACxE,IAAI,SAAS,eAAe;AAAA,EAC5B,IAAI,gBAAgB,kBAAkB;AAAA,EACtC,IAAI,cAAc,gBAAgB;AAAA,EAClC,IAAI,iBAAiB,gBAAgB;AAAA,EACrC,IAAI,kBAAkB,OAAO,UAAU;AAAA,EACvC,IAAI,kBAAkB;AAAA,EACtB,IAAI,mBAAmB;AAAA,EACvB,IAAI,mBAAmB;AAAA,EACvB,IAAI,oBAAoB;AAAA,EACxB,IAAI,gBAAgB;AAAA,EACpB,IAAI,iBAAiB;AAAA,EACrB,IAAI,gBAAgB;AAAA,EACpB,IAAI,wBAAwB;AAAA,EAC5B,IAAI,gCAAgC;AAAA,EACpC,IAAI,0BAA0B;AAAA,EAC9B,IAAI,qBAAqB;AAAA,EACzB,IAAI,kBAAkB;AAAA,EACtB,SAAS,MAAM,CAAC,KAAK;AAAA,IACpB,OAAO,OAAO,UAAU,SAAS,KAAK,GAAG;AAAA;AAAA,EAE1C,SAAS,KAAK,CAAC,GAAG;AAAA,IACjB,OAAO,MAAM,MAAM,MAAM;AAAA;AAAA,EAE1B,SAAS,YAAY,CAAC,GAAG;AAAA,IACxB,OAAO,MAAM,KAAK,MAAM;AAAA;AAAA,EAEzB,SAAS,SAAS,CAAC,GAAG;AAAA,IACrB,OAAO,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM;AAAA;AAAA,EAEjD,SAAS,eAAe,CAAC,GAAG;AAAA,IAC3B,OAAO,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,MAAM;AAAA;AAAA,EAE/D,SAAS,WAAW,CAAC,GAAG;AAAA,IACvB,IAAI,KAAK,MAAM,KAAK;AAAA,MAAI,OAAO,IAAI;AAAA,IACnC,MAAM,KAAK,IAAI;AAAA,IACf,IAAI,MAAM,MAAM,MAAM;AAAA,MAAK,OAAO,KAAK,KAAK;AAAA,IAC5C,OAAO;AAAA;AAAA,EAER,SAAS,aAAa,CAAC,GAAG;AAAA,IACzB,IAAI,MAAM;AAAA,MAAK,OAAO;AAAA,IACtB,IAAI,MAAM;AAAA,MAAK,OAAO;AAAA,IACtB,IAAI,MAAM;AAAA,MAAI,OAAO;AAAA,IACrB,OAAO;AAAA;AAAA,EAER,SAAS,eAAe,CAAC,GAAG;AAAA,IAC3B,IAAI,KAAK,MAAM,KAAK;AAAA,MAAI,OAAO,IAAI;AAAA,IACnC,OAAO;AAAA;AAAA,EAER,SAAS,oBAAoB,CAAC,GAAG;AAAA,IAChC,QAAQ;AAAA,WACF;AAAA,QAAI,OAAO;AAAA,WACX;AAAA,QAAI,OAAO;AAAA,WACX;AAAA,QAAI,OAAO;AAAA,WACX;AAAA,QAAK,OAAO;AAAA,WACZ;AAAA,QAAG,OAAO;AAAA,WACV;AAAA,QAAK,OAAO;AAAA;AAAA,WACZ;AAAA,QAAK,OAAO;AAAA,WACZ;AAAA,QAAK,OAAO;AAAA,WACZ;AAAA,QAAK,OAAO;AAAA,WACZ;AAAA,QAAK,OAAO;AAAA,WACZ;AAAA,QAAI,OAAO;AAAA,WACX;AAAA,QAAI,OAAO;AAAA,WACX;AAAA,QAAI,OAAO;AAAA,WACX;AAAA,QAAI,OAAO;AAAA,WACX;AAAA,QAAI,OAAO;AAAA,WACX;AAAA,QAAI,OAAO;AAAA,WACX;AAAA,QAAI,OAAO;AAAA,WACX;AAAA,QAAI,OAAO;AAAA;AAAA,QACP,OAAO;AAAA;AAAA;AAAA,EAGlB,SAAS,iBAAiB,CAAC,GAAG;AAAA,IAC7B,IAAI,KAAK;AAAA,MAAO,OAAO,OAAO,aAAa,CAAC;AAAA,IAC5C,OAAO,OAAO,cAAc,IAAI,SAAS,MAAM,QAAQ,IAAI,QAAQ,QAAQ,KAAK;AAAA;AAAA,EAEjF,SAAS,WAAW,CAAC,QAAQ,KAAK,OAAO;AAAA,IACxC,IAAI,QAAQ;AAAA,MAAa,OAAO,eAAe,QAAQ,KAAK;AAAA,QAC3D,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,UAAU;AAAA,QACV;AAAA,MACD,CAAC;AAAA,IACI;AAAA,aAAO,OAAO;AAAA;AAAA,EAEpB,IAAI,oBAAoB,IAAI,MAAM,GAAG;AAAA,EACrC,IAAI,kBAAkB,IAAI,MAAM,GAAG;AAAA,EACnC,SAAS,IAAI,EAAG,IAAI,KAAK,KAAK;AAAA,IAC7B,kBAAkB,KAAK,qBAAqB,CAAC,IAAI,IAAI;AAAA,IACrD,gBAAgB,KAAK,qBAAqB,CAAC;AAAA,EAC5C;AAAA,EACA,SAAS,KAAK,CAAC,OAAO,SAAS;AAAA,IAC9B,KAAK,QAAQ;AAAA,IACb,KAAK,WAAW,QAAQ,eAAe;AAAA,IACvC,KAAK,SAAS,QAAQ,aAAa;AAAA,IACnC,KAAK,YAAY,QAAQ,gBAAgB;AAAA,IACzC,KAAK,SAAS,QAAQ,aAAa;AAAA,IACnC,KAAK,OAAO,QAAQ,WAAW;AAAA,IAC/B,KAAK,WAAW,QAAQ,eAAe;AAAA,IACvC,KAAK,WAAW,OAAO,QAAQ,gBAAgB,WAAW,QAAQ,cAAc;AAAA,IAChF,KAAK,oBAAoB,OAAO,QAAQ,yBAAyB,WAAW,QAAQ,uBAAuB;AAAA,IAC3G,KAAK,gBAAgB,KAAK,OAAO;AAAA,IACjC,KAAK,UAAU,KAAK,OAAO;AAAA,IAC3B,KAAK,SAAS,MAAM;AAAA,IACpB,KAAK,WAAW;AAAA,IAChB,KAAK,OAAO;AAAA,IACZ,KAAK,YAAY;AAAA,IACjB,KAAK,aAAa;AAAA,IAClB,KAAK,QAAQ;AAAA,IACb,KAAK,iBAAiB;AAAA,IACtB,KAAK,YAAY,CAAC;AAAA,IAClB,KAAK,wBAAwB,CAAC;AAAA;AAAA,EAE/B,SAAS,aAAa,CAAC,OAAO,SAAS;AAAA,IACtC,MAAM,OAAO;AAAA,MACZ,MAAM,MAAM;AAAA,MACZ,QAAQ,MAAM,MAAM,MAAM,GAAG,EAAE;AAAA,MAC/B,UAAU,MAAM;AAAA,MAChB,MAAM,MAAM;AAAA,MACZ,QAAQ,MAAM,WAAW,MAAM;AAAA,IAChC;AAAA,IACA,KAAK,UAAU,YAAY,IAAI;AAAA,IAC/B,OAAO,IAAI,cAAc,SAAS,IAAI;AAAA;AAAA,EAEvC,SAAS,UAAU,CAAC,OAAO,SAAS;AAAA,IACnC,MAAM,cAAc,OAAO,OAAO;AAAA;AAAA,EAEnC,SAAS,YAAY,CAAC,OAAO,SAAS;AAAA,IACrC,IAAI,MAAM;AAAA,MAAW,MAAM,UAAU,KAAK,MAAM,cAAc,OAAO,OAAO,CAAC;AAAA;AAAA,EAE9E,SAAS,WAAW,CAAC,OAAO,MAAM,OAAO;AAAA,IACxC,MAAM,eAAe,MAAM;AAAA,IAC3B,IAAI,aAAa,WAAW,GAAG;AAAA,MAC9B,MAAM,cAAc,aAAa,aAAa,SAAS;AAAA,MACvD,IAAI,CAAC,gBAAgB,KAAK,aAAa,IAAI;AAAA,QAAG,YAAY,QAAQ;AAAA,UACjE,SAAS,gBAAgB,KAAK,MAAM,WAAW,IAAI;AAAA,UACnD,OAAO,MAAM,UAAU;AAAA,QACxB;AAAA,IACD;AAAA,IACA,MAAM,UAAU,QAAQ;AAAA;AAAA,EAEzB,SAAS,sBAAsB,CAAC,OAAO;AAAA,IACtC,MAAM,sBAAsB,KAAK,OAAO,OAAO,IAAI,CAAC;AAAA;AAAA,EAErD,SAAS,uBAAuB,CAAC,OAAO;AAAA,IACvC,MAAM,cAAc,MAAM,sBAAsB,IAAI;AAAA,IACpD,MAAM,eAAe,MAAM;AAAA,IAC3B,IAAI,aAAa,WAAW;AAAA,MAAG;AAAA,IAC/B,MAAM,SAAS,aAAa,aAAa,SAAS;AAAA,IAClD,MAAM,QAAQ,OAAO,KAAK,WAAW;AAAA,IACrC,SAAS,QAAQ,GAAG,SAAS,MAAM,OAAQ,QAAQ,QAAQ,SAAS,GAAG;AAAA,MACtE,MAAM,OAAO,MAAM;AAAA,MACnB,IAAI,CAAC,gBAAgB,KAAK,QAAQ,IAAI;AAAA,QAAG,OAAO,QAAQ,YAAY;AAAA,IACrE;AAAA;AAAA,EAED,SAAS,yBAAyB,CAAC,OAAO;AAAA,IACzC,MAAM,cAAc,MAAM,sBAAsB,IAAI;AAAA,IACpD,MAAM,QAAQ,OAAO,KAAK,WAAW;AAAA,IACrC,SAAS,QAAQ,MAAM,SAAS,EAAG,SAAS,GAAG,SAAS,GAAG;AAAA,MAC1D,MAAM,QAAQ,YAAY,MAAM;AAAA,MAChC,IAAI,MAAM;AAAA,QAAS,MAAM,UAAU,MAAM,UAAU,MAAM;AAAA,MACpD;AAAA,eAAO,MAAM,UAAU,MAAM;AAAA,IACnC;AAAA;AAAA,EAED,SAAS,aAAa,CAAC,OAAO;AAAA,IAC7B,OAAO;AAAA,MACN,UAAU,MAAM;AAAA,MAChB,MAAM,MAAM;AAAA,MACZ,WAAW,MAAM;AAAA,MACjB,YAAY,MAAM;AAAA,MAClB,gBAAgB,MAAM;AAAA,MACtB,KAAK,MAAM;AAAA,MACX,QAAQ,MAAM;AAAA,MACd,MAAM,MAAM;AAAA,MACZ,QAAQ,MAAM;AAAA,IACf;AAAA;AAAA,EAED,SAAS,YAAY,CAAC,OAAO,UAAU;AAAA,IACtC,MAAM,WAAW,SAAS;AAAA,IAC1B,MAAM,OAAO,SAAS;AAAA,IACtB,MAAM,YAAY,SAAS;AAAA,IAC3B,MAAM,aAAa,SAAS;AAAA,IAC5B,MAAM,iBAAiB,SAAS;AAAA,IAChC,MAAM,MAAM,SAAS;AAAA,IACrB,MAAM,SAAS,SAAS;AAAA,IACxB,MAAM,OAAO,SAAS;AAAA,IACtB,MAAM,SAAS,SAAS;AAAA;AAAA,EAEzB,IAAI,oBAAoB;AAAA,IACvB,MAAM,SAAS,mBAAmB,CAAC,OAAO,MAAM,MAAM;AAAA,MACrD,IAAI,MAAM,YAAY;AAAA,QAAM,WAAW,OAAO,gCAAgC;AAAA,MAC9E,IAAI,KAAK,WAAW;AAAA,QAAG,WAAW,OAAO,6CAA6C;AAAA,MACtF,MAAM,QAAQ,uBAAuB,KAAK,KAAK,EAAE;AAAA,MACjD,IAAI,UAAU;AAAA,QAAM,WAAW,OAAO,2CAA2C;AAAA,MACjF,MAAM,QAAQ,SAAS,MAAM,IAAI,EAAE;AAAA,MACnC,MAAM,QAAQ,SAAS,MAAM,IAAI,EAAE;AAAA,MACnC,IAAI,UAAU;AAAA,QAAG,WAAW,OAAO,2CAA2C;AAAA,MAC9E,MAAM,UAAU,KAAK;AAAA,MACrB,MAAM,kBAAkB,QAAQ;AAAA,MAChC,IAAI,UAAU,KAAK,UAAU;AAAA,QAAG,aAAa,OAAO,0CAA0C;AAAA;AAAA,IAE/F,KAAK,SAAS,kBAAkB,CAAC,OAAO,MAAM,MAAM;AAAA,MACnD,IAAI;AAAA,MACJ,IAAI,KAAK,WAAW;AAAA,QAAG,WAAW,OAAO,6CAA6C;AAAA,MACtF,MAAM,SAAS,KAAK;AAAA,MACpB,SAAS,KAAK;AAAA,MACd,IAAI,CAAC,mBAAmB,KAAK,MAAM;AAAA,QAAG,WAAW,OAAO,6DAA6D;AAAA,MACrH,IAAI,gBAAgB,KAAK,MAAM,QAAQ,MAAM;AAAA,QAAG,WAAW,OAAO,gDAAiD,SAAS,cAAe;AAAA,MAC3I,IAAI,CAAC,gBAAgB,KAAK,MAAM;AAAA,QAAG,WAAW,OAAO,8DAA8D;AAAA,MACnH,IAAI;AAAA,QACH,SAAS,mBAAmB,MAAM;AAAA,QACjC,OAAO,KAAK;AAAA,QACb,WAAW,OAAO,8BAA8B,MAAM;AAAA;AAAA,MAEvD,MAAM,OAAO,UAAU;AAAA;AAAA,EAEzB;AAAA,EACA,SAAS,cAAc,CAAC,OAAO,OAAO,KAAK,WAAW;AAAA,IACrD,IAAI,QAAQ,KAAK;AAAA,MAChB,MAAM,UAAU,MAAM,MAAM,MAAM,OAAO,GAAG;AAAA,MAC5C,IAAI;AAAA,QAAW,SAAS,YAAY,GAAG,UAAU,QAAQ,OAAQ,YAAY,SAAS,aAAa,GAAG;AAAA,UACrG,MAAM,aAAa,QAAQ,WAAW,SAAS;AAAA,UAC/C,IAAI,EAAE,eAAe,KAAK,cAAc,MAAM,cAAc;AAAA,YAAU,WAAW,OAAO,+BAA+B;AAAA,QACxH;AAAA,MACK,SAAI,sBAAsB,KAAK,OAAO;AAAA,QAAG,WAAW,OAAO,8CAA8C;AAAA,MAC9G,MAAM,UAAU;AAAA,IACjB;AAAA;AAAA,EAED,SAAS,aAAa,CAAC,OAAO,aAAa,QAAQ,iBAAiB;AAAA,IACnE,IAAI,CAAC,OAAO,SAAS,MAAM;AAAA,MAAG,WAAW,OAAO,mEAAmE;AAAA,IACnH,MAAM,aAAa,OAAO,KAAK,MAAM;AAAA,IACrC,SAAS,QAAQ,GAAG,WAAW,WAAW,OAAQ,QAAQ,UAAU,SAAS,GAAG;AAAA,MAC/E,MAAM,MAAM,WAAW;AAAA,MACvB,IAAI,CAAC,gBAAgB,KAAK,aAAa,GAAG,GAAG;AAAA,QAC5C,YAAY,aAAa,KAAK,OAAO,IAAI;AAAA,QACzC,gBAAgB,OAAO;AAAA,MACxB;AAAA,IACD;AAAA;AAAA,EAED,SAAS,gBAAgB,CAAC,OAAO,SAAS,iBAAiB,QAAQ,SAAS,WAAW,WAAW,gBAAgB,UAAU;AAAA,IAC3H,IAAI,MAAM,QAAQ,OAAO,GAAG;AAAA,MAC3B,UAAU,MAAM,UAAU,MAAM,KAAK,OAAO;AAAA,MAC5C,SAAS,QAAQ,GAAG,WAAW,QAAQ,OAAQ,QAAQ,UAAU,SAAS,GAAG;AAAA,QAC5E,IAAI,MAAM,QAAQ,QAAQ,MAAM;AAAA,UAAG,WAAW,OAAO,6CAA6C;AAAA,QAClG,IAAI,OAAO,YAAY,YAAY,OAAO,QAAQ,MAAM,MAAM;AAAA,UAAmB,QAAQ,SAAS;AAAA,MACnG;AAAA,IACD;AAAA,IACA,IAAI,OAAO,YAAY,YAAY,OAAO,OAAO,MAAM;AAAA,MAAmB,UAAU;AAAA,IACpF,UAAU,OAAO,OAAO;AAAA,IACxB,IAAI,YAAY;AAAA,MAAM,UAAU,CAAC;AAAA,IACjC,IAAI,WAAW;AAAA,MAA2B,IAAI,MAAM,QAAQ,SAAS,GAAG;AAAA,QACvE,IAAI,UAAU,SAAS,MAAM;AAAA,UAAmB,WAAW,OAAO,uDAAuD,MAAM,oBAAoB,GAAG;AAAA,QACtJ,MAAM,uBAAuB,IAAI;AAAA,QACjC,SAAS,QAAQ,GAAG,WAAW,UAAU,OAAQ,QAAQ,UAAU,SAAS,GAAG;AAAA,UAC9E,MAAM,MAAM,UAAU;AAAA,UACtB,IAAI,KAAK,IAAI,GAAG;AAAA,YAAG;AAAA,UACnB,KAAK,IAAI,GAAG;AAAA,UACZ,cAAc,OAAO,SAAS,KAAK,eAAe;AAAA,QACnD;AAAA,MACD,EAAO;AAAA,sBAAc,OAAO,SAAS,WAAW,eAAe;AAAA,IAC1D;AAAA,MACJ,IAAI,CAAC,MAAM,QAAQ,CAAC,gBAAgB,KAAK,iBAAiB,OAAO,KAAK,gBAAgB,KAAK,SAAS,OAAO,GAAG;AAAA,QAC7G,MAAM,OAAO,aAAa,MAAM;AAAA,QAChC,MAAM,YAAY,kBAAkB,MAAM;AAAA,QAC1C,MAAM,WAAW,YAAY,MAAM;AAAA,QACnC,WAAW,OAAO,wBAAwB;AAAA,MAC3C;AAAA,MACA,YAAY,SAAS,SAAS,SAAS;AAAA,MACvC,OAAO,gBAAgB;AAAA;AAAA,IAExB,OAAO;AAAA;AAAA,EAER,SAAS,aAAa,CAAC,OAAO;AAAA,IAC7B,MAAM,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,IAChD,IAAI,OAAO;AAAA,MAAI,MAAM;AAAA,IAChB,SAAI,OAAO,IAAI;AAAA,MACnB,MAAM;AAAA,MACN,IAAI,MAAM,MAAM,WAAW,MAAM,QAAQ,MAAM;AAAA,QAAI,MAAM;AAAA,IAC1D,EAAO;AAAA,iBAAW,OAAO,0BAA0B;AAAA,IACnD,MAAM,QAAQ;AAAA,IACd,MAAM,YAAY,MAAM;AAAA,IACxB,MAAM,iBAAiB;AAAA;AAAA,EAExB,SAAS,mBAAmB,CAAC,OAAO,eAAe,aAAa;AAAA,IAC/D,IAAI,aAAa;AAAA,IACjB,IAAI,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,IAC9C,OAAO,OAAO,GAAG;AAAA,MAChB,OAAO,aAAa,EAAE,GAAG;AAAA,QACxB,IAAI,OAAO,KAAK,MAAM,mBAAmB;AAAA,UAAI,MAAM,iBAAiB,MAAM;AAAA,QAC1E,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,MAC7C;AAAA,MACA,IAAI,iBAAiB,OAAO;AAAA,QAAI;AAAA,UAC/B,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,eACtC,OAAO,MAAM,OAAO,MAAM,OAAO;AAAA,MACxC,IAAI,MAAM,EAAE,GAAG;AAAA,QACd,cAAc,KAAK;AAAA,QACnB,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,QAC1C;AAAA,QACA,MAAM,aAAa;AAAA,QACnB,OAAO,OAAO,IAAI;AAAA,UACjB,MAAM;AAAA,UACN,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,QAC7C;AAAA,MACD,EAAO;AAAA;AAAA,IACR;AAAA,IACA,IAAI,gBAAgB,MAAM,eAAe,KAAK,MAAM,aAAa;AAAA,MAAa,aAAa,OAAO,uBAAuB;AAAA,IACzH,OAAO;AAAA;AAAA,EAER,SAAS,qBAAqB,CAAC,OAAO;AAAA,IACrC,IAAI,YAAY,MAAM;AAAA,IACtB,IAAI,KAAK,MAAM,MAAM,WAAW,SAAS;AAAA,IACzC,KAAK,OAAO,MAAM,OAAO,OAAO,OAAO,MAAM,MAAM,WAAW,YAAY,CAAC,KAAK,OAAO,MAAM,MAAM,WAAW,YAAY,CAAC,GAAG;AAAA,MAC7H,aAAa;AAAA,MACb,KAAK,MAAM,MAAM,WAAW,SAAS;AAAA,MACrC,IAAI,OAAO,KAAK,UAAU,EAAE;AAAA,QAAG,OAAO;AAAA,IACvC;AAAA,IACA,OAAO;AAAA;AAAA,EAER,SAAS,gBAAgB,CAAC,OAAO,OAAO;AAAA,IACvC,IAAI,UAAU;AAAA,MAAG,MAAM,UAAU;AAAA,IAC5B,SAAI,QAAQ;AAAA,MAAG,MAAM,UAAU,OAAO,OAAO;AAAA,GAAM,QAAQ,CAAC;AAAA;AAAA,EAElE,SAAS,eAAe,CAAC,OAAO,YAAY,sBAAsB;AAAA,IACjE,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM,QAAQ,MAAM;AAAA,IACpB,MAAM,UAAU,MAAM;AAAA,IACtB,IAAI,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,IAC9C,IAAI,UAAU,EAAE,KAAK,gBAAgB,EAAE,KAAK,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,OAAO,OAAO,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,OAAO;AAAA,MAAI,OAAO;AAAA,IACjM,IAAI,OAAO,MAAM,OAAO,IAAI;AAAA,MAC3B,MAAM,YAAY,MAAM,MAAM,WAAW,MAAM,WAAW,CAAC;AAAA,MAC3D,IAAI,UAAU,SAAS,KAAK,wBAAwB,gBAAgB,SAAS;AAAA,QAAG,OAAO;AAAA,IACxF;AAAA,IACA,MAAM,OAAO;AAAA,IACb,MAAM,SAAS;AAAA,IACf,eAAe,aAAa,MAAM;AAAA,IAClC,oBAAoB;AAAA,IACpB,OAAO,OAAO,GAAG;AAAA,MAChB,IAAI,OAAO,IAAI;AAAA,QACd,MAAM,YAAY,MAAM,MAAM,WAAW,MAAM,WAAW,CAAC;AAAA,QAC3D,IAAI,UAAU,SAAS,KAAK,wBAAwB,gBAAgB,SAAS;AAAA,UAAG;AAAA,MACjF,EAAO,SAAI,OAAO,IAAI;AAAA,QACrB,IAAI,UAAU,MAAM,MAAM,WAAW,MAAM,WAAW,CAAC,CAAC;AAAA,UAAG;AAAA,MAC5D,EAAO,SAAI,MAAM,aAAa,MAAM,aAAa,sBAAsB,KAAK,KAAK,wBAAwB,gBAAgB,EAAE;AAAA,QAAG;AAAA,MACzH,SAAI,MAAM,EAAE,GAAG;AAAA,QACnB,QAAQ,MAAM;AAAA,QACd,aAAa,MAAM;AAAA,QACnB,cAAc,MAAM;AAAA,QACpB,oBAAoB,OAAO,OAAO,EAAE;AAAA,QACpC,IAAI,MAAM,cAAc,YAAY;AAAA,UACnC,oBAAoB;AAAA,UACpB,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,UAC1C;AAAA,QACD,EAAO;AAAA,UACN,MAAM,WAAW;AAAA,UACjB,MAAM,OAAO;AAAA,UACb,MAAM,YAAY;AAAA,UAClB,MAAM,aAAa;AAAA,UACnB;AAAA;AAAA,MAEF;AAAA,MACA,IAAI,mBAAmB;AAAA,QACtB,eAAe,OAAO,cAAc,YAAY,KAAK;AAAA,QACrD,iBAAiB,OAAO,MAAM,OAAO,KAAK;AAAA,QAC1C,eAAe,aAAa,MAAM;AAAA,QAClC,oBAAoB;AAAA,MACrB;AAAA,MACA,IAAI,CAAC,aAAa,EAAE;AAAA,QAAG,aAAa,MAAM,WAAW;AAAA,MACrD,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,IAC7C;AAAA,IACA,eAAe,OAAO,cAAc,YAAY,KAAK;AAAA,IACrD,IAAI,MAAM;AAAA,MAAQ,OAAO;AAAA,IACzB,MAAM,OAAO;AAAA,IACb,MAAM,SAAS;AAAA,IACf,OAAO;AAAA;AAAA,EAER,SAAS,sBAAsB,CAAC,OAAO,YAAY;AAAA,IAClD,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,IAC9C,IAAI,OAAO;AAAA,MAAI,OAAO;AAAA,IACtB,MAAM,OAAO;AAAA,IACb,MAAM,SAAS;AAAA,IACf,MAAM;AAAA,IACN,eAAe,aAAa,MAAM;AAAA,IAClC,QAAQ,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ,OAAO;AAAA,MAAG,IAAI,OAAO,IAAI;AAAA,QAC1E,eAAe,OAAO,cAAc,MAAM,UAAU,IAAI;AAAA,QACxD,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,QAC5C,IAAI,OAAO,IAAI;AAAA,UACd,eAAe,MAAM;AAAA,UACrB,MAAM;AAAA,UACN,aAAa,MAAM;AAAA,QACpB,EAAO;AAAA,iBAAO;AAAA,MACf,EAAO,SAAI,MAAM,EAAE,GAAG;AAAA,QACrB,eAAe,OAAO,cAAc,YAAY,IAAI;AAAA,QACpD,iBAAiB,OAAO,oBAAoB,OAAO,OAAO,UAAU,CAAC;AAAA,QACrE,eAAe,aAAa,MAAM;AAAA,MACnC,EAAO,SAAI,MAAM,aAAa,MAAM,aAAa,sBAAsB,KAAK;AAAA,QAAG,WAAW,OAAO,8DAA8D;AAAA,MAC1J;AAAA,QACJ,MAAM;AAAA,QACN,IAAI,CAAC,aAAa,EAAE;AAAA,UAAG,aAAa,MAAM;AAAA;AAAA,IAE3C,WAAW,OAAO,4DAA4D;AAAA;AAAA,EAE/E,SAAS,sBAAsB,CAAC,OAAO,YAAY;AAAA,IAClD,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,IAC9C,IAAI,OAAO;AAAA,MAAI,OAAO;AAAA,IACtB,MAAM,OAAO;AAAA,IACb,MAAM,SAAS;AAAA,IACf,MAAM;AAAA,IACN,eAAe,aAAa,MAAM;AAAA,IAClC,QAAQ,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ,OAAO;AAAA,MAAG,IAAI,OAAO,IAAI;AAAA,QAC1E,eAAe,OAAO,cAAc,MAAM,UAAU,IAAI;AAAA,QACxD,MAAM;AAAA,QACN,OAAO;AAAA,MACR,EAAO,SAAI,OAAO,IAAI;AAAA,QACrB,eAAe,OAAO,cAAc,MAAM,UAAU,IAAI;AAAA,QACxD,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,QAC5C,IAAI,MAAM,EAAE;AAAA,UAAG,oBAAoB,OAAO,OAAO,UAAU;AAAA,QACtD,SAAI,KAAK,OAAO,kBAAkB,KAAK;AAAA,UAC3C,MAAM,UAAU,gBAAgB;AAAA,UAChC,MAAM;AAAA,QACP,EAAO,UAAK,MAAM,cAAc,EAAE,KAAK,GAAG;AAAA,UACzC,IAAI,YAAY;AAAA,UAChB,IAAI,YAAY;AAAA,UAChB,MAAO,YAAY,GAAG,aAAa;AAAA,YAClC,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,YAC5C,KAAK,MAAM,YAAY,EAAE,MAAM;AAAA,cAAG,aAAa,aAAa,KAAK;AAAA,YAC5D;AAAA,yBAAW,OAAO,gCAAgC;AAAA,UACxD;AAAA,UACA,MAAM,UAAU,kBAAkB,SAAS;AAAA,UAC3C,MAAM;AAAA,QACP,EAAO;AAAA,qBAAW,OAAO,yBAAyB;AAAA,QAClD,eAAe,aAAa,MAAM;AAAA,MACnC,EAAO,SAAI,MAAM,EAAE,GAAG;AAAA,QACrB,eAAe,OAAO,cAAc,YAAY,IAAI;AAAA,QACpD,iBAAiB,OAAO,oBAAoB,OAAO,OAAO,UAAU,CAAC;AAAA,QACrE,eAAe,aAAa,MAAM;AAAA,MACnC,EAAO,SAAI,MAAM,aAAa,MAAM,aAAa,sBAAsB,KAAK;AAAA,QAAG,WAAW,OAAO,8DAA8D;AAAA,MAC1J;AAAA,QACJ,MAAM;AAAA,QACN,IAAI,CAAC,aAAa,EAAE;AAAA,UAAG,aAAa,MAAM;AAAA;AAAA,IAE3C,WAAW,OAAO,4DAA4D;AAAA;AAAA,EAE/E,SAAS,kBAAkB,CAAC,OAAO,YAAY;AAAA,IAC9C,IAAI,WAAW;AAAA,IACf,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM,OAAO,MAAM;AAAA,IACnB,IAAI;AAAA,IACJ,MAAM,UAAU,MAAM;AAAA,IACtB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM,kBAAkB,OAAO,OAAO,IAAI;AAAA,IAC1C,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,IAC9C,IAAI,OAAO,IAAI;AAAA,MACd,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,UAAU,CAAC;AAAA,IACZ,EAAO,SAAI,OAAO,KAAK;AAAA,MACtB,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,UAAU,CAAC;AAAA,IACZ,EAAO;AAAA,aAAO;AAAA,IACd,IAAI,MAAM,WAAW;AAAA,MAAM,YAAY,OAAO,MAAM,QAAQ,OAAO;AAAA,IACnE,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,IAC5C,OAAO,OAAO,GAAG;AAAA,MAChB,oBAAoB,OAAO,MAAM,UAAU;AAAA,MAC3C,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,MAC1C,IAAI,OAAO,YAAY;AAAA,QACtB,MAAM;AAAA,QACN,MAAM,MAAM;AAAA,QACZ,MAAM,SAAS;AAAA,QACf,MAAM,OAAO,YAAY,YAAY;AAAA,QACrC,MAAM,SAAS;AAAA,QACf,OAAO;AAAA,MACR,EAAO,SAAI,CAAC;AAAA,QAAU,WAAW,OAAO,8CAA8C;AAAA,MACjF,SAAI,OAAO;AAAA,QAAI,WAAW,OAAO,0CAA0C;AAAA,MAChF,SAAS,UAAU,YAAY;AAAA,MAC/B,SAAS,iBAAiB;AAAA,MAC1B,IAAI,OAAO,IAAI;AAAA,QACd,IAAI,UAAU,MAAM,MAAM,WAAW,MAAM,WAAW,CAAC,CAAC,GAAG;AAAA,UAC1D,SAAS,iBAAiB;AAAA,UAC1B,MAAM;AAAA,UACN,oBAAoB,OAAO,MAAM,UAAU;AAAA,QAC5C;AAAA,MACD;AAAA,MACA,QAAQ,MAAM;AAAA,MACd,aAAa,MAAM;AAAA,MACnB,OAAO,MAAM;AAAA,MACb,YAAY,OAAO,YAAY,iBAAiB,OAAO,IAAI;AAAA,MAC3D,SAAS,MAAM;AAAA,MACf,UAAU,MAAM;AAAA,MAChB,oBAAoB,OAAO,MAAM,UAAU;AAAA,MAC3C,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,MAC1C,KAAK,kBAAkB,MAAM,SAAS,UAAU,OAAO,IAAI;AAAA,QAC1D,SAAS;AAAA,QACT,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,QAC5C,oBAAoB,OAAO,MAAM,UAAU;AAAA,QAC3C,YAAY,OAAO,YAAY,iBAAiB,OAAO,IAAI;AAAA,QAC3D,YAAY,MAAM;AAAA,MACnB;AAAA,MACA,IAAI;AAAA,QAAW,iBAAiB,OAAO,SAAS,iBAAiB,QAAQ,SAAS,WAAW,OAAO,YAAY,IAAI;AAAA,MAC/G,SAAI;AAAA,QAAQ,QAAQ,KAAK,iBAAiB,OAAO,MAAM,iBAAiB,QAAQ,SAAS,WAAW,OAAO,YAAY,IAAI,CAAC;AAAA,MAC5H;AAAA,gBAAQ,KAAK,OAAO;AAAA,MACzB,oBAAoB,OAAO,MAAM,UAAU;AAAA,MAC3C,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,MAC1C,IAAI,OAAO,IAAI;AAAA,QACd,WAAW;AAAA,QACX,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,MAC7C,EAAO;AAAA,mBAAW;AAAA,IACnB;AAAA,IACA,WAAW,OAAO,uDAAuD;AAAA;AAAA,EAE1E,SAAS,eAAe,CAAC,OAAO,YAAY;AAAA,IAC3C,IAAI;AAAA,IACJ,IAAI,WAAW;AAAA,IACf,IAAI,iBAAiB;AAAA,IACrB,IAAI,iBAAiB;AAAA,IACrB,IAAI,aAAa;AAAA,IACjB,IAAI,aAAa;AAAA,IACjB,IAAI,iBAAiB;AAAA,IACrB,IAAI;AAAA,IACJ,IAAI,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,IAC9C,IAAI,OAAO;AAAA,MAAK,UAAU;AAAA,IACrB,SAAI,OAAO;AAAA,MAAI,UAAU;AAAA,IACzB;AAAA,aAAO;AAAA,IACZ,MAAM,OAAO;AAAA,IACb,MAAM,SAAS;AAAA,IACf,OAAO,OAAO,GAAG;AAAA,MAChB,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,MAC5C,IAAI,OAAO,MAAM,OAAO;AAAA,QAAI,IAAI,kBAAkB;AAAA,UAAU,WAAW,OAAO,KAAK,gBAAgB;AAAA,QAC9F;AAAA,qBAAW,OAAO,sCAAsC;AAAA,MACxD,UAAK,MAAM,gBAAgB,EAAE,MAAM;AAAA,QAAG,IAAI,QAAQ;AAAA,UAAG,WAAW,OAAO,8EAA8E;AAAA,QACrJ,SAAI,CAAC,gBAAgB;AAAA,UACzB,aAAa,aAAa,MAAM;AAAA,UAChC,iBAAiB;AAAA,QAClB,EAAO;AAAA,qBAAW,OAAO,2CAA2C;AAAA,MAC/D;AAAA;AAAA,IACN;AAAA,IACA,IAAI,aAAa,EAAE,GAAG;AAAA,MACrB;AAAA,QACC,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,aACtC,aAAa,EAAE;AAAA,MACtB,IAAI,OAAO;AAAA,QAAI;AAAA,UACd,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,eACtC,CAAC,MAAM,EAAE,KAAK,OAAO;AAAA,IAC7B;AAAA,IACA,OAAO,OAAO,GAAG;AAAA,MAChB,cAAc,KAAK;AAAA,MACnB,MAAM,aAAa;AAAA,MACnB,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,MAC1C,QAAQ,CAAC,kBAAkB,MAAM,aAAa,eAAe,OAAO,IAAI;AAAA,QACvE,MAAM;AAAA,QACN,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,MAC7C;AAAA,MACA,IAAI,CAAC,kBAAkB,MAAM,aAAa;AAAA,QAAY,aAAa,MAAM;AAAA,MACzE,IAAI,MAAM,EAAE,GAAG;AAAA,QACd;AAAA,QACA;AAAA,MACD;AAAA,MACA,IAAI,CAAC,kBAAkB,eAAe;AAAA,QAAG,WAAW,OAAO,sCAAsC;AAAA,MACjG,IAAI,MAAM,aAAa,YAAY;AAAA,QAClC,IAAI,aAAa;AAAA,UAAe,MAAM,UAAU,OAAO,OAAO;AAAA,GAAM,iBAAiB,IAAI,aAAa,UAAU;AAAA,QAC3G,SAAI,aAAa,eAAe;AAAA,UACpC,IAAI;AAAA,YAAgB,MAAM,UAAU;AAAA;AAAA,QACrC;AAAA,QACA;AAAA,MACD;AAAA,MACA,IAAI;AAAA,QAAS,IAAI,aAAa,EAAE,GAAG;AAAA,UAClC,iBAAiB;AAAA,UACjB,MAAM,UAAU,OAAO,OAAO;AAAA,GAAM,iBAAiB,IAAI,aAAa,UAAU;AAAA,QACjF,EAAO,SAAI,gBAAgB;AAAA,UAC1B,iBAAiB;AAAA,UACjB,MAAM,UAAU,OAAO,OAAO;AAAA,GAAM,aAAa,CAAC;AAAA,QACnD,EAAO,SAAI,eAAe,GAAG;AAAA,UAC5B,IAAI;AAAA,YAAgB,MAAM,UAAU;AAAA,QACrC,EAAO;AAAA,gBAAM,UAAU,OAAO,OAAO;AAAA,GAAM,UAAU;AAAA,MAChD;AAAA,cAAM,UAAU,OAAO,OAAO;AAAA,GAAM,iBAAiB,IAAI,aAAa,UAAU;AAAA,MACrF,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb,MAAM,eAAe,MAAM;AAAA,MAC3B,OAAO,CAAC,MAAM,EAAE,KAAK,OAAO;AAAA,QAAG,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,MAC3E,eAAe,OAAO,cAAc,MAAM,UAAU,KAAK;AAAA,IAC1D;AAAA,IACA,OAAO;AAAA;AAAA,EAER,SAAS,iBAAiB,CAAC,OAAO,YAAY;AAAA,IAC7C,MAAM,OAAO,MAAM;AAAA,IACnB,MAAM,UAAU,MAAM;AAAA,IACtB,MAAM,UAAU,CAAC;AAAA,IACjB,IAAI,WAAW;AAAA,IACf,IAAI,MAAM,mBAAmB;AAAA,MAAI,OAAO;AAAA,IACxC,IAAI,MAAM,WAAW;AAAA,MAAM,YAAY,OAAO,MAAM,QAAQ,OAAO;AAAA,IACnE,IAAI,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,IAC9C,OAAO,OAAO,GAAG;AAAA,MAChB,IAAI,MAAM,mBAAmB,IAAI;AAAA,QAChC,MAAM,WAAW,MAAM;AAAA,QACvB,WAAW,OAAO,gDAAgD;AAAA,MACnE;AAAA,MACA,IAAI,OAAO;AAAA,QAAI;AAAA,MACf,IAAI,CAAC,UAAU,MAAM,MAAM,WAAW,MAAM,WAAW,CAAC,CAAC;AAAA,QAAG;AAAA,MAC5D,WAAW;AAAA,MACX,MAAM;AAAA,MACN,IAAI,oBAAoB,OAAO,MAAM,EAAE,GAAG;AAAA,QACzC,IAAI,MAAM,cAAc,YAAY;AAAA,UACnC,QAAQ,KAAK,IAAI;AAAA,UACjB,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,UAC1C;AAAA,QACD;AAAA,MACD;AAAA,MACA,MAAM,QAAQ,MAAM;AAAA,MACpB,YAAY,OAAO,YAAY,kBAAkB,OAAO,IAAI;AAAA,MAC5D,QAAQ,KAAK,MAAM,MAAM;AAAA,MACzB,oBAAoB,OAAO,MAAM,EAAE;AAAA,MACnC,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,MAC1C,KAAK,MAAM,SAAS,SAAS,MAAM,aAAa,eAAe,OAAO;AAAA,QAAG,WAAW,OAAO,qCAAqC;AAAA,MAC3H,SAAI,MAAM,aAAa;AAAA,QAAY;AAAA,IACzC;AAAA,IACA,IAAI,UAAU;AAAA,MACb,MAAM,MAAM;AAAA,MACZ,MAAM,SAAS;AAAA,MACf,MAAM,OAAO;AAAA,MACb,MAAM,SAAS;AAAA,MACf,OAAO;AAAA,IACR;AAAA,IACA,OAAO;AAAA;AAAA,EAER,SAAS,gBAAgB,CAAC,OAAO,YAAY,YAAY;AAAA,IACxD,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM,OAAO,MAAM;AAAA,IACnB,MAAM,UAAU,MAAM;AAAA,IACtB,MAAM,UAAU,CAAC;AAAA,IACjB,MAAM,kBAAkB,OAAO,OAAO,IAAI;AAAA,IAC1C,IAAI,SAAS;AAAA,IACb,IAAI,UAAU;AAAA,IACd,IAAI,YAAY;AAAA,IAChB,IAAI,gBAAgB;AAAA,IACpB,IAAI,WAAW;AAAA,IACf,IAAI,MAAM,mBAAmB;AAAA,MAAI,OAAO;AAAA,IACxC,IAAI,MAAM,WAAW;AAAA,MAAM,YAAY,OAAO,MAAM,QAAQ,OAAO;AAAA,IACnE,IAAI,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,IAC9C,OAAO,OAAO,GAAG;AAAA,MAChB,IAAI,CAAC,iBAAiB,MAAM,mBAAmB,IAAI;AAAA,QAClD,MAAM,WAAW,MAAM;AAAA,QACvB,WAAW,OAAO,gDAAgD;AAAA,MACnE;AAAA,MACA,MAAM,YAAY,MAAM,MAAM,WAAW,MAAM,WAAW,CAAC;AAAA,MAC3D,MAAM,QAAQ,MAAM;AAAA,MACpB,KAAK,OAAO,MAAM,OAAO,OAAO,UAAU,SAAS,GAAG;AAAA,QACrD,IAAI,OAAO,IAAI;AAAA,UACd,IAAI,eAAe;AAAA,YAClB,iBAAiB,OAAO,SAAS,iBAAiB,QAAQ,SAAS,MAAM,UAAU,eAAe,OAAO;AAAA,YACzG,SAAS,UAAU,YAAY;AAAA,UAChC;AAAA,UACA,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,eAAe;AAAA,QAChB,EAAO,SAAI,eAAe;AAAA,UACzB,gBAAgB;AAAA,UAChB,eAAe;AAAA,QAChB,EAAO;AAAA,qBAAW,OAAO,mGAAmG;AAAA,QAC5H,MAAM,YAAY;AAAA,QAClB,KAAK;AAAA,MACN,EAAO;AAAA,QACN,WAAW,MAAM;AAAA,QACjB,gBAAgB,MAAM;AAAA,QACtB,UAAU,MAAM;AAAA,QAChB,IAAI,CAAC,YAAY,OAAO,YAAY,kBAAkB,OAAO,IAAI;AAAA,UAAG;AAAA,QACpE,IAAI,MAAM,SAAS,OAAO;AAAA,UACzB,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,UAC1C,OAAO,aAAa,EAAE;AAAA,YAAG,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,UACrE,IAAI,OAAO,IAAI;AAAA,YACd,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,YAC5C,IAAI,CAAC,UAAU,EAAE;AAAA,cAAG,WAAW,OAAO,yFAAyF;AAAA,YAC/H,IAAI,eAAe;AAAA,cAClB,iBAAiB,OAAO,SAAS,iBAAiB,QAAQ,SAAS,MAAM,UAAU,eAAe,OAAO;AAAA,cACzG,SAAS,UAAU,YAAY;AAAA,YAChC;AAAA,YACA,WAAW;AAAA,YACX,gBAAgB;AAAA,YAChB,eAAe;AAAA,YACf,SAAS,MAAM;AAAA,YACf,UAAU,MAAM;AAAA,UACjB,EAAO,SAAI;AAAA,YAAU,WAAW,OAAO,0DAA0D;AAAA,UAC5F;AAAA,YACJ,MAAM,MAAM;AAAA,YACZ,MAAM,SAAS;AAAA,YACf,OAAO;AAAA;AAAA,QAET,EAAO,SAAI;AAAA,UAAU,WAAW,OAAO,gFAAgF;AAAA,QAClH;AAAA,UACJ,MAAM,MAAM;AAAA,UACZ,MAAM,SAAS;AAAA,UACf,OAAO;AAAA;AAAA;AAAA,MAGT,IAAI,MAAM,SAAS,SAAS,MAAM,aAAa,YAAY;AAAA,QAC1D,IAAI,eAAe;AAAA,UAClB,WAAW,MAAM;AAAA,UACjB,gBAAgB,MAAM;AAAA,UACtB,UAAU,MAAM;AAAA,QACjB;AAAA,QACA,IAAI,YAAY,OAAO,YAAY,mBAAmB,MAAM,YAAY;AAAA,UAAG,IAAI;AAAA,YAAe,UAAU,MAAM;AAAA,UACzG;AAAA,wBAAY,MAAM;AAAA,QACvB,IAAI,CAAC,eAAe;AAAA,UACnB,iBAAiB,OAAO,SAAS,iBAAiB,QAAQ,SAAS,WAAW,UAAU,eAAe,OAAO;AAAA,UAC9G,SAAS,UAAU,YAAY;AAAA,QAChC;AAAA,QACA,oBAAoB,OAAO,MAAM,EAAE;AAAA,QACnC,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,MAC3C;AAAA,MACA,KAAK,MAAM,SAAS,SAAS,MAAM,aAAa,eAAe,OAAO;AAAA,QAAG,WAAW,OAAO,oCAAoC;AAAA,MAC1H,SAAI,MAAM,aAAa;AAAA,QAAY;AAAA,IACzC;AAAA,IACA,IAAI;AAAA,MAAe,iBAAiB,OAAO,SAAS,iBAAiB,QAAQ,SAAS,MAAM,UAAU,eAAe,OAAO;AAAA,IAC5H,IAAI,UAAU;AAAA,MACb,MAAM,MAAM;AAAA,MACZ,MAAM,SAAS;AAAA,MACf,MAAM,OAAO;AAAA,MACb,MAAM,SAAS;AAAA,IAChB;AAAA,IACA,OAAO;AAAA;AAAA,EAER,SAAS,eAAe,CAAC,OAAO;AAAA,IAC/B,IAAI,aAAa;AAAA,IACjB,IAAI,UAAU;AAAA,IACd,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,IAC9C,IAAI,OAAO;AAAA,MAAI,OAAO;AAAA,IACtB,IAAI,MAAM,QAAQ;AAAA,MAAM,WAAW,OAAO,+BAA+B;AAAA,IACzE,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,IAC5C,IAAI,OAAO,IAAI;AAAA,MACd,aAAa;AAAA,MACb,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,IAC7C,EAAO,SAAI,OAAO,IAAI;AAAA,MACrB,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,IAC7C,EAAO;AAAA,kBAAY;AAAA,IACnB,IAAI,YAAY,MAAM;AAAA,IACtB,IAAI,YAAY;AAAA,MACf;AAAA,QACC,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,aACtC,OAAO,KAAK,OAAO;AAAA,MAC1B,IAAI,MAAM,WAAW,MAAM,QAAQ;AAAA,QAClC,UAAU,MAAM,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,QACrD,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,MAC7C,EAAO;AAAA,mBAAW,OAAO,oDAAoD;AAAA,IAC9E,EAAO;AAAA,MACN,OAAO,OAAO,KAAK,CAAC,UAAU,EAAE,GAAG;AAAA,QAClC,IAAI,OAAO;AAAA,UAAI,IAAI,CAAC,SAAS;AAAA,YAC5B,YAAY,MAAM,MAAM,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC;AAAA,YAC/D,IAAI,CAAC,mBAAmB,KAAK,SAAS;AAAA,cAAG,WAAW,OAAO,iDAAiD;AAAA,YAC5G,UAAU;AAAA,YACV,YAAY,MAAM,WAAW;AAAA,UAC9B,EAAO;AAAA,uBAAW,OAAO,6CAA6C;AAAA,QACtE,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,MAC7C;AAAA,MACA,UAAU,MAAM,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,MACrD,IAAI,wBAAwB,KAAK,OAAO;AAAA,QAAG,WAAW,OAAO,qDAAqD;AAAA;AAAA,IAEnH,IAAI,WAAW,CAAC,gBAAgB,KAAK,OAAO;AAAA,MAAG,WAAW,OAAO,8CAA8C,OAAO;AAAA,IACtH,IAAI;AAAA,MACH,UAAU,mBAAmB,OAAO;AAAA,MACnC,OAAO,KAAK;AAAA,MACb,WAAW,OAAO,4BAA4B,OAAO;AAAA;AAAA,IAEtD,IAAI;AAAA,MAAY,MAAM,MAAM;AAAA,IACvB,SAAI,gBAAgB,KAAK,MAAM,QAAQ,SAAS;AAAA,MAAG,MAAM,MAAM,MAAM,OAAO,aAAa;AAAA,IACzF,SAAI,cAAc;AAAA,MAAK,MAAM,MAAM,MAAM;AAAA,IACzC,SAAI,cAAc;AAAA,MAAM,MAAM,MAAM,uBAAuB;AAAA,IAC3D;AAAA,iBAAW,OAAO,4BAA6B,YAAY,GAAI;AAAA,IACpE,OAAO;AAAA;AAAA,EAER,SAAS,kBAAkB,CAAC,OAAO;AAAA,IAClC,IAAI,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,IAC9C,IAAI,OAAO;AAAA,MAAI,OAAO;AAAA,IACtB,IAAI,MAAM,WAAW;AAAA,MAAM,WAAW,OAAO,mCAAmC;AAAA,IAChF,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,IAC5C,MAAM,YAAY,MAAM;AAAA,IACxB,OAAO,OAAO,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,gBAAgB,EAAE;AAAA,MAAG,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,IACvG,IAAI,MAAM,aAAa;AAAA,MAAW,WAAW,OAAO,4DAA4D;AAAA,IAChH,MAAM,SAAS,MAAM,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,IAC1D,OAAO;AAAA;AAAA,EAER,SAAS,SAAS,CAAC,OAAO;AAAA,IACzB,IAAI,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,IAC9C,IAAI,OAAO;AAAA,MAAI,OAAO;AAAA,IACtB,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,IAC5C,MAAM,YAAY,MAAM;AAAA,IACxB,OAAO,OAAO,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,gBAAgB,EAAE;AAAA,MAAG,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,IACvG,IAAI,MAAM,aAAa;AAAA,MAAW,WAAW,OAAO,2DAA2D;AAAA,IAC/G,MAAM,QAAQ,MAAM,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,IACzD,IAAI,CAAC,gBAAgB,KAAK,MAAM,WAAW,KAAK;AAAA,MAAG,WAAW,OAAO,yBAA0B,QAAQ,GAAI;AAAA,IAC3G,MAAM,SAAS,MAAM,UAAU;AAAA,IAC/B,oBAAoB,OAAO,MAAM,EAAE;AAAA,IACnC,OAAO;AAAA;AAAA,EAER,SAAS,+BAA+B,CAAC,OAAO,eAAe,YAAY,YAAY;AAAA,IACtF,MAAM,gBAAgB,cAAc,KAAK;AAAA,IACzC,uBAAuB,KAAK;AAAA,IAC5B,aAAa,OAAO,aAAa;AAAA,IACjC,MAAM,MAAM;AAAA,IACZ,MAAM,SAAS;AAAA,IACf,MAAM,OAAO;AAAA,IACb,MAAM,SAAS;AAAA,IACf,IAAI,iBAAiB,OAAO,YAAY,UAAU,KAAK,MAAM,SAAS,WAAW;AAAA,MAChF,wBAAwB,KAAK;AAAA,MAC7B,OAAO;AAAA,IACR;AAAA,IACA,0BAA0B,KAAK;AAAA,IAC/B,aAAa,OAAO,aAAa;AAAA,IACjC,OAAO;AAAA;AAAA,EAER,SAAS,WAAW,CAAC,OAAO,cAAc,aAAa,aAAa,cAAc;AAAA,IACjF,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI,eAAe;AAAA,IACnB,IAAI,YAAY;AAAA,IAChB,IAAI,aAAa;AAAA,IACjB,IAAI,gBAAgB;AAAA,IACpB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI,MAAM,SAAS,MAAM;AAAA,MAAU,WAAW,OAAO,gCAAgC,MAAM,WAAW,GAAG;AAAA,IACzG,MAAM,SAAS;AAAA,IACf,IAAI,MAAM,aAAa;AAAA,MAAM,MAAM,SAAS,QAAQ,KAAK;AAAA,IACzD,MAAM,MAAM;AAAA,IACZ,MAAM,SAAS;AAAA,IACf,MAAM,OAAO;AAAA,IACb,MAAM,SAAS;AAAA,IACf,MAAM,mBAAmB,oBAAoB,wBAAwB,sBAAsB,eAAe,qBAAqB;AAAA,IAC/H,IAAI,aAAa;AAAA,MAChB,IAAI,oBAAoB,OAAO,MAAM,EAAE,GAAG;AAAA,QACzC,YAAY;AAAA,QACZ,IAAI,MAAM,aAAa;AAAA,UAAc,eAAe;AAAA,QAC/C,SAAI,MAAM,eAAe;AAAA,UAAc,eAAe;AAAA,QACtD,SAAI,MAAM,aAAa;AAAA,UAAc,eAAe;AAAA,MAC1D;AAAA,IACD;AAAA,IACA,IAAI,iBAAiB;AAAA,MAAG,OAAO,MAAM;AAAA,QACpC,MAAM,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,QAChD,MAAM,gBAAgB,cAAc,KAAK;AAAA,QACzC,IAAI,cAAc,OAAO,MAAM,MAAM,QAAQ,QAAQ,OAAO,MAAM,MAAM,WAAW;AAAA,UAAO;AAAA,QAC1F,IAAI,CAAC,gBAAgB,KAAK,KAAK,CAAC,mBAAmB,KAAK;AAAA,UAAG;AAAA,QAC3D,IAAI,kBAAkB;AAAA,UAAM,gBAAgB;AAAA,QAC5C,IAAI,oBAAoB,OAAO,MAAM,EAAE,GAAG;AAAA,UACzC,YAAY;AAAA,UACZ,wBAAwB;AAAA,UACxB,IAAI,MAAM,aAAa;AAAA,YAAc,eAAe;AAAA,UAC/C,SAAI,MAAM,eAAe;AAAA,YAAc,eAAe;AAAA,UACtD,SAAI,MAAM,aAAa;AAAA,YAAc,eAAe;AAAA,QAC1D,EAAO;AAAA,kCAAwB;AAAA,MAChC;AAAA,IACA,IAAI;AAAA,MAAuB,wBAAwB,aAAa;AAAA,IAChE,IAAI,iBAAiB,KAAK,sBAAsB,aAAa;AAAA,MAC5D,IAAI,oBAAoB,eAAe,qBAAqB;AAAA,QAAa,aAAa;AAAA,MACjF;AAAA,qBAAa,eAAe;AAAA,MACjC,cAAc,MAAM,WAAW,MAAM;AAAA,MACrC,IAAI,iBAAiB;AAAA,QAAG,IAAI,0BAA0B,kBAAkB,OAAO,WAAW,KAAK,iBAAiB,OAAO,aAAa,UAAU,MAAM,mBAAmB,OAAO,UAAU;AAAA,UAAG,aAAa;AAAA,QACnM;AAAA,UACJ,MAAM,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,UAChD,IAAI,kBAAkB,QAAQ,oBAAoB,CAAC,yBAAyB,OAAO,OAAO,OAAO,MAAM,gCAAgC,OAAO,eAAe,cAAc,WAAW,cAAc,WAAW,UAAU;AAAA,YAAG,aAAa;AAAA,UACpO,SAAI,qBAAqB,gBAAgB,OAAO,UAAU,KAAK,uBAAuB,OAAO,UAAU,KAAK,uBAAuB,OAAO,UAAU;AAAA,YAAG,aAAa;AAAA,UACpK,SAAI,UAAU,KAAK,GAAG;AAAA,YAC1B,aAAa;AAAA,YACb,IAAI,MAAM,QAAQ,QAAQ,MAAM,WAAW;AAAA,cAAM,WAAW,OAAO,2CAA2C;AAAA,UAC/G,EAAO,SAAI,gBAAgB,OAAO,YAAY,oBAAoB,WAAW,GAAG;AAAA,YAC/E,aAAa;AAAA,YACb,IAAI,MAAM,QAAQ;AAAA,cAAM,MAAM,MAAM;AAAA,UACrC;AAAA,UACA,IAAI,MAAM,WAAW;AAAA,YAAM,YAAY,OAAO,MAAM,QAAQ,MAAM,MAAM;AAAA;AAAA,MAEpE,SAAI,iBAAiB;AAAA,QAAG,aAAa,yBAAyB,kBAAkB,OAAO,WAAW;AAAA,IACxG;AAAA,IACA,IAAI,MAAM,QAAQ,MAAM;AAAA,MACvB,IAAI,MAAM,WAAW;AAAA,QAAM,YAAY,OAAO,MAAM,QAAQ,MAAM,MAAM;AAAA,IACzE,EAAO,SAAI,MAAM,QAAQ,KAAK;AAAA,MAC7B,IAAI,MAAM,WAAW,QAAQ,MAAM,SAAS;AAAA,QAAU,WAAW,OAAO,sEAAyE,MAAM,OAAO,GAAI;AAAA,MAClK,SAAS,YAAY,GAAG,eAAe,MAAM,cAAc,OAAQ,YAAY,cAAc,aAAa,GAAG;AAAA,QAC5G,OAAO,MAAM,cAAc;AAAA,QAC3B,IAAI,KAAK,QAAQ,MAAM,MAAM,GAAG;AAAA,UAC/B,MAAM,SAAS,KAAK,UAAU,MAAM,MAAM;AAAA,UAC1C,MAAM,MAAM,KAAK;AAAA,UACjB,IAAI,MAAM,WAAW;AAAA,YAAM,YAAY,OAAO,MAAM,QAAQ,MAAM,MAAM;AAAA,UACxE;AAAA,QACD;AAAA,MACD;AAAA,IACD,EAAO,SAAI,MAAM,QAAQ,KAAK;AAAA,MAC7B,IAAI,gBAAgB,KAAK,MAAM,QAAQ,MAAM,QAAQ,aAAa,MAAM,GAAG;AAAA,QAAG,OAAO,MAAM,QAAQ,MAAM,QAAQ,YAAY,MAAM;AAAA,MAC9H;AAAA,QACJ,OAAO;AAAA,QACP,MAAM,WAAW,MAAM,QAAQ,MAAM,MAAM,QAAQ;AAAA,QACnD,SAAS,YAAY,GAAG,eAAe,SAAS,OAAQ,YAAY,cAAc,aAAa;AAAA,UAAG,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,WAAW,IAAI,MAAM,MAAM,SAAS,WAAW,KAAK;AAAA,YACrL,OAAO,SAAS;AAAA,YAChB;AAAA,UACD;AAAA;AAAA,MAED,IAAI,CAAC;AAAA,QAAM,WAAW,OAAO,mBAAmB,MAAM,MAAM,GAAG;AAAA,MAC/D,IAAI,MAAM,WAAW,QAAQ,KAAK,SAAS,MAAM;AAAA,QAAM,WAAW,OAAO,kCAAkC,MAAM,MAAM,0BAA2B,KAAK,OAAO,aAAe,MAAM,OAAO,GAAI;AAAA,MAC9L,IAAI,CAAC,KAAK,QAAQ,MAAM,QAAQ,MAAM,GAAG;AAAA,QAAG,WAAW,OAAO,kCAAkC,MAAM,MAAM,gBAAgB;AAAA,MACvH;AAAA,QACJ,MAAM,SAAS,KAAK,UAAU,MAAM,QAAQ,MAAM,GAAG;AAAA,QACrD,IAAI,MAAM,WAAW;AAAA,UAAM,YAAY,OAAO,MAAM,QAAQ,MAAM,MAAM;AAAA;AAAA,IAE1E;AAAA,IACA,IAAI,MAAM,aAAa;AAAA,MAAM,MAAM,SAAS,SAAS,KAAK;AAAA,IAC1D,MAAM,SAAS;AAAA,IACf,OAAO,MAAM,QAAQ,QAAQ,MAAM,WAAW,QAAQ;AAAA;AAAA,EAEvD,SAAS,YAAY,CAAC,OAAO;AAAA,IAC5B,MAAM,gBAAgB,MAAM;AAAA,IAC5B,IAAI,gBAAgB;AAAA,IACpB,IAAI;AAAA,IACJ,MAAM,UAAU;AAAA,IAChB,MAAM,kBAAkB,MAAM;AAAA,IAC9B,MAAM,SAAS,OAAO,OAAO,IAAI;AAAA,IACjC,MAAM,YAAY,OAAO,OAAO,IAAI;AAAA,IACpC,QAAQ,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ,OAAO,GAAG;AAAA,MAC3D,oBAAoB,OAAO,MAAM,EAAE;AAAA,MACnC,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,MAC1C,IAAI,MAAM,aAAa,KAAK,OAAO;AAAA,QAAI;AAAA,MACvC,gBAAgB;AAAA,MAChB,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,MAC5C,IAAI,YAAY,MAAM;AAAA,MACtB,OAAO,OAAO,KAAK,CAAC,UAAU,EAAE;AAAA,QAAG,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,MAC/E,MAAM,gBAAgB,MAAM,MAAM,MAAM,WAAW,MAAM,QAAQ;AAAA,MACjE,MAAM,gBAAgB,CAAC;AAAA,MACvB,IAAI,cAAc,SAAS;AAAA,QAAG,WAAW,OAAO,8DAA8D;AAAA,MAC9G,OAAO,OAAO,GAAG;AAAA,QAChB,OAAO,aAAa,EAAE;AAAA,UAAG,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,QACrE,IAAI,OAAO,IAAI;AAAA,UACd;AAAA,YACC,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,iBACtC,OAAO,KAAK,CAAC,MAAM,EAAE;AAAA,UAC5B;AAAA,QACD;AAAA,QACA,IAAI,MAAM,EAAE;AAAA,UAAG;AAAA,QACf,YAAY,MAAM;AAAA,QAClB,OAAO,OAAO,KAAK,CAAC,UAAU,EAAE;AAAA,UAAG,KAAK,MAAM,MAAM,WAAW,EAAE,MAAM,QAAQ;AAAA,QAC/E,cAAc,KAAK,MAAM,MAAM,MAAM,WAAW,MAAM,QAAQ,CAAC;AAAA,MAChE;AAAA,MACA,IAAI,OAAO;AAAA,QAAG,cAAc,KAAK;AAAA,MACjC,IAAI,gBAAgB,KAAK,mBAAmB,aAAa;AAAA,QAAG,kBAAkB,eAAe,OAAO,eAAe,aAAa;AAAA,MAC3H;AAAA,qBAAa,OAAO,iCAAkC,gBAAgB,GAAI;AAAA,IAChF;AAAA,IACA,oBAAoB,OAAO,MAAM,EAAE;AAAA,IACnC,IAAI,MAAM,eAAe,KAAK,MAAM,MAAM,WAAW,MAAM,QAAQ,MAAM,MAAM,MAAM,MAAM,WAAW,MAAM,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,WAAW,MAAM,WAAW,CAAC,MAAM,IAAI;AAAA,MACtL,MAAM,YAAY;AAAA,MAClB,oBAAoB,OAAO,MAAM,EAAE;AAAA,IACpC,EAAO,SAAI;AAAA,MAAe,WAAW,OAAO,iCAAiC;AAAA,IAC7E,YAAY,OAAO,MAAM,aAAa,GAAG,mBAAmB,OAAO,IAAI;AAAA,IACvE,oBAAoB,OAAO,MAAM,EAAE;AAAA,IACnC,IAAI,MAAM,mBAAmB,8BAA8B,KAAK,MAAM,MAAM,MAAM,eAAe,MAAM,QAAQ,CAAC;AAAA,MAAG,aAAa,OAAO,kDAAkD;AAAA,IACzL,MAAM,UAAU,KAAK,MAAM,MAAM;AAAA,IACjC,IAAI,MAAM,aAAa,MAAM,aAAa,sBAAsB,KAAK,GAAG;AAAA,MACvE,IAAI,MAAM,MAAM,WAAW,MAAM,QAAQ,MAAM,IAAI;AAAA,QAClD,MAAM,YAAY;AAAA,QAClB,oBAAoB,OAAO,MAAM,EAAE;AAAA,MACpC;AAAA,MACA;AAAA,IACD;AAAA,IACA,IAAI,MAAM,WAAW,MAAM,SAAS;AAAA,MAAG,WAAW,OAAO,uDAAuD;AAAA;AAAA,EAEjH,SAAS,aAAa,CAAC,OAAO,SAAS;AAAA,IACtC,QAAQ,OAAO,KAAK;AAAA,IACpB,UAAU,WAAW,CAAC;AAAA,IACtB,IAAI,MAAM,WAAW,GAAG;AAAA,MACvB,IAAI,MAAM,WAAW,MAAM,SAAS,CAAC,MAAM,MAAM,MAAM,WAAW,MAAM,SAAS,CAAC,MAAM;AAAA,QAAI,SAAS;AAAA;AAAA,MACrG,IAAI,MAAM,WAAW,CAAC,MAAM;AAAA,QAAO,QAAQ,MAAM,MAAM,CAAC;AAAA,IACzD;AAAA,IACA,MAAM,QAAQ,IAAI,MAAM,OAAO,OAAO;AAAA,IACtC,MAAM,UAAU,MAAM,QAAQ,MAAI;AAAA,IAClC,IAAI,YAAY,IAAI;AAAA,MACnB,MAAM,WAAW;AAAA,MACjB,WAAW,OAAO,mCAAmC;AAAA,IACtD;AAAA,IACA,MAAM,SAAS;AAAA,IACf,OAAO,MAAM,MAAM,WAAW,MAAM,QAAQ,MAAM,IAAI;AAAA,MACrD,MAAM,cAAc;AAAA,MACpB,MAAM,YAAY;AAAA,IACnB;AAAA,IACA,OAAO,MAAM,WAAW,MAAM,SAAS;AAAA,MAAG,aAAa,KAAK;AAAA,IAC5D,OAAO,MAAM;AAAA;AAAA,EAEd,SAAS,OAAO,CAAC,OAAO,UAAU,SAAS;AAAA,IAC1C,IAAI,aAAa,QAAQ,OAAO,aAAa,YAAY,OAAO,YAAY,aAAa;AAAA,MACxF,UAAU;AAAA,MACV,WAAW;AAAA,IACZ;AAAA,IACA,MAAM,YAAY,cAAc,OAAO,OAAO;AAAA,IAC9C,IAAI,OAAO,aAAa;AAAA,MAAY,OAAO;AAAA,IAC3C,SAAS,QAAQ,GAAG,SAAS,UAAU,OAAQ,QAAQ,QAAQ,SAAS;AAAA,MAAG,SAAS,UAAU,MAAM;AAAA;AAAA,EAErG,SAAS,IAAI,CAAC,OAAO,SAAS;AAAA,IAC7B,MAAM,YAAY,cAAc,OAAO,OAAO;AAAA,IAC9C,IAAI,UAAU,WAAW;AAAA,MAAG;AAAA,IACvB,SAAI,UAAU,WAAW;AAAA,MAAG,OAAO,UAAU;AAAA,IAClD,MAAM,IAAI,cAAc,0DAA0D;AAAA;AAAA,EAEnF,OAAO,QAAQ,UAAU;AAAA,EACzB,OAAO,QAAQ,OAAO;AAAA,CACrB;AAGF,IAAI,iCAAiC,cAAe,CAAC,SAAS,WAAW;AAAA,EACxE,IAAI,SAAS,eAAe;AAAA,EAC5B,IAAI,gBAAgB,kBAAkB;AAAA,EACtC,IAAI,iBAAiB,gBAAgB;AAAA,EACrC,IAAI,YAAY,OAAO,UAAU;AAAA,EACjC,IAAI,kBAAkB,OAAO,UAAU;AAAA,EACvC,IAAI,WAAW;AAAA,EACf,IAAI,WAAW;AAAA,EACf,IAAI,iBAAiB;AAAA,EACrB,IAAI,uBAAuB;AAAA,EAC3B,IAAI,aAAa;AAAA,EACjB,IAAI,mBAAmB;AAAA,EACvB,IAAI,oBAAoB;AAAA,EACxB,IAAI,aAAa;AAAA,EACjB,IAAI,eAAe;AAAA,EACnB,IAAI,iBAAiB;AAAA,EACrB,IAAI,oBAAoB;AAAA,EACxB,IAAI,gBAAgB;AAAA,EACpB,IAAI,aAAa;AAAA,EACjB,IAAI,aAAa;AAAA,EACjB,IAAI,aAAa;AAAA,EACjB,IAAI,cAAc;AAAA,EAClB,IAAI,oBAAoB;AAAA,EACxB,IAAI,gBAAgB;AAAA,EACpB,IAAI,qBAAqB;AAAA,EACzB,IAAI,2BAA2B;AAAA,EAC/B,IAAI,4BAA4B;AAAA,EAChC,IAAI,oBAAoB;AAAA,EACxB,IAAI,0BAA0B;AAAA,EAC9B,IAAI,qBAAqB;AAAA,EACzB,IAAI,2BAA2B;AAAA,EAC/B,IAAI,mBAAmB,CAAC;AAAA,EACxB,iBAAiB,KAAK;AAAA,EACtB,iBAAiB,KAAK;AAAA,EACtB,iBAAiB,KAAK;AAAA,EACtB,iBAAiB,KAAK;AAAA,EACtB,iBAAiB,MAAM;AAAA,EACvB,iBAAiB,MAAM;AAAA,EACvB,iBAAiB,MAAM;AAAA,EACvB,iBAAiB,MAAM;AAAA,EACvB,iBAAiB,MAAM;AAAA,EACvB,iBAAiB,MAAM;AAAA,EACvB,iBAAiB,MAAM;AAAA,EACvB,iBAAiB,OAAO;AAAA,EACxB,iBAAiB,OAAO;AAAA,EACxB,iBAAiB,QAAQ;AAAA,EACzB,iBAAiB,QAAQ;AAAA,EACzB,IAAI,6BAA6B;AAAA,IAChC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,IAAI,2BAA2B;AAAA,EAC/B,SAAS,eAAe,CAAC,QAAQ,KAAK;AAAA,IACrC,IAAI,QAAQ;AAAA,MAAM,OAAO,CAAC;AAAA,IAC1B,MAAM,SAAS,CAAC;AAAA,IAChB,MAAM,OAAO,OAAO,KAAK,GAAG;AAAA,IAC5B,SAAS,QAAQ,GAAG,SAAS,KAAK,OAAQ,QAAQ,QAAQ,SAAS,GAAG;AAAA,MACrE,IAAI,MAAM,KAAK;AAAA,MACf,IAAI,QAAQ,OAAO,IAAI,IAAI;AAAA,MAC3B,IAAI,IAAI,MAAM,GAAG,CAAC,MAAM;AAAA,QAAM,MAAM,uBAAuB,IAAI,MAAM,CAAC;AAAA,MACtE,MAAM,OAAO,OAAO,gBAAgB,YAAY;AAAA,MAChD,IAAI,QAAQ,gBAAgB,KAAK,KAAK,cAAc,KAAK;AAAA,QAAG,QAAQ,KAAK,aAAa;AAAA,MACtF,OAAO,OAAO;AAAA,IACf;AAAA,IACA,OAAO;AAAA;AAAA,EAER,SAAS,SAAS,CAAC,WAAW;AAAA,IAC7B,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM,SAAS,UAAU,SAAS,EAAE,EAAE,YAAY;AAAA,IAClD,IAAI,aAAa,KAAK;AAAA,MACrB,SAAS;AAAA,MACT,SAAS;AAAA,IACV,EAAO,SAAI,aAAa,OAAO;AAAA,MAC9B,SAAS;AAAA,MACT,SAAS;AAAA,IACV,EAAO,SAAI,aAAa,YAAY;AAAA,MACnC,SAAS;AAAA,MACT,SAAS;AAAA,IACV,EAAO;AAAA,YAAM,IAAI,cAAc,+DAA+D;AAAA,IAC9F,OAAO,OAAO,SAAS,OAAO,OAAO,KAAK,SAAS,OAAO,MAAM,IAAI;AAAA;AAAA,EAErE,IAAI,sBAAsB;AAAA,EAC1B,IAAI,sBAAsB;AAAA,EAC1B,SAAS,KAAK,CAAC,SAAS;AAAA,IACvB,KAAK,SAAS,QAAQ,aAAa;AAAA,IACnC,KAAK,SAAS,KAAK,IAAI,GAAG,QAAQ,aAAa,CAAC;AAAA,IAChD,KAAK,gBAAgB,QAAQ,oBAAoB;AAAA,IACjD,KAAK,cAAc,QAAQ,kBAAkB;AAAA,IAC7C,KAAK,YAAY,OAAO,UAAU,QAAQ,YAAY,IAAI,KAAK,QAAQ;AAAA,IACvE,KAAK,WAAW,gBAAgB,KAAK,QAAQ,QAAQ,aAAa,IAAI;AAAA,IACtE,KAAK,WAAW,QAAQ,eAAe;AAAA,IACvC,KAAK,YAAY,QAAQ,gBAAgB;AAAA,IACzC,KAAK,SAAS,QAAQ,aAAa;AAAA,IACnC,KAAK,eAAe,QAAQ,mBAAmB;AAAA,IAC/C,KAAK,eAAe,QAAQ,mBAAmB;AAAA,IAC/C,KAAK,cAAc,QAAQ,mBAAmB,MAAO,sBAAsB;AAAA,IAC3E,KAAK,cAAc,QAAQ,kBAAkB;AAAA,IAC7C,KAAK,WAAW,OAAO,QAAQ,gBAAgB,aAAa,QAAQ,cAAc;AAAA,IAClF,KAAK,gBAAgB,KAAK,OAAO;AAAA,IACjC,KAAK,gBAAgB,KAAK,OAAO;AAAA,IACjC,KAAK,MAAM;AAAA,IACX,KAAK,SAAS;AAAA,IACd,KAAK,aAAa,CAAC;AAAA,IACnB,KAAK,iBAAiB;AAAA;AAAA,EAEvB,SAAS,YAAY,CAAC,QAAQ,QAAQ;AAAA,IACrC,MAAM,MAAM,OAAO,OAAO,KAAK,MAAM;AAAA,IACrC,IAAI,WAAW;AAAA,IACf,IAAI,SAAS;AAAA,IACb,MAAM,SAAS,OAAO;AAAA,IACtB,OAAO,WAAW,QAAQ;AAAA,MACzB,IAAI;AAAA,MACJ,MAAM,OAAO,OAAO,QAAQ;AAAA,GAAM,QAAQ;AAAA,MAC1C,IAAI,SAAS,IAAI;AAAA,QAChB,OAAO,OAAO,MAAM,QAAQ;AAAA,QAC5B,WAAW;AAAA,MACZ,EAAO;AAAA,QACN,OAAO,OAAO,MAAM,UAAU,OAAO,CAAC;AAAA,QACtC,WAAW,OAAO;AAAA;AAAA,MAEnB,IAAI,KAAK,UAAU,SAAS;AAAA;AAAA,QAAM,UAAU;AAAA,MAC5C,UAAU;AAAA,IACX;AAAA,IACA,OAAO;AAAA;AAAA,EAER,SAAS,gBAAgB,CAAC,OAAO,OAAO;AAAA,IACvC,OAAO;AAAA,IAAO,OAAO,OAAO,KAAK,MAAM,SAAS,KAAK;AAAA;AAAA,EAEtD,SAAS,qBAAqB,CAAC,OAAO,KAAK;AAAA,IAC1C,SAAS,QAAQ,GAAG,SAAS,MAAM,cAAc,OAAQ,QAAQ,QAAQ,SAAS;AAAA,MAAG,IAAI,MAAM,cAAc,OAAO,QAAQ,GAAG;AAAA,QAAG,OAAO;AAAA,IACzI,OAAO;AAAA;AAAA,EAER,SAAS,YAAY,CAAC,GAAG;AAAA,IACxB,OAAO,MAAM,cAAc,MAAM;AAAA;AAAA,EAElC,SAAS,WAAW,CAAC,GAAG;AAAA,IACvB,OAAO,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,SAAS,MAAM,QAAQ,MAAM,QAAQ,KAAK,SAAS,KAAK,SAAS,MAAM,YAAY,KAAK,SAAS,KAAK;AAAA;AAAA,EAEtJ,SAAS,oBAAoB,CAAC,GAAG;AAAA,IAChC,OAAO,YAAY,CAAC,KAAK,MAAM,YAAY,MAAM,wBAAwB,MAAM;AAAA;AAAA,EAEhF,SAAS,WAAW,CAAC,GAAG,MAAM,SAAS;AAAA,IACtC,MAAM,wBAAwB,qBAAqB,CAAC;AAAA,IACpD,MAAM,YAAY,yBAAyB,CAAC,aAAa,CAAC;AAAA,IAC1D,QAAQ,UAAU,wBAAwB,yBAAyB,MAAM,cAAc,MAAM,4BAA4B,MAAM,6BAA6B,MAAM,2BAA2B,MAAM,6BAA6B,MAAM,cAAc,EAAE,SAAS,cAAc,CAAC,cAAc,qBAAqB,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,MAAM,cAAc,SAAS,cAAc;AAAA;AAAA,EAE7X,SAAS,gBAAgB,CAAC,GAAG;AAAA,IAC5B,OAAO,YAAY,CAAC,KAAK,MAAM,YAAY,CAAC,aAAa,CAAC,KAAK,MAAM,cAAc,MAAM,iBAAiB,MAAM,cAAc,MAAM,cAAc,MAAM,4BAA4B,MAAM,6BAA6B,MAAM,2BAA2B,MAAM,4BAA4B,MAAM,cAAc,MAAM,kBAAkB,MAAM,iBAAiB,MAAM,oBAAoB,MAAM,sBAAsB,MAAM,eAAe,MAAM,qBAAqB,MAAM,qBAAqB,MAAM,qBAAqB,MAAM,gBAAgB,MAAM,sBAAsB,MAAM;AAAA;AAAA,EAEljB,SAAS,eAAe,CAAC,GAAG;AAAA,IAC3B,OAAO,CAAC,aAAa,CAAC,KAAK,MAAM;AAAA;AAAA,EAElC,SAAS,WAAW,CAAC,QAAQ,KAAK;AAAA,IACjC,MAAM,QAAQ,OAAO,WAAW,GAAG;AAAA,IACnC,IAAI;AAAA,IACJ,IAAI,SAAS,SAAS,SAAS,SAAS,MAAM,IAAI,OAAO,QAAQ;AAAA,MAChE,SAAS,OAAO,WAAW,MAAM,CAAC;AAAA,MAClC,IAAI,UAAU,SAAS,UAAU;AAAA,QAAO,QAAQ,QAAQ,SAAS,OAAO,SAAS,QAAQ;AAAA,IAC1F;AAAA,IACA,OAAO;AAAA;AAAA,EAER,SAAS,mBAAmB,CAAC,QAAQ;AAAA,IACpC,OAAO,QAAQ,KAAK,MAAM;AAAA;AAAA,EAE3B,IAAI,cAAc;AAAA,EAClB,IAAI,eAAe;AAAA,EACnB,IAAI,gBAAgB;AAAA,EACpB,IAAI,eAAe;AAAA,EACnB,IAAI,eAAe;AAAA,EACnB,SAAS,iBAAiB,CAAC,QAAQ,gBAAgB,gBAAgB,WAAW,mBAAmB,aAAa,aAAa,SAAS;AAAA,IACnI,IAAI;AAAA,IACJ,IAAI,OAAO;AAAA,IACX,IAAI,WAAW;AAAA,IACf,IAAI,eAAe;AAAA,IACnB,IAAI,kBAAkB;AAAA,IACtB,MAAM,mBAAmB,cAAc;AAAA,IACvC,IAAI,oBAAoB;AAAA,IACxB,IAAI,QAAQ,iBAAiB,YAAY,QAAQ,CAAC,CAAC,KAAK,gBAAgB,YAAY,QAAQ,OAAO,SAAS,CAAC,CAAC;AAAA,IAC9G,IAAI,kBAAkB;AAAA,MAAa,KAAK,IAAI,EAAG,IAAI,OAAO,QAAQ,QAAQ,QAAQ,KAAK,IAAI,KAAK;AAAA,QAC/F,OAAO,YAAY,QAAQ,CAAC;AAAA,QAC5B,IAAI,CAAC,YAAY,IAAI;AAAA,UAAG,OAAO;AAAA,QAC/B,QAAQ,SAAS,YAAY,MAAM,UAAU,OAAO;AAAA,QACpD,WAAW;AAAA,MACZ;AAAA,IACK;AAAA,MACJ,KAAK,IAAI,EAAG,IAAI,OAAO,QAAQ,QAAQ,QAAQ,KAAK,IAAI,KAAK;AAAA,QAC5D,OAAO,YAAY,QAAQ,CAAC;AAAA,QAC5B,IAAI,SAAS,gBAAgB;AAAA,UAC5B,eAAe;AAAA,UACf,IAAI,kBAAkB;AAAA,YACrB,kBAAkB,mBAAmB,IAAI,oBAAoB,IAAI,aAAa,OAAO,oBAAoB,OAAO;AAAA,YAChH,oBAAoB;AAAA,UACrB;AAAA,QACD,EAAO,SAAI,CAAC,YAAY,IAAI;AAAA,UAAG,OAAO;AAAA,QACtC,QAAQ,SAAS,YAAY,MAAM,UAAU,OAAO;AAAA,QACpD,WAAW;AAAA,MACZ;AAAA,MACA,kBAAkB,mBAAmB,oBAAoB,IAAI,oBAAoB,IAAI,aAAa,OAAO,oBAAoB,OAAO;AAAA;AAAA,IAErI,IAAI,CAAC,gBAAgB,CAAC,iBAAiB;AAAA,MACtC,IAAI,SAAS,CAAC,eAAe,CAAC,kBAAkB,MAAM;AAAA,QAAG,OAAO;AAAA,MAChE,OAAO,gBAAgB,sBAAsB,eAAe;AAAA,IAC7D;AAAA,IACA,IAAI,iBAAiB,KAAK,oBAAoB,MAAM;AAAA,MAAG,OAAO;AAAA,IAC9D,IAAI,CAAC;AAAA,MAAa,OAAO,kBAAkB,eAAe;AAAA,IAC1D,OAAO,gBAAgB,sBAAsB,eAAe;AAAA;AAAA,EAE7D,SAAS,WAAW,CAAC,OAAO,QAAQ,OAAO,OAAO,SAAS;AAAA,IAC1D,MAAM,OAAO,QAAQ,GAAG;AAAA,MACvB,IAAI,OAAO,WAAW;AAAA,QAAG,OAAO,MAAM,gBAAgB,sBAAsB,OAAS;AAAA,MACrF,IAAI,CAAC,MAAM,cAAc;AAAA,QACxB,IAAI,2BAA2B,QAAQ,MAAM,MAAM,MAAM,yBAAyB,KAAK,MAAM;AAAA,UAAG,OAAO,MAAM,gBAAgB,sBAAsB,MAAO,SAAS,MAAO,MAAM,SAAS;AAAA,MAC1L;AAAA,MACA,MAAM,SAAS,MAAM,SAAS,KAAK,IAAI,GAAG,KAAK;AAAA,MAC/C,MAAM,YAAY,MAAM,cAAc,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,MAAM,WAAW,EAAE,GAAG,MAAM,YAAY,MAAM;AAAA,MAChH,MAAM,iBAAiB,SAAS,MAAM,YAAY,MAAM,SAAS,MAAM;AAAA,MACvE,SAAS,aAAa,CAAC,SAAQ;AAAA,QAC9B,OAAO,sBAAsB,OAAO,OAAM;AAAA;AAAA,MAE3C,QAAQ,kBAAkB,QAAQ,gBAAgB,MAAM,QAAQ,WAAW,eAAe,MAAM,aAAa,MAAM,eAAe,CAAC,OAAO,OAAO;AAAA,aAC3I;AAAA,UAAa,OAAO;AAAA,aACpB;AAAA,UAAc,OAAO,MAAM,OAAO,QAAQ,MAAM,IAAI,IAAI;AAAA,aACxD;AAAA,UAAe,OAAO,MAAM,YAAY,QAAQ,MAAM,MAAM,IAAI,kBAAkB,aAAa,QAAQ,MAAM,CAAC;AAAA,aAC9G;AAAA,UAAc,OAAO,MAAM,YAAY,QAAQ,MAAM,MAAM,IAAI,kBAAkB,aAAa,WAAW,QAAQ,SAAS,GAAG,MAAM,CAAC;AAAA,aACpI;AAAA,UAAc,OAAO,MAAO,aAAa,QAAQ,SAAS,IAAI;AAAA;AAAA,UAC1D,MAAM,IAAI,cAAc,wCAAwC;AAAA;AAAA,MAEzE;AAAA;AAAA,EAEH,SAAS,WAAW,CAAC,QAAQ,gBAAgB;AAAA,IAC5C,MAAM,kBAAkB,oBAAoB,MAAM,IAAI,OAAO,cAAc,IAAI;AAAA,IAC/E,MAAM,OAAO,OAAO,OAAO,SAAS,OAAO;AAAA;AAAA,IAC3C,OAAO,mBAAmB,SAAS,OAAO,OAAO,SAAS,OAAO;AAAA,KAAQ,WAAW;AAAA,KAAQ,MAAM,OAAO,KAAK,OAAO;AAAA;AAAA;AAAA,EAEtH,SAAS,iBAAiB,CAAC,QAAQ;AAAA,IAClC,OAAO,OAAO,OAAO,SAAS,OAAO;AAAA,IAAO,OAAO,MAAM,GAAG,EAAE,IAAI;AAAA;AAAA,EAEnE,SAAS,UAAU,CAAC,QAAQ,OAAO;AAAA,IAClC,MAAM,SAAS;AAAA,IACf,IAAI,SAAS,QAAQ,GAAG;AAAA,MACvB,IAAI,SAAS,OAAO,QAAQ;AAAA,CAAI;AAAA,MAChC,SAAS,WAAW,KAAK,SAAS,OAAO;AAAA,MACzC,OAAO,YAAY;AAAA,MACnB,OAAO,SAAS,OAAO,MAAM,GAAG,MAAM,GAAG,KAAK;AAAA,MAC7C;AAAA,IACF,IAAI,mBAAmB,OAAO,OAAO;AAAA,KAAQ,OAAO,OAAO;AAAA,IAC3D,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,OAAO,QAAQ,OAAO,KAAK,MAAM,GAAG;AAAA,MACnC,MAAM,SAAS,MAAM;AAAA,MACrB,MAAM,OAAO,MAAM;AAAA,MACnB,eAAe,KAAK,OAAO;AAAA,MAC3B,UAAU,UAAU,CAAC,oBAAoB,CAAC,gBAAgB,SAAS,KAAK;AAAA,IAAO,MAAM,SAAS,MAAM,KAAK;AAAA,MACzG,mBAAmB;AAAA,IACpB;AAAA,IACA,OAAO;AAAA;AAAA,EAER,SAAS,QAAQ,CAAC,MAAM,OAAO;AAAA,IAC9B,IAAI,SAAS,MAAM,KAAK,OAAO;AAAA,MAAK,OAAO;AAAA,IAC3C,MAAM,UAAU;AAAA,IAChB,IAAI;AAAA,IACJ,IAAI,QAAQ;AAAA,IACZ,IAAI;AAAA,IACJ,IAAI,OAAO;AAAA,IACX,IAAI,OAAO;AAAA,IACX,IAAI,SAAS;AAAA,IACb,OAAO,QAAQ,QAAQ,KAAK,IAAI,GAAG;AAAA,MAClC,OAAO,MAAM;AAAA,MACb,IAAI,OAAO,QAAQ,OAAO;AAAA,QACzB,MAAM,OAAO,QAAQ,OAAO;AAAA,QAC5B,UAAU;AAAA,IAAO,KAAK,MAAM,OAAO,GAAG;AAAA,QACtC,QAAQ,MAAM;AAAA,MACf;AAAA,MACA,OAAO;AAAA,IACR;AAAA,IACA,UAAU;AAAA;AAAA,IACV,IAAI,KAAK,SAAS,QAAQ,SAAS,OAAO;AAAA,MAAO,UAAU,KAAK,MAAM,OAAO,IAAI,IAAI;AAAA,IAAO,KAAK,MAAM,OAAO,CAAC;AAAA,IAC1G;AAAA,gBAAU,KAAK,MAAM,KAAK;AAAA,IAC/B,OAAO,OAAO,MAAM,CAAC;AAAA;AAAA,EAEtB,SAAS,YAAY,CAAC,QAAQ;AAAA,IAC7B,IAAI,SAAS;AAAA,IACb,IAAI,OAAO;AAAA,IACX,SAAS,IAAI,EAAG,IAAI,OAAO,QAAQ,QAAQ,QAAQ,KAAK,IAAI,KAAK;AAAA,MAChE,OAAO,YAAY,QAAQ,CAAC;AAAA,MAC5B,MAAM,YAAY,iBAAiB;AAAA,MACnC,IAAI,CAAC,aAAa,YAAY,IAAI,GAAG;AAAA,QACpC,UAAU,OAAO;AAAA,QACjB,IAAI,QAAQ;AAAA,UAAO,UAAU,OAAO,IAAI;AAAA,MACzC,EAAO;AAAA,kBAAU,aAAa,UAAU,IAAI;AAAA,IAC7C;AAAA,IACA,OAAO;AAAA;AAAA,EAER,SAAS,iBAAiB,CAAC,OAAO,OAAO,QAAQ;AAAA,IAChD,IAAI,UAAU;AAAA,IACd,MAAM,OAAO,MAAM;AAAA,IACnB,SAAS,QAAQ,GAAG,SAAS,OAAO,OAAQ,QAAQ,QAAQ,SAAS,GAAG;AAAA,MACvE,IAAI,QAAQ,OAAO;AAAA,MACnB,IAAI,MAAM;AAAA,QAAU,QAAQ,MAAM,SAAS,KAAK,QAAQ,OAAO,KAAK,GAAG,KAAK;AAAA,MAC5E,IAAI,UAAU,OAAO,OAAO,OAAO,OAAO,KAAK,KAAK,OAAO,UAAU,eAAe,UAAU,OAAO,OAAO,MAAM,OAAO,KAAK,GAAG;AAAA,QAChI,IAAI,YAAY;AAAA,UAAI,WAAW,OAAO,CAAC,MAAM,eAAe,MAAM;AAAA,QAClE,WAAW,MAAM;AAAA,MAClB;AAAA,IACD;AAAA,IACA,MAAM,MAAM;AAAA,IACZ,MAAM,OAAO,MAAM,UAAU;AAAA;AAAA,EAE9B,SAAS,kBAAkB,CAAC,OAAO,OAAO,QAAQ,SAAS;AAAA,IAC1D,IAAI,UAAU;AAAA,IACd,MAAM,OAAO,MAAM;AAAA,IACnB,SAAS,QAAQ,GAAG,SAAS,OAAO,OAAQ,QAAQ,QAAQ,SAAS,GAAG;AAAA,MACvE,IAAI,QAAQ,OAAO;AAAA,MACnB,IAAI,MAAM;AAAA,QAAU,QAAQ,MAAM,SAAS,KAAK,QAAQ,OAAO,KAAK,GAAG,KAAK;AAAA,MAC5E,IAAI,UAAU,OAAO,QAAQ,GAAG,OAAO,MAAM,MAAM,OAAO,IAAI,KAAK,OAAO,UAAU,eAAe,UAAU,OAAO,QAAQ,GAAG,MAAM,MAAM,MAAM,OAAO,IAAI,GAAG;AAAA,QAC9J,IAAI,CAAC,WAAW,YAAY;AAAA,UAAI,WAAW,iBAAiB,OAAO,KAAK;AAAA,QACxE,IAAI,MAAM,QAAQ,mBAAmB,MAAM,KAAK,WAAW,CAAC;AAAA,UAAG,WAAW;AAAA,QACrE;AAAA,qBAAW;AAAA,QAChB,WAAW,MAAM;AAAA,MAClB;AAAA,IACD;AAAA,IACA,MAAM,MAAM;AAAA,IACZ,MAAM,OAAO,WAAW;AAAA;AAAA,EAEzB,SAAS,gBAAgB,CAAC,OAAO,OAAO,QAAQ;AAAA,IAC/C,IAAI,UAAU;AAAA,IACd,MAAM,OAAO,MAAM;AAAA,IACnB,MAAM,gBAAgB,OAAO,KAAK,MAAM;AAAA,IACxC,SAAS,QAAQ,GAAG,SAAS,cAAc,OAAQ,QAAQ,QAAQ,SAAS,GAAG;AAAA,MAC9E,IAAI,aAAa;AAAA,MACjB,IAAI,YAAY;AAAA,QAAI,cAAc;AAAA,MAClC,IAAI,MAAM;AAAA,QAAc,cAAc;AAAA,MACtC,MAAM,YAAY,cAAc;AAAA,MAChC,IAAI,cAAc,OAAO;AAAA,MACzB,IAAI,MAAM;AAAA,QAAU,cAAc,MAAM,SAAS,KAAK,QAAQ,WAAW,WAAW;AAAA,MACpF,IAAI,CAAC,UAAU,OAAO,OAAO,WAAW,OAAO,KAAK;AAAA,QAAG;AAAA,MACvD,IAAI,MAAM,KAAK,SAAS;AAAA,QAAM,cAAc;AAAA,MAC5C,cAAc,MAAM,QAAQ,MAAM,eAAe,MAAO,MAAM,OAAO,MAAM,eAAe,KAAK;AAAA,MAC/F,IAAI,CAAC,UAAU,OAAO,OAAO,aAAa,OAAO,KAAK;AAAA,QAAG;AAAA,MACzD,cAAc,MAAM;AAAA,MACpB,WAAW;AAAA,IACZ;AAAA,IACA,MAAM,MAAM;AAAA,IACZ,MAAM,OAAO,MAAM,UAAU;AAAA;AAAA,EAE9B,SAAS,iBAAiB,CAAC,OAAO,OAAO,QAAQ,SAAS;AAAA,IACzD,IAAI,UAAU;AAAA,IACd,MAAM,OAAO,MAAM;AAAA,IACnB,MAAM,gBAAgB,OAAO,KAAK,MAAM;AAAA,IACxC,IAAI,MAAM,aAAa;AAAA,MAAM,cAAc,KAAK;AAAA,IAC3C,SAAI,OAAO,MAAM,aAAa;AAAA,MAAY,cAAc,KAAK,MAAM,QAAQ;AAAA,IAC3E,SAAI,MAAM;AAAA,MAAU,MAAM,IAAI,cAAc,0CAA0C;AAAA,IAC3F,SAAS,QAAQ,GAAG,SAAS,cAAc,OAAQ,QAAQ,QAAQ,SAAS,GAAG;AAAA,MAC9E,IAAI,aAAa;AAAA,MACjB,IAAI,CAAC,WAAW,YAAY;AAAA,QAAI,cAAc,iBAAiB,OAAO,KAAK;AAAA,MAC3E,MAAM,YAAY,cAAc;AAAA,MAChC,IAAI,cAAc,OAAO;AAAA,MACzB,IAAI,MAAM;AAAA,QAAU,cAAc,MAAM,SAAS,KAAK,QAAQ,WAAW,WAAW;AAAA,MACpF,IAAI,CAAC,UAAU,OAAO,QAAQ,GAAG,WAAW,MAAM,MAAM,IAAI;AAAA,QAAG;AAAA,MAC/D,MAAM,eAAe,MAAM,QAAQ,QAAQ,MAAM,QAAQ,OAAO,MAAM,QAAQ,MAAM,KAAK,SAAS;AAAA,MAClG,IAAI;AAAA,QAAc,IAAI,MAAM,QAAQ,mBAAmB,MAAM,KAAK,WAAW,CAAC;AAAA,UAAG,cAAc;AAAA,QAC1F;AAAA,wBAAc;AAAA,MACnB,cAAc,MAAM;AAAA,MACpB,IAAI;AAAA,QAAc,cAAc,iBAAiB,OAAO,KAAK;AAAA,MAC7D,IAAI,CAAC,UAAU,OAAO,QAAQ,GAAG,aAAa,MAAM,YAAY;AAAA,QAAG;AAAA,MACnE,IAAI,MAAM,QAAQ,mBAAmB,MAAM,KAAK,WAAW,CAAC;AAAA,QAAG,cAAc;AAAA,MACxE;AAAA,sBAAc;AAAA,MACnB,cAAc,MAAM;AAAA,MACpB,WAAW;AAAA,IACZ;AAAA,IACA,MAAM,MAAM;AAAA,IACZ,MAAM,OAAO,WAAW;AAAA;AAAA,EAEzB,SAAS,UAAU,CAAC,OAAO,QAAQ,UAAU;AAAA,IAC5C,MAAM,WAAW,WAAW,MAAM,gBAAgB,MAAM;AAAA,IACxD,SAAS,QAAQ,GAAG,SAAS,SAAS,OAAQ,QAAQ,QAAQ,SAAS,GAAG;AAAA,MACzE,MAAM,OAAO,SAAS;AAAA,MACtB,KAAK,KAAK,cAAc,KAAK,eAAe,CAAC,KAAK,cAAc,OAAO,WAAW,YAAY,kBAAkB,KAAK,gBAAgB,CAAC,KAAK,aAAa,KAAK,UAAU,MAAM,IAAI;AAAA,QAChL,IAAI;AAAA,UAAU,IAAI,KAAK,SAAS,KAAK;AAAA,YAAe,MAAM,MAAM,KAAK,cAAc,MAAM;AAAA,UACpF;AAAA,kBAAM,MAAM,KAAK;AAAA,QACjB;AAAA,gBAAM,MAAM;AAAA,QACjB,IAAI,KAAK,WAAW;AAAA,UACnB,MAAM,QAAQ,MAAM,SAAS,KAAK,QAAQ,KAAK;AAAA,UAC/C,IAAI;AAAA,UACJ,IAAI,UAAU,KAAK,KAAK,SAAS,MAAM;AAAA,YAAqB,UAAU,KAAK,UAAU,QAAQ,KAAK;AAAA,UAC7F,SAAI,gBAAgB,KAAK,KAAK,WAAW,KAAK;AAAA,YAAG,UAAU,KAAK,UAAU,OAAO,QAAQ,KAAK;AAAA,UAC9F;AAAA,kBAAM,IAAI,cAAc,OAAO,KAAK,MAAM,iCAAkC,QAAQ,SAAU;AAAA,UACnG,MAAM,OAAO;AAAA,QACd;AAAA,QACA,OAAO;AAAA,MACR;AAAA,IACD;AAAA,IACA,OAAO;AAAA;AAAA,EAER,SAAS,SAAS,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,OAAO,YAAY;AAAA,IAC3E,MAAM,MAAM;AAAA,IACZ,MAAM,OAAO;AAAA,IACb,IAAI,CAAC,WAAW,OAAO,QAAQ,KAAK;AAAA,MAAG,WAAW,OAAO,QAAQ,IAAI;AAAA,IACrE,MAAM,OAAO,UAAU,KAAK,MAAM,IAAI;AAAA,IACtC,MAAM,UAAU;AAAA,IAChB,IAAI;AAAA,MAAO,QAAQ,MAAM,YAAY,KAAK,MAAM,YAAY;AAAA,IAC5D,MAAM,gBAAgB,SAAS,qBAAqB,SAAS;AAAA,IAC7D,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI,eAAe;AAAA,MAClB,iBAAiB,MAAM,WAAW,QAAQ,MAAM;AAAA,MAChD,YAAY,mBAAmB;AAAA,IAChC;AAAA,IACA,IAAI,MAAM,QAAQ,QAAQ,MAAM,QAAQ,OAAO,aAAa,MAAM,WAAW,KAAK,QAAQ;AAAA,MAAG,UAAU;AAAA,IACvG,IAAI,aAAa,MAAM,eAAe;AAAA,MAAiB,MAAM,OAAO,UAAU;AAAA,IACzE;AAAA,MACJ,IAAI,iBAAiB,aAAa,CAAC,MAAM,eAAe;AAAA,QAAiB,MAAM,eAAe,kBAAkB;AAAA,MAChH,IAAI,SAAS;AAAA,QAAmB,IAAI,SAAS,OAAO,KAAK,MAAM,IAAI,EAAE,WAAW,GAAG;AAAA,UAClF,kBAAkB,OAAO,OAAO,MAAM,MAAM,OAAO;AAAA,UACnD,IAAI;AAAA,YAAW,MAAM,OAAO,UAAU,iBAAiB,MAAM;AAAA,QAC9D,EAAO;AAAA,UACN,iBAAiB,OAAO,OAAO,MAAM,IAAI;AAAA,UACzC,IAAI;AAAA,YAAW,MAAM,OAAO,UAAU,iBAAiB,MAAM,MAAM;AAAA;AAAA,MAE/D,SAAI,SAAS;AAAA,QAAkB,IAAI,SAAS,MAAM,KAAK,WAAW,GAAG;AAAA,UACzE,IAAI,MAAM,iBAAiB,CAAC,cAAc,QAAQ;AAAA,YAAG,mBAAmB,OAAO,QAAQ,GAAG,MAAM,MAAM,OAAO;AAAA,UACxG;AAAA,+BAAmB,OAAO,OAAO,MAAM,MAAM,OAAO;AAAA,UACzD,IAAI;AAAA,YAAW,MAAM,OAAO,UAAU,iBAAiB,MAAM;AAAA,QAC9D,EAAO;AAAA,UACN,kBAAkB,OAAO,OAAO,MAAM,IAAI;AAAA,UAC1C,IAAI;AAAA,YAAW,MAAM,OAAO,UAAU,iBAAiB,MAAM,MAAM;AAAA;AAAA,MAE/D,SAAI,SAAS,mBAAmB;AAAA,QACpC,IAAI,MAAM,QAAQ;AAAA,UAAK,YAAY,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO;AAAA,MAC5E,EAAO,SAAI,SAAS;AAAA,QAAsB,OAAO;AAAA,MAC5C;AAAA,QACJ,IAAI,MAAM;AAAA,UAAa,OAAO;AAAA,QAC9B,MAAM,IAAI,cAAc,4CAA4C,IAAI;AAAA;AAAA,MAEzE,IAAI,MAAM,QAAQ,QAAQ,MAAM,QAAQ,KAAK;AAAA,QAC5C,IAAI,SAAS,UAAU,MAAM,IAAI,OAAO,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,MAAM,GAAG,EAAE,QAAQ,MAAM,KAAK;AAAA,QACjG,IAAI,MAAM,IAAI,OAAO;AAAA,UAAK,SAAS,MAAM;AAAA,QACpC,SAAI,OAAO,MAAM,GAAG,EAAE,MAAM;AAAA,UAAsB,SAAS,OAAO,OAAO,MAAM,EAAE;AAAA,QACjF;AAAA,mBAAS,OAAO,SAAS;AAAA,QAC9B,MAAM,OAAO,SAAS,MAAM,MAAM;AAAA,MACnC;AAAA;AAAA,IAED,OAAO;AAAA;AAAA,EAER,SAAS,sBAAsB,CAAC,QAAQ,OAAO;AAAA,IAC9C,MAAM,UAAU,CAAC;AAAA,IACjB,MAAM,oBAAoB,CAAC;AAAA,IAC3B,YAAY,QAAQ,SAAS,iBAAiB;AAAA,IAC9C,MAAM,SAAS,kBAAkB;AAAA,IACjC,SAAS,QAAQ,EAAG,QAAQ,QAAQ,SAAS;AAAA,MAAG,MAAM,WAAW,KAAK,QAAQ,kBAAkB,OAAO;AAAA,IACvG,MAAM,iBAAiB,IAAI,MAAM,MAAM;AAAA;AAAA,EAExC,SAAS,WAAW,CAAC,QAAQ,SAAS,mBAAmB;AAAA,IACxD,IAAI,WAAW,QAAQ,OAAO,WAAW,UAAU;AAAA,MAClD,MAAM,QAAQ,QAAQ,QAAQ,MAAM;AAAA,MACpC,IAAI,UAAU,IAAI;AAAA,QACjB,IAAI,kBAAkB,QAAQ,KAAK,MAAM;AAAA,UAAI,kBAAkB,KAAK,KAAK;AAAA,MAC1E,EAAO;AAAA,QACN,QAAQ,KAAK,MAAM;AAAA,QACnB,IAAI,MAAM,QAAQ,MAAM;AAAA,UAAG,SAAS,IAAI,GAAG,SAAS,OAAO,OAAQ,IAAI,QAAQ,KAAK;AAAA,YAAG,YAAY,OAAO,IAAI,SAAS,iBAAiB;AAAA,QACnI;AAAA,UACJ,MAAM,gBAAgB,OAAO,KAAK,MAAM;AAAA,UACxC,SAAS,IAAI,GAAG,SAAS,cAAc,OAAQ,IAAI,QAAQ,KAAK;AAAA,YAAG,YAAY,OAAO,cAAc,KAAK,SAAS,iBAAiB;AAAA;AAAA;AAAA,IAGtI;AAAA;AAAA,EAED,SAAS,IAAI,CAAC,OAAO,SAAS;AAAA,IAC7B,UAAU,WAAW,CAAC;AAAA,IACtB,MAAM,QAAQ,IAAI,MAAM,OAAO;AAAA,IAC/B,IAAI,CAAC,MAAM;AAAA,MAAQ,uBAAuB,OAAO,KAAK;AAAA,IACtD,IAAI,QAAQ;AAAA,IACZ,IAAI,MAAM;AAAA,MAAU,QAAQ,MAAM,SAAS,KAAK,EAAE,IAAI,MAAM,GAAG,IAAI,KAAK;AAAA,IACxE,IAAI,UAAU,OAAO,GAAG,OAAO,MAAM,IAAI;AAAA,MAAG,OAAO,MAAM,OAAO;AAAA;AAAA,IAChE,OAAO;AAAA;AAAA,EAER,OAAO,QAAQ,OAAO;AAAA,CACrB;AAGF,IAAI,iCAAiC,0BAAyB,cAAe,CAAC,SAAS,WAAW;AAAA,EACjG,IAAI,SAAS,eAAe;AAAA,EAC5B,IAAI,SAAS,eAAe;AAAA,EAC5B,SAAS,OAAO,CAAC,MAAM,IAAI;AAAA,IAC1B,OAAO,QAAQ,GAAG;AAAA,MACjB,MAAM,IAAI,MAAM,mBAAmB,OAAO,wCAAwC,KAAK,yCAAyC;AAAA;AAAA;AAAA,EAGlI,OAAO,QAAQ,OAAO,aAAa;AAAA,EACnC,OAAO,QAAQ,SAAS,eAAe;AAAA,EACvC,OAAO,QAAQ,kBAAkB,iBAAiB;AAAA,EAClD,OAAO,QAAQ,cAAc,aAAa;AAAA,EAC1C,OAAO,QAAQ,cAAc,aAAa;AAAA,EAC1C,OAAO,QAAQ,iBAAiB,gBAAgB;AAAA,EAChD,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC7B,OAAO,QAAQ,UAAU,OAAO;AAAA,EAChC,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC7B,OAAO,QAAQ,gBAAgB,kBAAkB;AAAA,EACjD,OAAO,QAAQ,QAAQ;AAAA,IACtB,QAAQ,eAAe;AAAA,IACvB,OAAO,cAAc;AAAA,IACrB,KAAK,YAAY;AAAA,IACjB,MAAM,aAAa;AAAA,IACnB,OAAO,cAAc;AAAA,IACrB,KAAK,YAAY;AAAA,IACjB,WAAW,kBAAkB;AAAA,IAC7B,MAAM,aAAa;AAAA,IACnB,KAAK,YAAY;AAAA,IACjB,OAAO,cAAc;AAAA,IACrB,MAAM,aAAa;AAAA,IACnB,KAAK,YAAY;AAAA,IACjB,KAAK,YAAY;AAAA,EAClB;AAAA,EACA,OAAO,QAAQ,WAAW,QAAQ,YAAY,MAAM;AAAA,EACpD,OAAO,QAAQ,cAAc,QAAQ,eAAe,SAAS;AAAA,EAC7D,OAAO,QAAQ,WAAW,QAAQ,YAAY,MAAM;AAAA,CACnD,GAAG,GAAG,CAAC;AACT,MAAM,MAAM,QAAQ,iBAAiB,aAAa,aAAa,gBAAgB,MAAM,SAAS,MAAM,eAAe,OAAO,UAAU,aAAa,aAAa,eAAe;AAC7K,IAAI,+BAA+B,eAAe;;;AClzElD,IAAM,kBAAkB,UAAkB,aAAa;AAEhD,SAAS,oBAAoB,CAAC,OAAoB;AAAA,EACrD,gBAAgB,IAAI,KAAI;AAAA;AAGrB,SAAS,oBAAoB,GAAW;AAAA,EAC3C,OAAO,gBAAgB,IAAI,EAAE;AAAA;AAU1B,IAAM,oBAAoB;AAAA;AAajC,MAAM,aAAa;AAAA,EAEN,UAAU;AAAA,EAEX;AAAA,EACA;AAAA,EACA;AAAA,EAGA,gBAA+B,QAAQ,QAAQ;AAAA,EAC/C,cAA6B,QAAQ,QAAQ;AAAA,EAErD,WAAW,GAAG;AAAA,IACV,KAAK,QAAQ,aAAa,aAAa;AAAA,IACvC,KAAK,cAAc;AAAA,IACnB,KAAK,qBAAqB;AAAA;AAAA,SAGvB,WAAW,GAAiB;AAAA,IAC/B,OAAO,gBAAgB,UACnB,MAAM,IAAI,cACV,CAAC,OACG,aAAa,MACZ,EAA8B,YAAY,cACnD;AAAA;AAAA,SAIG,aAAa,GAAS;AAAA,IACzB,gBAAgB,MAAM;AAAA;AAAA,SAGF,SACpB,OAAO,YAAY,eAAe,CAAC,CAAC,QAAQ,UAAU;AAAA,SAE3C,YAAY,GAAa;AAAA,IACpC,IAAI,aAAa,QAAQ;AAAA,MACrB,MAAM,gBAAgB,aAAa,WAC/B,QAAQ,KAAK,iBAAiB,EAClC;AAAA,MACA,IAAI,kBAAkB;AAAA,QAAW,OAAO;AAAA,MAIxC,MAAM,WAAW,QAAQ,KAAK;AAAA,MAC9B,IAAI,aAAa,UAAU,aAAa,KAAK;AAAA,QACzC,OAAO;AAAA,MACX;AAAA,MAEA,OAAO;AAAA,IACX;AAAA,IAIA,OAAO,mBAAmB,YAAY,WAClC,MACI,OAAO,iBAAiB,eACxB,CAAC,CAAC,aAAa,QAAQ,OAAO,CACtC;AAAA,IAEA,IAAI,CAAC,qBAAqB,UAAU;AAAA,MAChC,OAAO;AAAA,IACX;AAAA,IAEA,OAAO;AAAA;AAAA,SAGI,UAAU,CAAC,OAAqC;AAAA,IAC3D,QAAQ,MAAM,YAAY;AAAA,WACjB;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO;AAAA;AAAA,QAEP;AAAA;AAAA;AAAA,EAIJ,MAAM,CAAC,SAAiB,MAAyB;AAAA,IACrD,IAAI,KAAK,WAAW;AAAA,MAAG,OAAO,GAAG;AAAA;AAAA,IACjC,OAAO,GAAG,WAAW,KAAK,IAAI,MAAM,EAAE,KAAK,GAAG;AAAA;AAAA;AAAA,EAI1C,mBAAmB,GAAY;AAAA,IACnC,OAAO,KAAK,sBAAsB,CAAC,CAAC,qBAAqB;AAAA;AAAA,EAGrD,WAAW,CAAC,WAAyB;AAAA,IACzC,MAAM,QAAO,KAAK,eAAe,qBAAqB;AAAA,IACtD,IAAI,CAAC;AAAA,MAAM;AAAA,IACX,MAAM,YAAY,IAAI,KAAK,EAAE,YAAY;AAAA,IAIzC,KAAK,gBAAgB,QAAQ,IAAI;AAAA,MAC7B,KAAK;AAAA,MACL,KAAK;AAAA,IACT,CAAC,EAAE,KAAK,MACJ,cAAc,EACT,WAAW,OAAM,GAAG,aAAa,WAAW,EAC5C,MAAM,MAAM,EAAE,CACvB;AAAA;AAAA,EAGJ,KAAK,CAAC,YAAoB,MAAuB;AAAA,IAC7C,IAAI,KAAK,QAAQ;AAAA,MAAgB;AAAA,IACjC,MAAM,YAAY,KAAK,OAAO,WAAW,WAAW,IAAI;AAAA,IACxD,IAAI,KAAK,oBAAoB,GAAG;AAAA,MAC5B,KAAK,YAAY,SAAS;AAAA,IAC9B,EAAO;AAAA,MACH,cAAc,EAAE,SAAS,SAAS;AAAA;AAAA;AAAA,EAI1C,IAAI,CAAC,YAAoB,MAAuB;AAAA,IAC5C,IAAI,KAAK,QAAQ;AAAA,MAAe;AAAA,IAChC,MAAM,YAAY,KAAK,OAAO,SAAS,IAAI;AAAA,IAC3C,IAAI,KAAK,oBAAoB,GAAG;AAAA,MAC5B,KAAK,YAAY,SAAS;AAAA,IAC9B,EAAO;AAAA,MACH,cAAc,EAAE,SAAS,SAAS;AAAA;AAAA;AAAA,EAI1C,IAAI,CAAC,YAAoB,MAAuB;AAAA,IAC5C,IAAI,KAAK,QAAQ;AAAA,MAAe;AAAA,IAChC,MAAM,YAAY,KAAK,OAAO,UAAU,WAAW,IAAI;AAAA,IACvD,IAAI,KAAK,oBAAoB,GAAG;AAAA,MAC5B,KAAK,YAAY,SAAS;AAAA,IAC9B,EAAO;AAAA,MACH,cAAc,EAAE,SAAS,SAAS;AAAA;AAAA;AAAA,EAI1C,KAAK,CAAC,YAAoB,MAAuB;AAAA,IAC7C,IAAI,KAAK,QAAQ;AAAA,MAAgB;AAAA,IACjC,MAAM,YAAY,KAAK,OAAO,WAAW,WAAW,IAAI;AAAA,IACxD,IAAI,KAAK,oBAAoB,GAAG;AAAA,MAC5B,KAAK,YAAY,SAAS;AAAA,IAC9B,EAAO;AAAA,MACH,cAAc,EAAE,SAAS,SAAS;AAAA;AAAA;AAAA,EAO1C,QAAQ,GAAa;AAAA,IACjB,OAAO,KAAK;AAAA;AAAA,EAMhB,QAAQ,CAAC,OAAuB;AAAA,IAC5B,KAAK,QAAQ;AAAA;AAAA,EAMjB,cAAc,CAAC,SAAwB;AAAA,IACnC,KAAK,qBAAqB;AAAA,IAC1B,IAAI,CAAC,SAAS;AAAA,MACV,KAAK,cAAc;AAAA,MACnB,qBAAqB,EAAE;AAAA,IAC3B;AAAA;AAAA,EAMJ,UAAU,CAAC,OAAoB;AAAA,IAC3B,KAAK,cAAc;AAAA,IACnB,qBAAqB,KAAI;AAAA,IACzB,IAAI,CAAC;AAAA,MAAM;AAAA,IAEX,KAAK,qBAAqB;AAAA,IAC1B,MAAM,MAAK,cAAc;AAAA,IACzB,KAAK,eAAe,YAAY;AAAA,MAC5B,OAAO,SAAS,MAAM,YACjB,YAAY;AAAA,QACT,MAAM,IAAG,MAAM,IAAG,KAAK,QAAQ,KAAI,CAAC;AAAA,QACpC,MAAM,IAAG,UAAU,OAAM,EAAE;AAAA,SAC5B,CACP;AAAA,MACA,IAAI;AAAA,QAAO,KAAK,qBAAqB;AAAA,OACtC;AAAA;AAAA,OAID,UAAS,GAAkB;AAAA,IAC7B,MAAM,KAAK;AAAA,IACX,MAAM,KAAK;AAAA;AAAA,EAMf,cAAc,GAAW;AAAA,IACrB,OAAO,KAAK,eAAe,qBAAqB;AAAA;AAAA,EAUpD,YAAY,CAAC,eAKD;AAAA,IACR,MAAM,QAAkB,CAAC;AAAA,IACzB,IAAI,WAAW,QAAQ;AAAA,MACnB,MAAM,KAAK,IAAI,WAAW,SAAS;AAAA,IACvC;AAAA,IACA,IAAI,WAAW,cAAc;AAAA,MACzB,MAAM,KAAK,IAAI,WAAW,eAAe;AAAA,IAC7C;AAAA,IACA,MAAM,KAAK,WAAW,OAAO;AAAA,IAC7B,MAAM,MAAM,MAAM,KAAK,GAAG;AAAA,IAE1B,QAAQ,WAAW;AAAA,WACV;AAAA,QACD,KAAK,MAAM,GAAG;AAAA,QACd;AAAA,WACC;AAAA,QACD,KAAK,KAAK,GAAG;AAAA,QACb;AAAA,WACC;AAAA,QACD,KAAK,KAAK,GAAG;AAAA,QACb;AAAA,WACC;AAAA,QACD,KAAK,MAAM,GAAG;AAAA,QACd;AAAA;AAAA,QAEA,KAAK,KAAK,GAAG;AAAA,QACb;AAAA;AAAA;AAGhB;AAEA,IAAM,kBAAkB,UAAU,YAAY;AAGvC,IAAM,SAAS,aAAa,YAAY;AAUxC,SAAS,cAAc,GAAW;AAAA,EACrC,OAAO,OAAO,eAAe;AAAA;;;ACnTjC,IAAM,aAAa,UAAwB,cAAc;AACzD,IAAM,qBAAqB,UAAmB,sBAAsB;AACpE,IAAM,aAAa,UAA8B,cAAc;AAcxD,SAAS,eAAe,GAAiB;AAAA,EAC5C,OAAO,WAAW,IAAI,MAAM;AAAA;AA+BzB,SAAS,eAAe,GAAuB;AAAA,EAClD,OAAO,WAAW,IAAI;AAAA;;;AC5DnB,IAAM,wBAAwB;AAAA,EACjC,OAAO;AACX;;;ACFA,yBAAS;AASF,SAAS,iBAAiB,CAAC,SAAiB,WAA2B;AAAA,EAC1E,IAAI,QAAQ,aAAa,SAAS;AAAA,IAC9B,OAAO;AAAA,EACX;AAAA,EACA,OAAO,OAAO,UAAU,WAAW,MAC/B,cAAa,OAAO,CAAC,SAAS,SAAS,MAAM,SAAS,GAAG;AAAA,IACrD,UAAU;AAAA,IACV,OAAO,CAAC,QAAQ,QAAQ,MAAM;AAAA,EAClC,CAAC,CACL;AAAA,EACA,IAAI,OAAO;AAAA,IACP,OAAO;AAAA,EACX;AAAA,EACA,MAAM,QAAQ,OAAO,MAAM,IAAI,OAAO,GAAG,6BAA6B,CAAC;AAAA,EACvE,OAAO,QAAQ,IAAI,KAAK,KAAK;AAAA;;;ACd1B,MAAM,wBAAsD;AAAA,EAC9C;AAAA,EAEjB,WAAW,GAAG;AAAA,IACV,KAAK,oBAAoB,kBACrB,0BACA,mBACJ;AAAA;AAAA,EAGI,MAAM,CAAC,YAAuD;AAAA,IAClE,OAAO;AAAA,SACA;AAAA,SACC,KAAK,oBACH,EAAE,mBAAmB,KAAK,kBAAkB,IAC5C,CAAC;AAAA,IACX;AAAA;AAAA,OAGE,WAAU,CACZ,WACA,YACa;AAAA,IACb,OAAO,MACH,cAAc,SAAS,WAAW,KAAK,OAAO,UAAU,CAAC,CAC7D;AAAA;AAAA,OAGE,eAAc,CAChB,OACA,YACa;AAAA,IACb,OAAO,MACH,cACI,aACA,MAAM,SACN,KAAK,OAAO;AAAA,SACL;AAAA,MACH,OAAO,MAAM;AAAA,IACjB,CAAC,CACL,CACJ;AAAA;AAAA,OAGE,aAAY,CACd,MACA,UACA,SACA,YACa;AAAA,IACb,OAAO,MACH,cACI,WACA,MACA,KAAK,OAAO;AAAA,SACL;AAAA,MACH,UAAU,GAAG;AAAA,MACb;AAAA,IACJ,CAAC,CACL,CACJ;AAAA;AAAA,OAGE,gBAAe,CACjB,MACA,MACA,UACA,SACA,YACa;AAAA,IACb,OAAO,MACH,cACI,cACA,MACA,KAAK,OAAO;AAAA,SACL;AAAA,MACH;AAAA,MACA,UAAU,GAAG;AAAA,MACb;AAAA,IACJ,CAAC,CACL,CACJ;AAAA;AAER;AAEA,SAAS,aAAa,CAClB,UACA,MACA,YACM;AAAA,EACN,IAAI,UAAU,gBAAgB,aAAa;AAAA,EAE3C,IAAI,cAAc,OAAO,KAAK,UAAU,EAAE,SAAS,GAAG;AAAA,IAClD,MAAM,WAAW,OAAO,QAAQ,UAAU,EACrC,OAAO,EAAE,GAAG,WAAW,UAAU,SAAS,EAC1C,IAAI,EAAE,KAAK,WAAW,GAAG,OAAO,OAAO,EACvC,KAAK,IAAI;AAAA,IAEd,IAAI,UAAU;AAAA,MACV,WAAW,MAAM;AAAA,IACrB;AAAA,EACJ;AAAA,EAEA,OAAO;AAAA;;AChHX;AAAA;AAQO,MAAM,mBAEb;AAAA,EACqB,UAAU,IAAI;AAAA,EAE/B,GAAM,CAAC,SAAmB,IAAgB;AAAA,IACtC,OAAO,KAAK,QAAQ,IAAI,SAAS,EAAE;AAAA;AAAA,EAGvC,UAAU,GAAyB;AAAA,IAC/B,OAAO,KAAK,QAAQ,SAAS;AAAA;AAErC;;ACgIO,MAAM,iBAA8C;AAAA,EAK3C;AAAA,EACS;AAAA,EALb;AAAA,EACA;AAAA,EAER,WAAW,CACC,mBACS,gBACnB;AAAA,IAFU;AAAA,IACS;AAAA;AAAA,EAOrB,cAAc,CAAC,aAAuC;AAAA,IAClD,KAAK,cAAc;AAAA;AAAA,EAGvB,WAAW,CAAC,UAAoC;AAAA,IAC5C,KAAK,oBAAoB;AAAA;AAAA,EAG7B,oBAAoB,CAAC,YAAwC;AAAA,IAOzD,KAAK,oBACD,eAAe,YACT,YACA,KAAK,KAAK,sBAAsB,WAAW;AAAA;AAAA,EAGzD,UAAU,CAAC,MAAc,YAAwC;AAAA,IAC7D,MAAM,UAAU,KAAK,kBAAkB;AAAA,IACvC,MAAM,qBAAqB,KAAK,4BAC5B,YACA,OACJ;AAAA,IAEK,KAAK,kBAAkB,WAAW,MAAM,kBAAkB;AAAA;AAAA,EAGnE,cAAc,CAAC,OAAc,YAAwC;AAAA,IACjE,MAAM,UAAU,KAAK,kBAAkB;AAAA,IACvC,MAAM,qBAAqB,KAAK,4BAC5B,YACA,OACJ;AAAA,IAEK,KAAK,kBAAkB,eAAe,OAAO,kBAAkB;AAAA;AAAA,OAGlE,aAAe,CACjB,MACA,IACA,YACU;AAAA,IACV,MAAM,UAA4B;AAAA,MAC9B,aAAa,KAAK,eAAe,KAAK,WAAW;AAAA,MACjD,IAAI,KAAK,WAAW;AAAA,IACxB;AAAA,IAEA,MAAM,YAAY,YAAY,IAAI;AAAA,IAElC,IAAI;AAAA,MAEA,MAAM,SAAS,MAAM,KAAK,eAAe,IAAI,SAAS,EAAE;AAAA,MACxD,MAAM,aAAa,YAAY,IAAI,IAAI;AAAA,MAGvC,MAAM,qBAAqB,KAAK,4BAC5B,YACA,OACJ;AAAA,MACA,MAAM,KAAK,kBAAkB,aACzB,MACA,YACA,MACA,kBACJ;AAAA,MAEA,OAAO;AAAA,MACT,OAAO,OAAO;AAAA,MACZ,MAAM,aAAa,YAAY,IAAI,IAAI;AAAA,MACvC,MAAM,MACF,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA,MAG5D,MAAM,qBAAqB,KAAK,4BAC5B,KAAK,YAAY,cAAc,IAAI,QAAQ,GAC3C,OACJ;AAAA,MACA,MAAM,KAAK,kBAAkB,aACzB,MACA,YACA,OACA,kBACJ;AAAA,MAEA,MAAM;AAAA;AAAA;AAAA,OAIR,yBAA2B,CAC7B,MACA,MACA,IACA,YACU;AAAA,IACV,MAAM,gBAAgB,KAAK,kBAAkB;AAAA,IAC7C,IAAI,CAAC,eAAe;AAAA,MAChB,MAAM,IAAI,MACN,sEACJ;AAAA,IACJ;AAAA,IAEA,MAAM,eAAiC;AAAA,MACnC,aAAa,cAAc;AAAA,MAC3B,UAAU,cAAc;AAAA,MACxB,IAAI,KAAK,WAAW;AAAA,IACxB;AAAA,IAEA,MAAM,YAAY,YAAY,IAAI;AAAA,IAElC,IAAI;AAAA,MAEA,MAAM,SAAS,MAAM,KAAK,eAAe,IAAI,cAAc,EAAE;AAAA,MAC7D,MAAM,aAAa,YAAY,IAAI,IAAI;AAAA,MAGvC,MAAM,qBAAqB,KAAK,4BAC5B,YACA,YACJ;AAAA,MACA,MAAM,KAAK,kBAAkB,gBACzB,MACA,MACA,YACA,MACA,kBACJ;AAAA,MAEA,OAAO;AAAA,MACT,OAAO,OAAO;AAAA,MACZ,MAAM,aAAa,YAAY,IAAI,IAAI;AAAA,MACvC,MAAM,MACF,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA,MAG5D,MAAM,qBAAqB,KAAK,4BAC5B,KAAK,YAAY,cAAc,IAAI,QAAQ,GAC3C,YACJ;AAAA,MACA,MAAM,KAAK,kBAAkB,gBACzB,MACA,MACA,YACA,OACA,kBACJ;AAAA,MAEA,MAAM;AAAA;AAAA;AAAA,EAQN,iBAAiB,GAAiC;AAAA,IACtD,OAAO,KAAK,eAAe,WAAW;AAAA;AAAA,EAclC,2BAA2B,CAC/B,YACA,SACmB;AAAA,IACnB,OAAO;AAAA,SACA,6BAA6B;AAAA,SAC7B,KAAK;AAAA,SACL;AAAA,SACA;AAAA,IACP;AAAA;AAAA,EAMI,UAAU,GAAW;AAAA,IACzB,OAAO,OAAO,WAAW,EAAE,WAAW,KAAK,EAAE;AAAA;AAErD;;AC/UA,IAAM,eAAe,UAInB,mBAAmB;;;ACFrB,IAAM,wBAAwB,UAC1B,kBACJ;AAGA,IAAM,+BAA+B,KACjC,0UACJ;AA8EA,SAAS,0BAA0B,GAAkC;AAAA,EACjE,MAAM,WAAW,sBAAsB,IAAI;AAAA,EAC3C,IACI,YACA,OAAO,aAAa,YACpB,gBAAgB,YAChB,OAAQ,SAAgD,eACpD,YACN;AAAA,IACE,OAAO;AAAA,EACX;AAAA,EACA;AAAA;AAUJ,IAAI;AAYJ,SAAS,oBAAoB,GAAsB;AAAA,EAE/C,MAAM,SAAS,2BAA2B;AAAA,EAC1C,IAAI;AAAA,IAAQ,OAAO;AAAA,EAInB,IAAI,CAAC,yBAAyB;AAAA,IAC1B,0BAA0B,IAAI,iBAC1B,IAAI,yBACJ,IAAI,kBACR;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAGJ,IAAM,YAAY,IAAI,MAAM,CAAC,GAAwB;AAAA,EACxD,GAAG,CAAC,GAAG,MAAM;AAAA,IACT,MAAM,WAAW,qBAAqB;AAAA,IACtC,MAAM,QAAS,SACX;AAAA,IAEJ,OAAO,OAAO,UAAU,aAAa,MAAM,KAAK,QAAQ,IAAI;AAAA;AAEpE,CAAC;;;ACzIM,IAAM,kBAAkB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAIO,IAAM,cAAc;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAKO,IAAM,UAAU;AAAA,EACnB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,aAAa;AAAA,EACb,qBAAqB;AAAA,EACrB,iBAAiB;AAAA,EAEjB,cAAc;AAClB;AAaO,IAAM,aAAa;AAAA,EACtB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,aAAa;AAAA,EACb,qBAAqB;AAAA,EACrB,iBAAiB;AAAA,EACjB,cAAc;AAClB;AAgCO,MAAM,cAAc;AAAA,EACvB,SAAoB,QAAQ;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA,WAAW,CAAC,MAAc,MAAiC;AAAA,IACvD,KAAK,OAAO;AAAA,IACZ,KAAK,OAAO;AAAA,IACZ,MAAM,UAAU,eAAe;AAAA,IAC/B,IAAI,SAAS;AAAA,MACT,KAAK,MAAM;AAAA,IACf;AAAA;AAER;AA0FA,SAAS,cAAc,CAAC,UAA0B;AAAA,EAC9C,OAAO,SAAS,QAAQ,oBAAoB,CAAC,MAAM;AAAA,IAC/C,MAAM,MAAM,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAAA,IACxD,OAAO,MAAM;AAAA,GAChB;AAAA;AAQL,SAAS,kBAAkB,CAAC,MAEhB;AAAA,EACR,OAAO,QAAQ,aAAa,WAAW,CAAC,KAAK,aAAa;AAAA;AAG9D,SAAS,aAAa,CAAC,OAAkD;AAAA,EACrE,IAAI,UAAU,QAAQ,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EACxD,MAAM,YAAY,OAAO,eAAe,KAAK;AAAA,EAC7C,OAAO,cAAc,OAAO,aAAa,cAAc;AAAA;AAsB3D,SAAS,gBAAgB,CAAC,OAAkD;AAAA,EACxE,IAAI,MAAM,QAAQ,KAAK,KAAK,CAAC,cAAc,KAAK;AAAA,IAAG,OAAO;AAAA,EAC1D,MAAM,UAAU,OAAO,OAAO,KAAK;AAAA,EACnC,IAAI,QAAQ,WAAW;AAAA,IAAG,OAAO;AAAA,EAEjC,IAAI,OAAyB;AAAA,EAC7B,IAAI,mBAAmB;AAAA,EACvB,WAAW,SAAS,SAAS;AAAA,IACzB,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,MACtB,IAAI,SAAS;AAAA,QAAM,OAAO;AAAA,MAC1B,OAAO;AAAA,IACX,EAAO,SAAI,UAAU,QAAQ,OAAO,UAAU,UAAU;AAAA,MACpD,OAAO;AAAA,IACX,EAAO;AAAA,MACH,mBAAmB;AAAA;AAAA,EAE3B;AAAA,EACA,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAkB,OAAO;AAAA,EAC/C,OAAO;AAAA;AAGX,SAAS,mBAAmB,CAAC,KAAqB;AAAA,EAC9C,IAAI,CAAC;AAAA,IAAK,OAAO;AAAA,EACjB,IAAI,UAAU,KAAK,GAAG,GAAG;AAAA,IACrB,OAAO,cAAc,aAAa,IAAI,MAAM,UAAU,EAAE,OAAO,OAAO;AAAA,IACtE,IAAI,CAAC;AAAA,MAAW,OAAO;AAAA,IACvB,OAAO;AAAA,MACH,0BAA0B,SAAS;AAAA,MACnC,GAAG,UAAU,IAAI,CAAC,SAAS;AAAA,QACvB,MAAM,aAAa,0BAA0B,IAAI;AAAA,QACjD,OAAO,WAAW,OAAO,CAAC,EAAE,YAAY,IAAI,WAAW,MAAM,CAAC;AAAA,OACjE;AAAA,IACL,EAAE,KAAK,EAAE;AAAA,EACb;AAAA,EACA,OAAO,0BAA0B,GAAG;AAAA;AAGxC,SAAS,yBAAyB,CAAC,KAAqB;AAAA,EACpD,IAAI,cAAc,KAAK,GAAG;AAAA,IAAG,OAAO,IAAI,YAAY;AAAA,EACpD,OAAO,IAAI,QAAQ,qCAAqC,CAAC,UACrD,MAAM,YAAY,CACtB;AAAA;AAGJ,SAAS,eAAe,CAAC,KAAqB;AAAA,EAC1C,MAAM,gBAAgB,oBAAoB,GAAG;AAAA,EAC7C,OAAO,gBACD,cAAc,OAAO,CAAC,EAAE,YAAY,IAAI,cAAc,MAAM,CAAC,IAC7D;AAAA;AAGV,SAAS,gBAAgB,CAAC,OAAyB;AAAA,EAC/C,IAAI,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO,MAAM,IAAI,gBAAgB;AAAA,EAC3D,IAAI,CAAC,cAAc,KAAK;AAAA,IAAG,OAAO;AAAA,EAElC,MAAM,SAAkC,CAAC;AAAA,EACzC,YAAY,KAAK,gBAAgB,OAAO,QAAQ,KAAK,GAAG;AAAA,IACpD,OAAO,gBAAgB,GAAG,KAAK,iBAAiB,WAAW;AAAA,EAC/D;AAAA,EACA,OAAO;AAAA;AAGX,SAAS,iBAAiB,CACtB,MACyB;AAAA,EACzB,OAAO,iBAAiB,IAAI;AAAA;AAkBhC,SAAS,mBAAmB,CAAC,MAA0C;AAAA,EACnE,MAAM,SAAkC,CAAC;AAAA,EACzC,YAAY,KAAK,UAAU,OAAO,QAAQ,IAAI,GAAG;AAAA,IAC7C,MAAM,YAAY,gBAAgB,GAAG;AAAA,IACrC,OAAO,aACH,cAAc,SAAS,QAAQ,iBAAiB,KAAK;AAAA,EAC7D;AAAA,EACA,OAAO;AAAA;AAGX,SAAS,WAAW,CAChB,MACA,SAAuB,QACvB,OACA,YAAY,OACR;AAAA,EACJ,IAAI,CAAC,MAAM;AAAA,IACP,MAAM,4CAA4C;AAAA,IAClD;AAAA,EACJ;AAAA,EAEA,QAAQ;AAAA,SACC,QAAQ;AAAA,MACT,MAAM,OAAO,KAAK,UAAU,MAAM,MAAM,CAAC;AAAA,MACzC,MAAM,YAAY,eAAe,IAAI,IAAI,IAAI;AAAA,MAC7C;AAAA,IACJ;AAAA,SACK;AAAA,MACD,MAAM,OAAO,IAAI,CAAC;AAAA,MAClB;AAAA,SACC,SAAS;AAAA,MACV,IAAI,UAAU,QAAQ,KAAK,QAAQ,MAAM;AAAA,QACrC,MAAM,YAAY,iBAAiB,KAAK,IAAI;AAAA,QAC5C,MAAM,QACF,cACC,MAAM,QAAQ,KAAK,IAAI,IAAI,KAAK,OAAO,CAAC,KAAK,IAAI;AAAA,QACtD,MAAM,QAAQ,CAAC,SAAS;AAAA,UACpB,MAAM,SAAS,OAAO,OAAO,IAAI,EAC5B,IAAI,CAAC,MAAM,KAAK,EAAE,EAClB,KAAK,IAAI;AAAA,UACd,MAAM,MAAM;AAAA,SACf;AAAA,MACL,EAAO;AAAA,QACH,MAAM,SAAS,OAAO,OAAO,IAAI,EAC5B,IAAI,CAAC,MAAM,KAAK,EAAE,EAClB,KAAK,IAAI;AAAA,QACd,MAAM,MAAM;AAAA;AAAA,MAEhB;AAAA,IACJ;AAAA,aACS;AAAA,MACL,MAAM,UAAU,UAAU,QAAQ,KAAK,QAAQ;AAAA,MAC/C,MAAM,YAAY,UAAU,iBAAiB,KAAK,IAAI,IAAI;AAAA,MAC1D,MAAM,OAAyC,YACzC,YACA,MAAM,QAAQ,KAAK,IAAI,IACpB,KAAK,OACN;AAAA,MACR,IAAI,WAAW,EAAE,SAAS,QAAQ,KAAK,WAAW,IAAI;AAAA,QAClD,MAAM,WAAW,KAAK;AAAA,QACtB,IAAI,SAAS,MAAM;AAAA,UACf,oBAAoB,MAAM,OAAO,QAAQ;AAAA,QAC7C,EAAO;AAAA,UACH,mBACI,KAAK,MACL,OACA,QACJ;AAAA;AAAA,MAER,EAAO;AAAA,QACH,WAAW,CAAC,KAAK,KAAK,CAA4B,GAAG,KAAK;AAAA;AAAA,MAE9D;AAAA,IACJ;AAAA;AAAA;AAIR,SAAS,SAAS,CACd,MACA,SAAuB,QACnB;AAAA,EACJ,MAAM,OAAO,cAAc;AAAA,EAC3B,YACI,MACA,QACA,CAAC,QAAQ,KAAK,SAAS,GAAG;AAAA,CAAO,GACjC,mBAAmB,IAAI,CAC3B;AAAA;AAGJ,SAAS,YAAY,CAAC,KAAsB;AAAA,EACxC,OAAO,OAAO,QAAQ,OAAO,QAAQ,WAC/B,KAAK,UAAU,GAAG,IAClB,OAAO,OAAO,EAAE;AAAA;AAG1B,SAAS,QAAQ,CAAC,MAAc,OAAyB;AAAA,EACrD,IAAI,KAAK,UAAU;AAAA,IAAO,OAAO,CAAC,IAAI;AAAA,EACtC,MAAM,QAAkB,CAAC;AAAA,EACzB,SAAS,MAAM,EAAG,MAAM,KAAK,QAAQ,OAAO,OAAO;AAAA,IAC/C,MAAM,KAAK,KAAK,UAAU,KAAK,MAAM,KAAK,CAAC;AAAA,EAC/C;AAAA,EACA,OAAO;AAAA;AAGX,SAAS,UAAU,CACf,MACA,OACA,kBACI;AAAA,EACJ,IAAI,KAAK,WAAW;AAAA,IAAG;AAAA,EAEvB,MAAM,OAAO,OAAO,KAAK,KAAK,EAAE,EAAE,OAC9B,CAAC,QAAQ,CAAC,CAAC,QAAQ,KAAK,EAAE,SAAS,IAAI,YAAY,CAAC,CACxD;AAAA,EAEA,MAAM,YAAY,KAAK,IAAI,CAAC,QACxB,KAAK,IACD,IAAI,QACJ,GAAG,KAAK,IAAI,CAAC,SAAS,aAAa,KAAK,IAAI,EAAE,MAAM,CACxD,CACJ;AAAA,EAGA,MAAM,SAAS,KAAK,IAAI,CAAC,KAAK,MAAM,IAAI,OAAO,UAAU,EAAE,CAAC,EAAE,KAAK,KAAK;AAAA,EACxE,MAAM,MAAM;AAAA,EACZ,MAAM,KAAK,IAAI,CAAC,GAAG,MAAM,IAAI,OAAO,UAAU,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC;AAAA,EAG9D,KAAK,QAAQ,CAAC,SAAS;AAAA,IACnB,MAAM,MAAM,KACP,IAAI,CAAC,KAAK,MAAM,aAAa,KAAK,IAAI,EAAE,OAAO,UAAU,EAAE,CAAC,EAC5D,KAAK,KAAK;AAAA,IACf,MAAM,GAAG;AAAA,GACZ;AAAA,EAGD,IAAI,kBAAkB;AAAA,IAClB,MAAM,EAAE;AAAA,IACR,MAAM,QAAQ,kBAAkB;AAAA,EACpC;AAAA;AAGJ,SAAS,kBAAkB,CACvB,MACA,QAAmC,QAAQ,KAC3C,kBACI;AAAA,EACJ,MAAM,OAAO,OAAO,KAAK,IAAI,EAAE,OAC3B,CAAC,QAAQ,CAAC,CAAC,QAAQ,KAAK,EAAE,SAAS,IAAI,YAAY,CAAC,CACxD;AAAA,EACA,IAAI,KAAK,WAAW;AAAA,IAAG;AAAA,EAEvB,MAAM,cAAc,KAAK,IAAI,GAAG,KAAK,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC;AAAA,EAE7D,KAAK,QAAQ,CAAC,QAAQ;AAAA,IAClB,MAAM,SAAS,IAAI,OAAO,WAAW;AAAA,IACrC,MAAM,GAAG,YAAY,aAAa,KAAK,IAAI,GAAG;AAAA,GACjD;AAAA,EAED,IAAI,kBAAkB;AAAA,IAClB,MAAM,EAAE;AAAA,IACR,MAAM,QAAQ,kBAAkB;AAAA,EACpC;AAAA;AAGJ,SAAS,mBAAmB,CACxB,MACA,QAAmC,QAAQ,KAC3C,kBACI;AAAA,EACJ,IAAI,KAAK,WAAW;AAAA,IAAG;AAAA,EAEvB,MAAM,OAAO,OAAO,KAAK,KAAK,EAAE,EAAE,OAC9B,CAAC,QAAQ,CAAC,CAAC,QAAQ,KAAK,EAAE,SAAS,IAAI,YAAY,CAAC,CACxD;AAAA,EACA,IAAI,KAAK,WAAW;AAAA,IAAG;AAAA,EAEvB,IAAI,CAAC,QAAQ,OAAO,OAAO;AAAA,IACvB,WAAW,MAAM,OAAO,gBAAgB;AAAA,IACxC;AAAA,EACJ;AAAA,EAEA,MAAM,gBAAgB,KAAK,IAAI,CAAC,QAC5B,KAAK,IACD,IAAI,QACJ,GAAG,KAAK,IAAI,CAAC,SAAS,aAAa,KAAK,IAAI,EAAE,MAAM,CACxD,CACJ;AAAA,EAEA,MAAM,kBAAkB,KAAK,SAAS,KAAK;AAAA,EAC3C,MAAM,aACF,cAAc,OAAO,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,IAAI;AAAA,EAC/C,MAAM,YAAY,QAAQ,OAAO,WAAW;AAAA,EAE5C,IAAI,cAAc,WAAW;AAAA,IACzB,WAAW,MAAM,OAAO,gBAAgB;AAAA,IACxC;AAAA,EACJ;AAAA,EAEA,MAAM,WAAW,aAAa;AAAA,EAC9B,MAAM,gBAAgB;AAAA,EACtB,MAAM,YAAY,KAAK,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,aAAa,CAAC;AAAA,EAIvE,IAAI,UAAU;AAAA,EACd,IAAI,WAAW;AAAA,EAEf,SAAS,IAAI,EAAG,IAAI,KAAK,QAAQ,KAAK;AAAA,IAClC,MAAM,YAAY,cAAc,KAAK,UAAU;AAAA,IAC/C,IAAI,YAAY;AAAA,MAAU;AAAA,IAE1B,MAAM,WAAW,cAAc,KAAK;AAAA,IACpC,IAAI,YAAY;AAAA,IAChB,WAAW,QAAQ,MAAM;AAAA,MACrB,MAAM,UAAU,aAAa,KAAK,KAAK,GAAG,EAAE;AAAA,MAC5C,IAAI,UAAU,UAAU;AAAA,QACpB,aAAa,KAAK,KAAK,UAAU,QAAQ,IAAI;AAAA,MACjD;AAAA,IACJ;AAAA,IAEA,IAAI,YAAY,UAAU;AAAA,MACtB,WAAW;AAAA,MACX,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EAEA,MAAM,cAAc,CAAC,GAAG,aAAa;AAAA,EAErC,IAAI,YAAY,IAAI;AAAA,IAChB,YAAY,WAAW,cAAc,WAAW;AAAA,EACpD,EAAO;AAAA,IAGH,IAAI,YAAY;AAAA,IAChB,MAAM,wBAAwB,KACzB,IAAI,CAAC,GAAG,OAAO;AAAA,MACZ,OAAO;AAAA,MACP,WAAW,cAAc,KAAK,UAAU;AAAA,IAC5C,EAAE,EACD,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,EAC7B,KAAK,CAAC,GAAG,MAAM,EAAE,YAAY,EAAE,SAAS;AAAA,IAE7C,WAAW,OAAO,uBAAuB;AAAA,MACrC,IAAI,aAAa;AAAA,QAAG;AAAA,MACpB,MAAM,SAAS,KAAK,IAAI,WAAW,IAAI,SAAS;AAAA,MAChD,YAAY,IAAI,UAAU;AAAA,MAC1B,aAAa;AAAA,IACjB;AAAA;AAAA,EAIJ,MAAM,SAAS,KAAK,IAAI,CAAC,KAAK,MAAM,IAAI,OAAO,YAAY,EAAE,CAAC,EAAE,KAAK,KAAK;AAAA,EAC1E,MAAM,MAAM;AAAA,EACZ,MAAM,KAAK,IAAI,CAAC,GAAG,MAAM,IAAI,OAAO,YAAY,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC;AAAA,EAGhE,KAAK,QAAQ,CAAC,SAAS;AAAA,IACnB,MAAM,YAAY,KAAK,IAAI,CAAC,KAAK,MAC7B,SAAS,aAAa,KAAK,IAAI,GAAG,YAAY,EAAE,CACpD;AAAA,IACA,MAAM,YAAY,KAAK,IAAI,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;AAAA,IAE5D,SAAS,OAAO,EAAG,OAAO,WAAW,QAAQ;AAAA,MACzC,MAAM,MAAM,KACP,IAAI,CAAC,GAAG,MAAM;AAAA,QACX,MAAM,MACF,OAAO,UAAU,GAAG,SAAS,UAAU,GAAG,QAAQ;AAAA,QACtD,OAAO,IAAI,OAAO,YAAY,EAAE;AAAA,OACnC,EACA,KAAK,KAAK;AAAA,MACf,MAAM,GAAG;AAAA,IACb;AAAA,GACH;AAAA,EAED,IAAI,kBAAkB;AAAA,IAClB,MAAM,EAAE;AAAA,IACR,MAAM,QAAQ,kBAAkB;AAAA,EACpC;AAAA;AAGJ,SAAS,MAAM,CAAC,MAAgC;AAAA,EAC5C,OAAY,KAAK,IAAI;AAAA;AAoClB,MAAM,8BAA8B,MAAM;AAAA,EACpC,UAAU;AAAA,EACV;AAAA,EACA,YAA0B;AAAA,EAC1B;AAAA,EACA,QAAmB;AAAA,EACnB,SAA4B,QAAQ;AAAA,EAE7C,WAAW,CAAC,QAAgB,OAAgB;AAAA,IACxC,MAAM,aACF,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IACzD,MAAM,WAAW,+BAA+B,YAAY;AAAA,IAC5D,KAAK,OAAO;AAAA,IACZ,KAAK,SAAS;AAAA,IACd,KAAK,eACD,mCAAmC,wCACnC,kGACA;AAAA;AAEZ;AAEA,SAAS,WAAW,CAChB,MACA,QACyB;AAAA,EAKzB,IAAI;AAAA,EACJ,IAAI;AAAA,IACA,SAAS,OACL,MACA,MACJ;AAAA,IACF,OAAO,KAAc;AAAA,IACnB,MAAM,IAAI,sBAAsB,QAAQ,GAAG;AAAA;AAAA,EAE/C,IAAI,UAAU;AAAA,IAAM,OAAO,CAAC;AAAA,EAC5B,IAAI,MAAM,QAAQ,MAAM,GAAG;AAAA,IAGvB,IAAI,OAAO,SAAS,KAAK,OAAO,OAAO,OAAO,UAAU;AAAA,MAEpD,MAAM,aAAa,OAAO,MAAM,UAAU;AAAA,MAC1C,MAAM,MAAM,aAAa,WAAW,KAAK;AAAA,MACzC,OAAO,OAAO,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,EAAE;AAAA,IAC3C;AAAA,IACA,OAAO;AAAA,EACX;AAAA,EACA,IAAI,OAAO,WAAW;AAAA,IAAU,OAAO;AAAA,EACvC,OAAO,EAAE,OAAO,OAAO;AAAA;AAG3B,SAAS,yBAAyB,CAAC,QAAyC;AAAA,EACxE,QAAQ;AAAA,SACC,QAAQ;AAAA,MACT,OAAO;AAAA,SACN,QAAQ;AAAA,MACT,OAAO;AAAA,SACN,QAAQ;AAAA,MACT,OAAO;AAAA,SACN,QAAQ;AAAA,MACT,OAAO;AAAA;AAAA,MAEP,OAAO;AAAA;AAAA;AAInB,SAAS,wBAAwB,CAAC,WAAoC;AAAA,EAClE,QAAQ;AAAA,SACC;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,MACD,OAAO;AAAA;AAAA,MAEP,OAAO;AAAA;AAAA;AAOZ,IAAU;AAAA,CAAV,CAAU,oBAAV;AAAA,EAiBI,SAAS,OAAO,CACnB,MACA,SACI;AAAA,IACJ,KAAK,QAAQ,eAAe,KAAK;AAAA,IACjC,MAAM,YAAY,CAAC,SAAS;AAAA,IAC5B,IAAI,WAAW;AAAA,MACX,KAAK,OAAO,kBAAkB,KAAK,IAAI;AAAA,IAC3C;AAAA,IACA,MAAM,SAAS,gBAAgB;AAAA,IAC/B,IAAI,QAAQ;AAAA,MACR,MAAM,WAAW,YAAY,KAAK,MAAM,MAAM;AAAA,MAC9C,KAAK,OAAO,YAAY,kBAAkB,QAAQ,IAAI;AAAA,IAC1D;AAAA,IACA,UAAU,oBAAoB,IAAI,GAAG,gBAAgB,CAAC;AAAA;AAAA,EAdnD,gBAAS;AAAA,EAwBT,SAAS,KAAK,CAAC,MAA2B;AAAA,IAC7C,KAAK,QAAQ,eAAe,KAAK;AAAA,IACjC,KAAK,cAAc,0BAA0B,KAAK,MAAM;AAAA,IACxD,KAAK,UAAU,yBAAyB,KAAK,SAAS;AAAA,IACtD,QAAQ,WAAW,WAAW,KAAK,WAAW;AAAA,IAC9C,QAAQ,sBAAsB,aAAa;AAAA,IAC3C,IAAI,CAAC,mBAAmB;AAAA,MACpB,UAAU,WAAW,sBAAsB,OAAO;AAAA,QAC9C,QAAQ,KAAK;AAAA,QACb,WAAW,KAAK;AAAA,QAChB,OAAO,KAAK;AAAA,QACZ,SAAS,KAAK;AAAA,MAClB,CAAC;AAAA,IACL;AAAA,IACA,UAAU,oBAAoB,QAAQ,GAAG,gBAAgB,CAAC;AAAA;AAAA,EAdvD,gBAAS;AAAA,EAkBT,SAAS,QAA8B,CAC1C,MACA,OACA,MACI;AAAA,IACJ,MAAM,OAGF;AAAA,MACA,QAAQ,QAAQ;AAAA,MAChB,MAAM;AAAA,MACN,MAAM;AAAA,IACV;AAAA,IACA,IAAI,MAAM,WAAW,KAAK,MAAM,mBAAmB;AAAA,MAC/C,KAAK,eAAe,KAAK;AAAA,IAC7B;AAAA,IACA,IAAI,MAAM,SAAS;AAAA,MACf,KAAK,UAAU,KAAK;AAAA,IACxB;AAAA,IACA,QAAQ,IAAI;AAAA;AAAA,EAnBT,gBAAS;AAAA,EA0BT,SAAS,GAAG,CAAC,MAAqC;AAAA,IACrD,MAAM,SAAS,gBAAgB;AAAA,IAC/B,MAAM,OAAO,cAAc;AAAA,IAC3B,MAAM,aAAa,iBAAiB,IAAI;AAAA,IACxC,IAAI,WAAW,QAAQ;AAAA,MACnB,MAAM,OAAO,KAAK,UAAU,UAAU;AAAA,MACtC,MAAM,OAAO,mBAAmB,IAAI,IAAI,eAAe,IAAI,IAAI;AAAA,MAC/D,KAAK,SAAS,GAAG;AAAA,CAAQ;AAAA,IAC7B,EAAO;AAAA,MACH,YAAY,KAAK,UAAU,OAAO,QAAQ,UAAU,GAAG;AAAA,QACnD,KAAK,SAAS,GAAG,QAAQ;AAAA,CAAS;AAAA,MACtC;AAAA;AAAA;AAAA,EAXD,gBAAS;AAAA,EAmBT,SAAS,cAAc,CAAC,MAAgC;AAAA,IAC3D,MAAM,SAAS,gBAAgB;AAAA,IAC/B,IAAI,UAAU,QAAQ,KAAK,QAAQ,MAAM;AAAA,MACrC,KAAK,OAAO,kBAAkB,KAAK,IAAI;AAAA,MACvC,IAAI,QAAQ;AAAA,QACR,KAAK,OAAO,kBAAkB,YAAY,KAAK,MAAM,MAAM,CAAC;AAAA,MAChE;AAAA,IACJ;AAAA,IACA,MAAM,SAAS,oBAAoB,IAAI;AAAA,IACvC,MAAM,QAAkB,CAAC;AAAA,IACzB,MAAM,OAAO,cAAc;AAAA,IAC3B,YACI,QACA,gBAAgB,GAChB,CAAC,QAAgB;AAAA,MACb,MAAM,KAAK,GAAG;AAAA,OAElB,mBAAmB,IAAI,CAC3B;AAAA,IACA,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAAA,EAnBnB,gBAAS;AAAA,GAxGH;;;ACztBjB,IAAM,WAAW;AACjB,IAAM,mBAAmB;AAEzB,IAAM,wBAAwB,IAAI,IAAI;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AAKD,IAAM,yBAAyB,IAAI,IAAI;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AAED,IAAM,eACF;AAIJ,IAAM,gBAAgB;AAEtB,IAAM,cAAc;AAEpB,IAAM,qBAAqB;AAE3B,IAAM,oBAAoB;AAK1B,IAAM,cAAc;AAGpB,IAAM,qBAAqB;AAO3B,SAAS,SAAS,CAAC,OAAuB;AAAA,EACtC,IAAI,OAAO;AAAA,EACX,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACnC,QAAQ,MAAM,WAAW,CAAC;AAAA,IAC1B,OAAO,KAAK,KAAK,MAAM,QAAU;AAAA,EACrC;AAAA,EACA,QAAQ,SAAS,GAAG,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAAA;AAGpD,SAAS,SAAS,CAAC,KAAqB;AAAA,EACpC,IAAI;AAAA,IACA,MAAM,MAAM,IAAI,IAAI,GAAG;AAAA,IACvB,OAAO,GAAG,IAAI,aAAa,IAAI;AAAA,IACjC,MAAM;AAAA,IACJ,OAAO,OAAO,UAAU,GAAG;AAAA;AAAA;AAInC,SAAS,oBAAoB,CAAC,OAAuB;AAAA,EACjD,IAAI,MAAM;AAAA,EACV,MAAM,IAAI,QAAQ,aAAa,MAAM,QAAQ;AAAA,EAC7C,MAAM,IAAI,QAAQ,aAAa,CAAC,UAAU;AAAA,IAGtC,MAAM,WAAW,MAAM,MAAM,kBAAkB,IAAI,MAAM;AAAA,IACzD,MAAM,OAAO,WAAW,MAAM,MAAM,GAAG,CAAC,SAAS,MAAM,IAAI;AAAA,IAC3D,OAAO,GAAG,UAAU,IAAI,IAAI;AAAA,GAC/B;AAAA,EACD,MAAM,IAAI,QACN,mBACA,CAAC,QAAQ,MAAc,QAAgB,SACnC,GAAG,OAAO,SAAS,YAC3B;AAAA,EACA,MAAM,IAAI,QAAQ,eAAe,CAAC,UAAU,SAAS,UAAU,KAAK,GAAG;AAAA,EACvE,MAAM,IAAI,QAAQ,cAAc,CAAC,UAAU,QAAQ,UAAU,KAAK,GAAG;AAAA,EACrE,MAAM,IAAI,QAAQ,oBAAoB,MAAM,QAAQ;AAAA,EACpD,IAAI,IAAI,SAAS,kBAAkB;AAAA,IAC/B,MAAM,GAAG,IAAI,MAAM,GAAG,gBAAgB;AAAA,EAC1C;AAAA,EACA,OAAO;AAAA;AAUX,SAAS,UAAU,CAAC,MAAwB;AAAA,EACxC,OAAO,KACF,QAAQ,sBAAsB,OAAO,EACrC,QAAQ,yBAAyB,OAAO,EACxC,MAAM,SAAS,EACf,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAC1B,OAAO,OAAO;AAAA;AAGvB,SAAS,eAAe,CAAC,MAAuB;AAAA,EAC5C,MAAM,SAAS,WAAW,IAAI;AAAA,EAC9B,SAAS,IAAI,EAAG,IAAI,OAAO,QAAQ,KAAK;AAAA,IACpC,MAAM,QAAQ,OAAO;AAAA,IACrB,IAAI,sBAAsB,IAAI,KAAK,GAAG;AAAA,MAClC,OAAO;AAAA,IACX;AAAA,IACA,IAAI,UAAU,SAAS,UAAU,QAAQ;AAAA,MACrC,MAAM,OAAO,OAAO,IAAI;AAAA,MACxB,IAAI,QAAQ,uBAAuB,IAAI,IAAI,GAAG;AAAA,QAC1C,OAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AASJ,SAAS,cAAc,CAC1B,MACA,OAC0B;AAAA,EAC1B,IAAI,UAAU,aAAa,UAAU,MAAM;AAAA,IACvC;AAAA,EACJ;AAAA,EACA,IAAI,gBAAgB,IAAI,GAAG;AAAA,IACvB,OAAO;AAAA,EACX;AAAA,EACA,IAAI,OAAO,UAAU,aAAa,OAAO,UAAU,UAAU;AAAA,IACzD,OAAO;AAAA,EACX;AAAA,EACA,IAAI,OAAO,UAAU,UAAU;AAAA,IAE3B,OAAO;AAAA,EACX;AAAA,EACA,OAAO,qBAAqB,KAAK;AAAA;AAQ9B,SAAS,gBAAgB,CAC5B,YAC8B;AAAA,EAC9B,MAAM,MAAsC,CAAC;AAAA,EAC7C,YAAY,MAAM,UAAU,OAAO,QAAQ,UAAU,GAAG;AAAA,IACpD,MAAM,WAAW,eAAe,MAAM,KAAK;AAAA,IAC3C,IAAI,aAAa,WAAW;AAAA,MACxB,IAAI,QAAQ;AAAA,IAChB;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;;;ACnLX,IAAM,iBAAiB,UAAmC,YAAY;AACtE,IAAM,qBAAqB,IAAI,IAAY,eAAe;AAC1D,IAAM,kBAAkB,IAAI,IAAY,WAAW;AAoCnD,SAAS,oBAAoB,CAAC,KAAuC;AAAA,EACjE,MAAM,SAAkC,CAAC;AAAA,EACzC,MAAM,aAAa,IAAI,uBAAuB,CAAC;AAAA,EAC/C,MAAM,YAAY,IAAI,iBAAiB,CAAC;AAAA,EACxC,SAAS,IAAI,EAAG,IAAI,WAAW,QAAQ,KAAK;AAAA,IACxC,MAAM,QAAQ,UAAU;AAAA,IACxB,IAAI,UAAU,WAAW;AAAA,MACrB;AAAA,IACJ;AAAA,IACA,MAAM,OAAO,WAAW,GAAG,KAAK;AAAA,IAChC,IAAI,MAAM;AAAA,MACN,OAAO,QAAQ;AAAA,IACnB;AAAA,EACJ;AAAA,EACA,YAAY,KAAK,UAAU,OAAO,QAAQ,IAAI,KAAK,CAAC,GAAG;AAAA,IACnD,IAAI,UAAU,WAAW;AAAA,MACrB,OAAO,OAAO;AAAA,IAClB;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAYX,SAAS,iBAAiB,CAAC,KAAsB;AAAA,EAC7C,MAAM,QAAkB,CAAC;AAAA,EACzB,IAAI,UAA0B;AAAA,EAC9B,OAAO,SAAS;AAAA,IACZ,MAAM,OAAO,QAAQ,KAAK;AAAA,IAC1B,IAAI,MAAM;AAAA,MACN,MAAM,QAAQ,IAAI;AAAA,IACtB;AAAA,IACA,UAAU,QAAQ;AAAA,EACtB;AAAA,EAEA,IAAI,MAAM,SAAS,GAAG;AAAA,IAClB,MAAM,MAAM;AAAA,EAChB;AAAA,EAGA,OAAO,CAAC,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,KAAK,GAAG;AAAA;AAGhE,SAAS,cAAc,CAAC,OAAuC;AAAA,EAC3D,OAAO,OAAO,UAAU,YAAY,mBAAmB,IAAI,KAAK;AAAA;AAGpE,SAAS,WAAW,CAAC,OAAoC;AAAA,EACrD,OAAO,OAAO,UAAU,YAAY,gBAAgB,IAAI,KAAK;AAAA;AAGjE,SAAS,cAAc,CAAC,OAAuC;AAAA,EAC3D,OAAO,UAAU,QAAQ,OAAO,UAAU;AAAA;AAG9C,SAAS,eAAe,CAAC,aAA6B;AAAA,EAClD,MAAM,UAAU,YAAY,QAAQ,OAAO,GAAG;AAAA,EAC9C,OAAO,sCAAsC;AAAA;AAiBjD,QAAQ,UAAU,gBAAgB,QAAS,CACvC,SAEA,IACA,YAIO;AAAA,EACP,MAAM,UAAU;AAAA,EAEhB,OAAO,KAAK,OAAO,UAAU,SAAoB;AAAA,IAC7C,MAAM,gBAAgB,kBAAkB,OAAO;AAAA,IAC/C,MAAM,QACF,OAAO,eAAe,aAAa,WAAW,GAAG,IAAI,IAAI;AAAA,IAC7D,MAAM,YAAY,YAAY,IAAI;AAAA,IAClC,IAAI;AAAA,IACJ,OAAO,SAAS,MAAM,WAAW,GAAG,GAAG,IAAI,CAAC;AAAA,IAC5C,IAAI,OAAO;AAAA,MACP,eACI,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAEzD,OAAO,MACH,mBAAmB,yBAAyB,cAChD;AAAA,MACA,MAAM,QAAQ;AAAA,MAUd,MAAM,qBACF,OAAO,MAAM,iBAAiB,WACxB,MAAM,eACN;AAAA,MAGV,MAAM,eACF,OAAO,MAAM,WAAW,YACxB,MAAM,WAAW,QAAQ,WACxB,OAAO,OAAO,OAAO,EAAe,SAAS,MAAM,MAAM,IACnD,MAAM,SACP;AAAA,MACV,MAAM,cAAc,gBAAgB,QAAQ;AAAA,MAC5C,MAAM,iBAAiB,MAAM,aAAa,MAAM;AAAA,MAChD,MAAM,kBAAkB,eAAe,cAAc,IAC/C,iBACA;AAAA,MACN,MAAM,aAAa,MAAM,SAAS,MAAM;AAAA,MACxC,MAAM,cAAc,YAAY,UAAU,IACpC,aACA;AAAA,MACN,MAAM,eAAe,MAAM,WAAW,MAAM;AAAA,MAC5C,MAAM,gBAAgB,eAAe,YAAY,IAC3C,eACA;AAAA,MACN,gBAAgB,MAAM;AAAA,QAClB,QAAQ;AAAA,WACJ,kBAAkB,EAAE,WAAW,gBAAgB,IAAI,CAAC;AAAA,QACxD,SAAS;AAAA,QACT,cACI,sBAAsB,gBAAgB,aAAa;AAAA,WACnD,cAAc,EAAE,OAAO,YAAY,IAAI,CAAC;AAAA,WACxC,gBAAgB,EAAE,SAAS,cAAc,IAAI,CAAC;AAAA,MACtD,CAAC;AAAA,MACD,QAAQ,KAAK,WAAW,YAAY;AAAA,IACxC;AAAA,IACA,MAAM,aAAa,YAAY,IAAI,IAAI;AAAA,IAGvC,MAAM,UACF,CAAC,UACA,QAAQ,aAAa,aAAa,QAAQ,aAAa;AAAA,IAW5D,UAAU,WACN,eACA,iBAAiB;AAAA,SACV,qBAAqB,OAAO;AAAA,SAC5B;AAAA,MACH,SAAS;AAAA,MACT,UAAU,OAAO,UAAU;AAAA,MAC3B,SAAS,OAAO,OAAO;AAAA,SACnB,eAAe,EAAE,aAAa,IAAI,CAAC;AAAA,IAC3C,CAAC,CACL;AAAA,GACH;AAAA;;ACnKL,IAAM,qBAAqB,UAAmB,uBAAuB;AACrE,IAAM,qBAAqB,UACvB,uBACJ;;AClEO,IAAM,0BAA0B,IAAI,KAAK;;ACWhD,IAAM,WAAW,UAA6B,mBAAmB;;AC0O1D,IAAM,cAAc;AAAA,EAEvB,WAAW;AAAA,EAEX,SAAS;AAAA,EAET,aAAa;AAAA,EAEb,SAAS;AAAA,EAET,QAAQ;AACZ;;;ACjQA,IAAM,oBAAoE;AAAA,GACrE,YAAY,UAAU;AAAA,GACtB,YAAY,SAAS;AAAA,GACrB,YAAY,cAAc;AAAA,GAC1B,YAAY,UAAU;AAC3B;;ACTA,IAAM,oBAAoB,IAAI,IAAI;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AAGD,IAAM,mBAAmB,IAAI,IAAI;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;;ACtBM,IAAU;AAAA,CAAV,CAAU,iBAAV;AAAA,EAEI,SAAS,QAAQ,CAAC,SAAuB;AAAA,IAC5C,cAAc,EAAE,SAAS,GAAG;AAAA,CAAW;AAAA;AAAA,EADpC,aAAS;AAAA,GAFH;;ACCjB,IAAM,cAAc,UAChB,yBACJ;;AC0DO,IAAM,oCAA4D;AAAA,EACrE,sBAAsB;AAC1B;AAEO,SAAS,oBAAoB,CAAC,aAA6B;AAAA,EAC9D,OAAO,kCAAkC,gBAAgB;AAAA;AAQtD,SAAS,sBAAsB,CAAC,cAA8B;AAAA,EACjE,OAAO,aAAa,QAAQ,OAAO,GAAG;AAAA;AAO1C,eAAsB,YAAY,CAC9B,KACA,aACiD;AAAA,EACjD,MAAM,aAAa,MAAM,IAAG,QAAQ,WAAW;AAAA,EAC/C,MAAM,eAAe,WAAW,KAAK,CAAC,MAAc,EAAE,SAAS,OAAO,CAAC;AAAA,EAEvE,IAAI,CAAC,cAAc;AAAA,IACf,MAAM,IAAI,MACN,0BAA0B,6CAC9B;AAAA,EACJ;AAAA,EAEA,MAAM,cAAc,MAAM,IAAG,SACzB,IAAG,KAAK,KAAK,aAAa,YAAY,GACtC,OACJ;AAAA,EAEA,IAAI,CAAC,aAAa;AAAA,IACd,MAAM,IAAI,MACN,8BAA8B,mCAClC;AAAA,EACJ;AAAA,EAEA,OAAO,YAAY,UAAU,WACzB,MAAM,KAAK,MAAM,WAAW,CAChC;AAAA,EACA,IAAI,YAAY;AAAA,IACZ,MAAM,IAAI,MACN,+CAA+C,eACnD;AAAA,EACJ;AAAA,EAEA,MAAM,OAAO,iBAAiB,QAAQ,YAAY;AAAA,EAElD,OAAO,EAAE,MAAM,aAAa;AAAA;AAGhC,SAAS,gBAAgB,CAAC,QAAiB,cAAgC;AAAA,EACvE,IAAI,CAAC,SAAS,MAAM,GAAG;AAAA,IACnB,MAAM,IAAI,MACN,uBAAuB,0CAC3B;AAAA,EACJ;AAAA,EAEA,IAAI,OAAO,OAAO,eAAe,YAAY,CAAC,OAAO,WAAW,KAAK,GAAG;AAAA,IACpE,MAAM,IAAI,MAAM,yCAAyC;AAAA,EAC7D;AAAA,EAEA,IAAI,CAAC,MAAM,QAAQ,OAAO,QAAQ,KAAK,OAAO,SAAS,WAAW,GAAG;AAAA,IACjE,MAAM,IAAI,MAAM,uCAAuC;AAAA,EAC3D;AAAA,EAEA,YAAY,OAAO,YAAY,OAAO,SAAS,QAAQ,GAAG;AAAA,IACtD,IAAI,CAAC,SAAS,OAAO,GAAG;AAAA,MACpB,MAAM,IAAI,MACN,gCAAgC,2BACpC;AAAA,IACJ;AAAA,IAEA,IACI,OAAO,QAAQ,wBAAwB,YACvC,CAAC,QAAQ,oBAAoB,KAAK,GACpC;AAAA,MACE,MAAM,WACF,OAAO,QAAQ,SAAS,WAClB,qDACA;AAAA,MACV,MAAM,IAAI,MACN,gCAAgC,yCAAyC,iJAC7E;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,OAAO;AAAA;AAGX,SAAS,QAAQ,CAAC,OAAkD;AAAA,EAChE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAAA;AAOvE,SAAS,kBAAkB,CAAC,KAAiB,WAA2B;AAAA,EAC3E,MAAM,WAAW,IAAG,KAAK,QAAQ,SAAS;AAAA,EAC1C,IAAI,SAAS,SAAS,OAAO,GAAG;AAAA,IAC5B,OAAO,IAAG,KAAK,QAAQ,QAAQ;AAAA,EACnC;AAAA,EACA,OAAO;AAAA;AAOX,eAAsB,oBAAoB,CACtC,KACA,UACA,eACa;AAAA,EACb,OAAO,WAAW,WAAW,MAAM,WAC/B,IAAG,SAAS,UAAU,OAAO,CACjC;AAAA,EACA,IAAI,aAAa,CAAC,SAAS;AAAA,IACvB,OAAO,MACH,yCAAyC,WAAW,WAAW,cACnE;AAAA,IACA;AAAA,EACJ;AAAA,EAEA,OAAO,YAAY,UAAU,WACzB,MAAM,KAAK,MAAM,OAAO,CAC5B;AAAA,EACA,IAAI,YAAY;AAAA,IACZ,OAAO,MACH,0CAA0C,WAAW,SACzD;AAAA,IACA;AAAA,EACJ;AAAA,EAEA,OAAO,aAAa;AAAA,EAEpB,OAAO,cAAc,MAAM,WACvB,IAAG,UAAU,UAAU,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC,CAC1D;AAAA,EACA,IAAI,YAAY;AAAA,IACZ,OAAO,MACH,+CAA+C,WAAW,SAC9D;AAAA,EACJ,EAAO;AAAA,IACH,OAAO,KACH,6CAA6C,eACjD;AAAA;AAAA;AAQR,eAAsB,gBAAgB,CAClC,KACA,aAC8D;AAAA,EAC9D,MAAM,YAAY,IAAG,KAAK,QAAQ,aAAa,IAAI;AAAA,EAEnD,OAAO,UAAU,WAAW,MAAM,WAAW,IAAG,QAAQ,SAAS,CAAC;AAAA,EAElE,IAAI,UAAU;AAAA,IACV,OAAO,MACH,mDAAmD,SAAS,SAChE;AAAA,IACA;AAAA,EACJ;AAAA,EAEA,MAAM,WAAW,QAAQ,KAAK,CAAC,UAAkB,MAAM,SAAS,OAAO,CAAC;AAAA,EAExE,IAAI,CAAC,UAAU;AAAA,IACX,OAAO,KAAK,mDAAmD;AAAA,IAC/D;AAAA,EACJ;AAAA,EAEA,MAAM,WAAW,IAAG,KAAK,KAAK,WAAW,QAAQ;AAAA,EACjD,OAAO,WAAW,WAAW,MAAM,WAC/B,IAAG,SAAS,UAAU,OAAO,CACjC;AAAA,EAEA,IAAI,aAAa,YAAY,MAAM;AAAA,IAC/B,OAAO,MACH,8BAA8B,WAAW,WAAW,sBACxD;AAAA,IACA;AAAA,EACJ;AAAA,EAEA,OAAO,YAAY,UAAU,WACzB,MACI,KAAK,MAAM,OAAO,CAI1B;AAAA,EAEA,IAAI,YAAY;AAAA,IACZ,OAAO,MAAM,+BAA+B,WAAW,SAAS;AAAA,IAChE;AAAA,EACJ;AAAA,EAEA,MAAM,aAAa,OAAO;AAAA,EAC1B,MAAM,YAAY,OAAO,WAAW,IAAI;AAAA,EAExC,IAAI,CAAC,YAAY;AAAA,IACb,OAAO,KAAK,oCAAoC;AAAA,IAChD;AAAA,EACJ;AAAA,EAEA,OAAO,KAAK,wBAAwB,yBAAyB,aAAa;AAAA,EAE1E,OAAO;AAAA,IACH;AAAA,IACA,WAAW,aAAa,OAAO,WAAW;AAAA,EAC9C;AAAA;AAOJ,eAAsB,kBAAkB,CACpC,KACA,aACA,eACa;AAAA,EACb,MAAM,YAAY,IAAG,KAAK,QAAQ,aAAa,IAAI;AAAA,EACnD,OAAO,UAAU,WAAW,MAAM,WAAW,IAAG,QAAQ,SAAS,CAAC;AAAA,EAClE,IAAI;AAAA,IAAU;AAAA,EAEd,MAAM,WAAW,QAAQ,KAAK,CAAC,UAAkB,MAAM,SAAS,OAAO,CAAC;AAAA,EACxE,IAAI,CAAC;AAAA,IAAU;AAAA,EAEf,MAAM,WAAW,IAAG,KAAK,KAAK,WAAW,QAAQ;AAAA,EACjD,MAAM,qBAAqB,KAAI,UAAU,aAAa;AAAA;AAG1D,eAAsB,kCAAkC,CACpD,KACA,YACA,SACoC;AAAA,EACpC,IAAI,SAAS,kBAAkB;AAAA,IAK3B,OAAO;AAAA,MACH,QAAQ;AAAA,MACR,SACI;AAAA,MACJ,cAAc,0BACV,IAAG,KAAK,QAAQ,UAAU,CAC9B;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,OAAO,mBAAmB,gBAAgB,MAAM,WAC5C,gCAAgC,KAAI,UAAU,CAClD;AAAA,EACA,IAAI,mBAAmB;AAAA,IACnB,OAAO;AAAA,MACH,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,cAAc,qCACV,YACA,kBAAkB,OACtB;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,OAAO;AAAA;AAGX,eAAe,+BAA+B,CAC1C,KACA,YACoC;AAAA,EACpC,MAAM,qBAAqB,IAAG,KAAK,QAAQ,UAAU;AAAA,EACrD,MAAM,YAAY,MAAM,0BAA0B,KAAI,kBAAkB;AAAA,EAExE,IAAI,UAAU,WAAW,YAAY;AAAA,IAQjC,OAAO;AAAA,MACH,QAAQ;AAAA,MACR,SACI;AAAA,MACJ,cAAc,4BAA4B,kBAAkB;AAAA,IAChE;AAAA,EACJ;AAAA,EAEA,IAAI,UAAU,WAAW,WAAW;AAAA,IAChC,OAAO,UAAU;AAAA,EACrB;AAAA,EAEA,MAAM,eAAe,UAAU;AAAA,EAC/B,MAAM,cAAc,IAAG,KAAK,QAAQ,YAAY;AAAA,EAChD,MAAM,qBAAqB,IAAG,KAAK,SAC/B,aACA,kBACJ;AAAA,EAEA,IACI,uBAAuB,MACvB,mBAAmB,WAAW,IAAI,KAClC,IAAG,KAAK,WAAW,kBAAkB,GACvC;AAAA,IACE,OAAO;AAAA,MACH,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,UAAU;AAAA,MACV,cAAc;AAAA,cAAgE;AAAA,cAA4B;AAAA,IAC9G;AAAA,EACJ;AAAA,EAEA,OAAO,kBAAkB,eAAe,MAAM,gBAC1C,KACA,kBACJ;AAAA,EACA,IAAI,kBAAkB;AAAA,IAClB,OAAO;AAAA,MACH,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,UAAU;AAAA,MACV,cAAc,qCACV,oBACA,iBAAiB,OACrB;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,OAAO,sBAAsB,mBAAmB,MAAM,oBAClD,KACA,YAAY,UACZ,YAAY,cAChB;AAAA,EACA,IAAI,sBAAsB;AAAA,IACtB,OAAO;AAAA,MACH,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,UAAU;AAAA,MACV,cAAc,qCACV,oBACA,qBAAqB,OACzB;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,sBAAsB,uBACxB,IAAG,KAAK,KAAK,oBAAoB,YAAY,QAAQ,CACzD;AAAA,EAEA,OAAO,eAAe,YAAY,MAAM,qBACpC,KACA,YACJ;AAAA,EACA,IAAI,eAAe;AAAA,IACf,OAAO;AAAA,MACH,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,UAAU;AAAA,MACV,SAAS;AAAA,MACT,cAAc,qCACV,oBACA,cAAc,OAClB;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,kBAAkB,SAAS,SAAS,KACtC,CAAC,YACG,uBAAuB,QAAQ,mBAAmB,MAClD,mBACR;AAAA,EACA,IAAI,iBAAiB;AAAA,IACjB,OAAO;AAAA,MACH,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,UAAU;AAAA,MACV,SAAS;AAAA,MACT,WACI,OAAO,gBAAgB,OAAO,WACxB,gBAAgB,KAChB;AAAA,MACV,cAAc,qCAAqC,WAAW;AAAA,IAClE;AAAA,EACJ;AAAA,EAEA,MAAM,YAAY,OAAO,WAAW;AAAA,EACpC,SAAS,SAAS,KAAK;AAAA,IACnB,MAAM,qBAAqB,gBAAgB,WAAW;AAAA,IACtD,qBAAqB;AAAA,IACrB,IAAI;AAAA,EACR,CAAC;AAAA,EACD,SAAS,QAAQ,WAAW,SAAS;AAAA,EAErC,OAAO,cAAc,MAAM,WACvB,IAAG,UACC,cACA,GAAG,KAAK,UAAU,SAAS,SAAS,MAAM,CAAC;AAAA,CAC/C,CACJ;AAAA,EACA,IAAI,YAAY;AAAA,IACZ,OAAO;AAAA,MACH,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,UAAU;AAAA,MACV,SAAS;AAAA,MACT,cAAc,qCACV,oBACA,WAAW,OACf;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,OAAO;AAAA,IACH,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,cAAc,qCAAqC,WAAW;AAAA,EAClE;AAAA;AAQJ,eAAsB,yBAAyB,CAC3C,KACA,YACgC;AAAA,EAChC,IAAI,aAAa,IAAG,KAAK,QAAQ,UAAU;AAAA,EAE3C,OAAO,MAAM;AAAA,IACT,OAAO,cAAc,WAAW,MAAM,WAClC,IAAG,QAAQ,UAAU,CACzB;AAAA,IACA,IAAI,cAAc;AAAA,MACd,OAAO;AAAA,QACH,QAAQ;AAAA,QACR,cAAc;AAAA,UACV,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,cAAc,qCACV,YACA,sDAAsD;AAAA,EAAe,aAAa,SACtF;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,IAEA,MAAM,gBAAgB,QAAQ,OAAO,CAAC,UAClC,MAAM,SAAS,OAAO,CAC1B;AAAA,IACA,IAAI,cAAc,SAAS,GAAG;AAAA,MAC1B,OAAO;AAAA,QACH,QAAQ;AAAA,QACR,cAAc;AAAA,UACV,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,cAAc,iCAAiC,eAAe,cAAc,KAAK,IAAI,qCAAqC;AAAA,QAC9H;AAAA,MACJ;AAAA,IACJ;AAAA,IAEA,IAAI,cAAc,WAAW,GAAG;AAAA,MAC5B,OAAO;AAAA,QACH,QAAQ;AAAA,QACR,cAAc,IAAG,KAAK,KAAK,YAAY,cAAc,EAAE;AAAA,MAC3D;AAAA,IACJ;AAAA,IAEA,MAAM,YAAY,IAAG,KAAK,QAAQ,UAAU;AAAA,IAC5C,IAAI,cAAc,YAAY;AAAA,MAC1B,OAAO,EAAE,QAAQ,WAAW;AAAA,IAChC;AAAA,IAEA,aAAa;AAAA,EACjB;AAAA;AAGJ,eAAe,eAAe,CAC1B,KACA,YACgD;AAAA,EAChD,MAAM,aAAa,IAAG,KAAK,KAAK,YAAY,gBAAgB;AAAA,EAC5D,IAAI,MAAM,IAAG,OAAO,UAAU,GAAG;AAAA,IAC7B,OAAO;AAAA,MACH;AAAA,MACA;AAAA,QACI,UAAU;AAAA,QACV,UAAU;AAAA,QACV,gBAAgB;AAAA,MACpB;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,kBAAkB,IAAG,KAAK,KAAK,YAAY,cAAc;AAAA,EAC/D,IAAI,MAAM,IAAG,OAAO,eAAe,GAAG;AAAA,IAClC,OAAO;AAAA,MACH;AAAA,MACA;AAAA,QACI,UAAU;AAAA,QACV,UAAU;AAAA,QACV,gBAAgB;AAAA,MACpB;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,OAAO;AAAA,IACH,IAAI,MACA,4BAA4B,sDAChC;AAAA,IACA;AAAA,EACJ;AAAA;AAGJ,eAAe,mBAAmB,CAC9B,KACA,UACA,gBACgD;AAAA,EAChD,OAAO,WAAW,cAAc,MAAM,WAClC,IAAG,SAAS,UAAU,OAAO,CACjC;AAAA,EACA,IAAI,aAAa,CAAC,YAAY;AAAA,IAC1B,OAAO,CAAC,aAAa,IAAI,MAAM,kBAAkB,WAAW,GAAG,IAAI;AAAA,EACvE;AAAA,EAEA,OAAO,YAAY,UAAU,WACzB,MAAM,KAAK,MAAM,UAAU,CAC/B;AAAA,EACA,IAAI,YAAY;AAAA,IACZ,OAAO;AAAA,MACH,IAAI,MAAM,iCAAiC,WAAW,SAAS;AAAA,MAC/D;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,IAAI,CAAC,SAAS,MAAM,GAAG;AAAA,IACnB,OAAO,CAAC,IAAI,MAAM,yBAAyB,UAAU,GAAG,IAAI;AAAA,EAChE;AAAA,EAEA,MAAM,gBAAgB,OAAO;AAAA,EAC7B,MAAM,aACF,kBAAkB,SAAS,aAAa,IAClC,WAAW,cAAc,UAAU,IACnC;AAAA,EACV,MAAM,cAAc,cAAc,WAAW,OAAO,WAAW;AAAA,EAE/D,IAAI,CAAC,aAAa;AAAA,IACd,OAAO,CAAC,IAAI,MAAM,4BAA4B,UAAU,GAAG,IAAI;AAAA,EACnE;AAAA,EAEA,OAAO;AAAA,IACH;AAAA,IACA;AAAA,MACI;AAAA,IACJ;AAAA,EACJ;AAAA;AAGJ,eAAsB,oBAAoB,CACtC,KACA,cAUF;AAAA,EACE,OAAO,WAAW,cAAc,MAAM,WAClC,IAAG,SAAS,cAAc,OAAO,CACrC;AAAA,EACA,IAAI,aAAa,CAAC,YAAY;AAAA,IAC1B,OAAO;AAAA,MACH,aACI,IAAI,MAAM,iCAAiC,cAAc;AAAA,MAC7D;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,OAAO,YAAY,UAAU,WACzB,MAAM,KAAK,MAAM,UAAU,CAC/B;AAAA,EACA,IAAI,YAAY;AAAA,IACZ,OAAO;AAAA,MACH,IAAI,MAAM,kCAAkC,WAAW,SAAS;AAAA,MAChE;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,IAAI,CAAC,SAAS,MAAM,GAAG;AAAA,IACnB,OAAO;AAAA,MACH,IAAI,MACA,0BAA0B,0CAC9B;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,IAAI,CAAC,MAAM,QAAQ,OAAO,QAAQ,GAAG;AAAA,IACjC,OAAO;AAAA,MACH,IAAI,MACA,0BAA0B,6CAC9B;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,WAA0B,CAAC;AAAA,EACjC,YAAY,OAAO,YAAY,OAAO,SAAS,QAAQ,GAAG;AAAA,IACtD,IAAI,CAAC,SAAS,OAAO,GAAG;AAAA,MACpB,OAAO;AAAA,QACH,IAAI,MACA,mCAAmC,2BACvC;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAAA,IAEA,MAAM,sBAAsB,WAAW,QAAQ,mBAAmB;AAAA,IAClE,IAAI,CAAC,qBAAqB;AAAA,MACtB,OAAO;AAAA,QACH,IAAI,MACA,mCAAmC,+FACvC;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAAA,IAEA,SAAS,KAAK;AAAA,SACP;AAAA,MACH,MAAM,WAAW,QAAQ,IAAI,KAAK;AAAA,MAClC,qBAAqB;AAAA,MACrB,IAAI,WAAW,QAAQ,EAAE,KAAK;AAAA,IAClC,CAAC;AAAA,EACL;AAAA,EAEA,OAAO,CAAC,MAAM,EAAE,SAAS,QAAQ,SAAS,CAAC;AAAA;AAG/C,SAAS,UAAU,CAAC,OAAoC;AAAA,EACpD,OAAO,OAAO,UAAU,YAAY,MAAM,SAAS,IAAI,QAAQ;AAAA;AAGnE,SAAS,oCAAoC,CAAC,aAA6B;AAAA,EACvE,OAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA,8FAA8F;AAAA,EAClG,EAAE,KAAK;AAAA,CAAI;AAAA;AAGf,SAAS,oCAAoC,CACzC,YACA,SACM;AAAA,EACN,OAAO;AAAA,IACH;AAAA,IACA,kCAAkC;AAAA,IAClC,YAAY;AAAA,EAChB,EAAE,KAAK;AAAA,CAAI;AAAA;AAGf,SAAS,2BAA2B,CAAC,YAA4B;AAAA,EAC7D,OAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA,gHAAgH;AAAA,EACpH,EAAE,KAAK;AAAA,CAAI;AAAA;AAGf,SAAS,yBAAyB,CAAC,YAA4B;AAAA,EAC3D,OAAO;AAAA,IACH;AAAA,IACA,kEAAkE;AAAA,EACtE,EAAE,KAAK;AAAA,CAAI;AAAA;AA+Bf,eAAsB,6BAA6B,CAC/C,KACA,YACA,cACgB;AAAA,EAChB,OAAO,SAAS,YAAY,MAAM,qBAAqB,KAAI,YAAY;AAAA,EACvE,IAAI,SAAS;AAAA,IACT,MAAM;AAAA,EACV;AAAA,EACA,IAAI,CAAC,UAAU;AAAA,IACX,MAAM,IAAI,MAAM,qCAAqC,cAAc;AAAA,EACvE;AAAA,EAEA,MAAM,cAAc,IAAG,KAAK,QAAQ,YAAY;AAAA,EAChD,MAAM,iBAAiB,MAAM,iBAAiB,KAAI,UAAU;AAAA,EAE5D,WAAW,WAAW,SAAS,UAAU;AAAA,IACrC,MAAM,eAAe,IAAG,KAAK,QACzB,aACA,IAAG,KAAK,QACJ,uBAAuB,QAAQ,mBAAmB,CACtD,CACJ;AAAA,IACA,MAAM,gBAAgB,MAAM,iBAAiB,KAAI,YAAY;AAAA,IAC7D,IAAI,kBAAkB,gBAAgB;AAAA,MAClC,OAAO;AAAA,IACX;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAGX,eAAe,gBAAgB,CAAC,KAAiB,GAA4B;AAAA,EACzE,OAAO,KAAK,QAAQ,MAAM,WAAW,IAAG,SAAS,CAAC,CAAC;AAAA,EACnD,OAAO,OAAO,CAAC,OAAO,IAAI;AAAA;;;AC/zB9B,0BAAS;AACT,IAAI,WAAU,eAAc,GAAG;AAW/B,IAAI;AAEJ,IAAI;AAAA,EACA,SAAS,SAAQ,gBAAgB,EAAE;AAAA,EAEvC,OAAO,GAAG;AA2BV,IAAI,KAAK;AAAT,IAAqB,MAAM;AAA3B,IAAwC,MAAM;AAE9C,IAAI,OAAO,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAgB,GAAG,GAAoB,CAAC,CAAC;AAEhJ,IAAI,OAAO,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAiB,GAAG,CAAC,CAAC;AAEvI,IAAI,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;AAEpF,IAAI,OAAO,QAAS,CAAC,IAAI,OAAO;AAAA,EAC5B,IAAI,IAAI,IAAI,IAAI,EAAE;AAAA,EAClB,SAAS,IAAI,EAAG,IAAI,IAAI,EAAE,GAAG;AAAA,IACzB,EAAE,KAAK,SAAS,KAAK,GAAG,IAAI;AAAA,EAChC;AAAA,EAEA,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG;AAAA,EACrB,SAAS,IAAI,EAAG,IAAI,IAAI,EAAE,GAAG;AAAA,IACzB,SAAS,IAAI,EAAE,GAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG;AAAA,MAClC,EAAE,KAAO,IAAI,EAAE,MAAO,IAAK;AAAA,IAC/B;AAAA,EACJ;AAAA,EACA,OAAO,EAAE,GAAM,EAAK;AAAA;AAExB,IAAI,KAAK,KAAK,MAAM,CAAC;AAArB,IAAwB,KAAK,GAAG;AAAhC,IAAmC,QAAQ,GAAG;AAE9C,GAAG,MAAM,KAAK,MAAM,OAAO;AAC3B,IAAI,KAAK,KAAK,MAAM,CAAC;AAArB,IAAwB,KAAK,GAAG;AAAhC,IAAmC,QAAQ,GAAG;AAE9C,IAAI,MAAM,IAAI,IAAI,KAAK;AACvB,KAAS,IAAI,EAAG,IAAI,OAAO,EAAE,GAAG;AAAA,EAExB,KAAM,IAAI,UAAW,KAAO,IAAI,UAAW;AAAA,EAC/C,KAAM,IAAI,UAAW,KAAO,IAAI,UAAW;AAAA,EAC3C,KAAM,IAAI,UAAW,KAAO,IAAI,SAAW;AAAA,EAC3C,IAAI,OAAQ,IAAI,UAAW,KAAO,IAAI,QAAW,MAAO;AAC5D;AAJQ;AAFC;AAUT,IAAI,OAAQ,QAAS,CAAC,IAAI,IAAI,GAAG;AAAA,EAC7B,IAAI,IAAI,GAAG;AAAA,EAEX,IAAI,KAAI;AAAA,EAER,IAAI,IAAI,IAAI,IAAI,EAAE;AAAA,EAElB,MAAO,KAAI,GAAG,EAAE,IAAG;AAAA,IACf,IAAI,GAAG;AAAA,MACH,EAAE,EAAE,GAAG,MAAK;AAAA,EACpB;AAAA,EAEA,IAAI,KAAK,IAAI,IAAI,EAAE;AAAA,EACnB,KAAK,KAAI,EAAG,KAAI,IAAI,EAAE,IAAG;AAAA,IACrB,GAAG,MAAM,GAAG,KAAI,KAAK,EAAE,KAAI,MAAO;AAAA,EACtC;AAAA,EACA,IAAI;AAAA,EACJ,IAAI,GAAG;AAAA,IAEH,KAAK,IAAI,IAAI,KAAK,EAAE;AAAA,IAEpB,IAAI,MAAM,KAAK;AAAA,IACf,KAAK,KAAI,EAAG,KAAI,GAAG,EAAE,IAAG;AAAA,MAEpB,IAAI,GAAG,KAAI;AAAA,QAEP,IAAI,KAAM,MAAK,IAAK,GAAG;AAAA,QAEvB,IAAI,MAAM,KAAK,GAAG;AAAA,QAElB,IAAI,IAAI,GAAG,GAAG,MAAK,QAAQ;AAAA,QAE3B,SAAS,IAAI,KAAM,KAAK,OAAO,EAAI,KAAK,GAAG,EAAE,GAAG;AAAA,UAE5C,GAAG,IAAI,MAAM,OAAO;AAAA,QACxB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,EACK;AAAA,IACD,KAAK,IAAI,IAAI,CAAC;AAAA,IACd,KAAK,KAAI,EAAG,KAAI,GAAG,EAAE,IAAG;AAAA,MACpB,IAAI,GAAG,KAAI;AAAA,QACP,GAAG,MAAK,IAAI,GAAG,GAAG,MAAK,SAAU,KAAK,GAAG;AAAA,MAC7C;AAAA,IACJ;AAAA;AAAA,EAEJ,OAAO;AAAA;AAGX,IAAI,MAAM,IAAI,GAAG,GAAG;AACpB,KAAS,IAAI,EAAG,IAAI,KAAK,EAAE;AAAA,EACvB,IAAI,KAAK;AADJ;AAET,KAAS,IAAI,IAAK,IAAI,KAAK,EAAE;AAAA,EACzB,IAAI,KAAK;AADJ;AAET,KAAS,IAAI,IAAK,IAAI,KAAK,EAAE;AAAA,EACzB,IAAI,KAAK;AADJ;AAET,KAAS,IAAI,IAAK,IAAI,KAAK,EAAE;AAAA,EACzB,IAAI,KAAK;AADJ;AAGT,IAAI,MAAM,IAAI,GAAG,EAAE;AACnB,KAAS,IAAI,EAAG,IAAI,IAAI,EAAE;AAAA,EACtB,IAAI,KAAK;AADJ;AAGT,IAAI,sBAAoB,KAAK,KAAK,GAAG,CAAC;AAEtC,IAAI,sBAAoB,KAAK,KAAK,GAAG,CAAC;AAqBtC,IAAI,OAAO,QAAS,CAAC,GAAG;AAAA,EAAE,QAAS,IAAI,KAAK,IAAK;AAAA;AAGjD,IAAI,MAAM,QAAS,CAAC,GAAG,GAAG,GAAG;AAAA,EACzB,IAAI,KAAK,QAAQ,IAAI;AAAA,IACjB,IAAI;AAAA,EACR,IAAI,KAAK,QAAQ,IAAI,EAAE;AAAA,IACnB,IAAI,EAAE;AAAA,EAEV,OAAO,IAAI,GAAG,EAAE,SAAS,GAAG,CAAC,CAAC;AAAA;AAuBlC,IAAI,KAAK;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAEJ;AAEA,IAAI,MAAM,QAAS,CAAC,KAAK,KAAK,IAAI;AAAA,EAC9B,IAAI,IAAI,IAAI,MAAM,OAAO,GAAG,IAAI;AAAA,EAChC,EAAE,OAAO;AAAA,EACT,IAAI,MAAM;AAAA,IACN,MAAM,kBAAkB,GAAG,GAAG;AAAA,EAClC,IAAI,CAAC;AAAA,IACD,MAAM;AAAA,EACV,OAAO;AAAA;AAwLX,IAAI,QAAQ,QAAS,CAAC,GAAG,GAAG,GAAG;AAAA,EAC3B,MAAM,IAAI;AAAA,EACV,IAAI,IAAK,IAAI,IAAK;AAAA,EAClB,EAAE,MAAM;AAAA,EACR,EAAE,IAAI,MAAM,KAAK;AAAA;AAGrB,IAAI,UAAU,QAAS,CAAC,GAAG,GAAG,GAAG;AAAA,EAC7B,MAAM,IAAI;AAAA,EACV,IAAI,IAAK,IAAI,IAAK;AAAA,EAClB,EAAE,MAAM;AAAA,EACR,EAAE,IAAI,MAAM,KAAK;AAAA,EACjB,EAAE,IAAI,MAAM,KAAK;AAAA;AAGrB,IAAI,QAAQ,QAAS,CAAC,GAAG,IAAI;AAAA,EAEzB,IAAI,IAAI,CAAC;AAAA,EACT,SAAS,KAAI,EAAG,KAAI,EAAE,QAAQ,EAAE,IAAG;AAAA,IAC/B,IAAI,EAAE;AAAA,MACF,EAAE,KAAK,EAAE,GAAG,IAAG,GAAG,EAAE,IAAG,CAAC;AAAA,EAChC;AAAA,EACA,IAAI,IAAI,EAAE;AAAA,EACV,IAAI,KAAK,EAAE,MAAM;AAAA,EACjB,IAAI,CAAC;AAAA,IACD,OAAO,EAAE,GAAG,IAAI,GAAG,EAAE;AAAA,EACzB,IAAI,KAAK,GAAG;AAAA,IACR,IAAI,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC;AAAA,IACzB,EAAE,EAAE,GAAG,KAAK;AAAA,IACZ,OAAO,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,EACxB;AAAA,EACA,EAAE,KAAK,QAAS,CAAC,GAAG,GAAG;AAAA,IAAE,OAAO,EAAE,IAAI,EAAE;AAAA,GAAI;AAAA,EAG5C,EAAE,KAAK,EAAE,GAAG,IAAI,GAAG,MAAM,CAAC;AAAA,EAC1B,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,GAAG,KAAK,GAAG,MAAK;AAAA,EAC7C,EAAE,KAAK,EAAE,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAM,EAAK;AAAA,EAMzC,OAAO,MAAM,IAAI,GAAG;AAAA,IAChB,IAAI,EAAE,EAAE,IAAI,IAAI,EAAE,KAAI,IAAI,OAAO;AAAA,IACjC,IAAI,EAAE,MAAM,MAAM,EAAE,IAAI,IAAI,EAAE,KAAI,IAAI,OAAO;AAAA,IAC7C,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAM,EAAK;AAAA,EAChD;AAAA,EACA,IAAI,SAAS,GAAG,GAAG;AAAA,EACnB,SAAS,KAAI,EAAG,KAAI,GAAG,EAAE,IAAG;AAAA,IACxB,IAAI,GAAG,IAAG,IAAI;AAAA,MACV,SAAS,GAAG,IAAG;AAAA,EACvB;AAAA,EAEA,IAAI,KAAK,IAAI,IAAI,SAAS,CAAC;AAAA,EAE3B,IAAI,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,CAAC;AAAA,EAC7B,IAAI,MAAM,IAAI;AAAA,IAIV,IAAI,KAAI,GAAG,KAAK;AAAA,IAEhB,IAAI,MAAM,MAAM,IAAI,MAAM,KAAK;AAAA,IAC/B,GAAG,KAAK,QAAS,CAAC,GAAG,GAAG;AAAA,MAAE,OAAO,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;AAAA,KAAI;AAAA,IAClE,MAAO,KAAI,GAAG,EAAE,IAAG;AAAA,MACf,IAAI,OAAO,GAAG,IAAG;AAAA,MACjB,IAAI,GAAG,QAAQ,IAAI;AAAA,QACf,MAAM,OAAO,KAAM,MAAM,GAAG;AAAA,QAC5B,GAAG,QAAQ;AAAA,MACf,EAEI;AAAA;AAAA,IACR;AAAA,IACA,OAAO;AAAA,IACP,OAAO,KAAK,GAAG;AAAA,MACX,IAAI,OAAO,GAAG,IAAG;AAAA,MACjB,IAAI,GAAG,QAAQ;AAAA,QACX,MAAM,KAAM,KAAK,GAAG,UAAU;AAAA,MAE9B;AAAA,UAAE;AAAA,IACV;AAAA,IACA,MAAO,MAAK,KAAK,IAAI,EAAE,IAAG;AAAA,MACtB,IAAI,OAAO,GAAG,IAAG;AAAA,MACjB,IAAI,GAAG,SAAS,IAAI;AAAA,QAChB,EAAE,GAAG;AAAA,QACL,EAAE;AAAA,MACN;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,EACV;AAAA,EACA,OAAO,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,GAAG,IAAI;AAAA;AAGnC,IAAI,KAAK,QAAS,CAAC,GAAG,GAAG,GAAG;AAAA,EACxB,OAAO,EAAE,KAAK,KACR,KAAK,IAAI,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,IAC5C,EAAE,EAAE,KAAK;AAAA;AAGpB,IAAI,KAAK,QAAS,CAAC,GAAG;AAAA,EAClB,IAAI,IAAI,EAAE;AAAA,EAEV,OAAO,KAAK,CAAC,EAAE,EAAE;AAAA;AAAA,EAEjB,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;AAAA,EAEpB,IAAI,MAAM,GAAG,MAAM,EAAE,IAAI,MAAM;AAAA,EAC/B,IAAI,IAAI,QAAS,CAAC,GAAG;AAAA,IAAE,GAAG,SAAS;AAAA;AAAA,EACnC,SAAS,KAAI,EAAG,MAAK,GAAG,EAAE,IAAG;AAAA,IACzB,IAAI,EAAE,OAAM,OAAO,MAAK;AAAA,MACpB,EAAE;AAAA,IACD;AAAA,MACD,IAAI,CAAC,OAAO,MAAM,GAAG;AAAA,QACjB,MAAO,MAAM,KAAK,OAAO;AAAA,UACrB,EAAE,KAAK;AAAA,QACX,IAAI,MAAM,GAAG;AAAA,UACT,EAAE,MAAM,KAAO,MAAM,MAAO,IAAK,QAAU,MAAM,KAAM,IAAK,KAAK;AAAA,UACjE,MAAM;AAAA,QACV;AAAA,MACJ,EACK,SAAI,MAAM,GAAG;AAAA,QACd,EAAE,GAAG,GAAG,EAAE;AAAA,QACV,MAAO,MAAM,GAAG,OAAO;AAAA,UACnB,EAAE,IAAI;AAAA,QACV,IAAI,MAAM;AAAA,UACN,EAAI,MAAM,KAAM,IAAK,IAAI,GAAG,MAAM;AAAA,MAC1C;AAAA,MACA,OAAO;AAAA,QACH,EAAE,GAAG;AAAA,MACT,MAAM;AAAA,MACN,MAAM,EAAE;AAAA;AAAA,EAEhB;AAAA,EACA,OAAO,EAAE,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,GAAG,EAAE;AAAA;AAG1C,IAAI,OAAO,QAAS,CAAC,IAAI,IAAI;AAAA,EACzB,IAAI,IAAI;AAAA,EACR,SAAS,KAAI,EAAG,KAAI,GAAG,QAAQ,EAAE;AAAA,IAC7B,KAAK,GAAG,MAAK,GAAG;AAAA,EACpB,OAAO;AAAA;AAIX,IAAI,QAAQ,QAAS,CAAC,KAAK,KAAK,KAAK;AAAA,EAEjC,IAAI,IAAI,IAAI;AAAA,EACZ,IAAI,IAAI,KAAK,MAAM,CAAC;AAAA,EACpB,IAAI,KAAK,IAAI;AAAA,EACb,IAAI,IAAI,KAAK,KAAK;AAAA,EAClB,IAAI,IAAI,KAAK,IAAI,KAAK;AAAA,EACtB,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK;AAAA,EAC1B,SAAS,KAAI,EAAG,KAAI,GAAG,EAAE;AAAA,IACrB,IAAI,IAAI,KAAI,KAAK,IAAI;AAAA,EACzB,QAAQ,IAAI,IAAI,KAAK;AAAA;AAGzB,IAAI,OAAO,QAAS,CAAC,KAAK,KAAK,OAAO,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG;AAAA,EACnE,MAAM,KAAK,KAAK,KAAK;AAAA,EACrB,EAAE,GAAG;AAAA,EACL,IAAI,MAAK,MAAM,IAAI,EAAE,GAAG,MAAM,IAAG,GAAG,MAAM,IAAG;AAAA,EAC7C,IAAI,MAAK,MAAM,IAAI,EAAE,GAAG,MAAM,IAAG,GAAG,MAAM,IAAG;AAAA,EAC7C,IAAI,KAAK,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,MAAM,GAAG;AAAA,EACxC,IAAI,KAAK,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,MAAM,GAAG;AAAA,EACxC,IAAI,SAAS,IAAI,IAAI,EAAE;AAAA,EACvB,SAAS,KAAI,EAAG,KAAI,KAAK,QAAQ,EAAE;AAAA,IAC/B,EAAE,OAAO,KAAK,MAAK;AAAA,EACvB,SAAS,KAAI,EAAG,KAAI,KAAK,QAAQ,EAAE;AAAA,IAC/B,EAAE,OAAO,KAAK,MAAK;AAAA,EACvB,IAAI,KAAK,MAAM,QAAQ,CAAC,GAAG,MAAM,GAAG,GAAG,OAAO,GAAG;AAAA,EACjD,IAAI,OAAO;AAAA,EACX,MAAO,OAAO,KAAK,CAAC,IAAI,KAAK,OAAO,KAAK,EAAE;AAAA;AAAA,EAE3C,IAAI,OAAQ,KAAK,KAAM;AAAA,EACvB,IAAI,QAAQ,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI;AAAA,EAC5C,IAAI,QAAQ,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,KAAK,IAAI,OAAO,KAAK,QAAQ,GAAG,IAAI,IAAI,OAAO,MAAM,IAAI,OAAO,MAAM,IAAI,OAAO;AAAA,EAClI,IAAI,MAAM,KAAK,QAAQ,SAAS,QAAQ;AAAA,IACpC,OAAO,MAAM,KAAK,GAAG,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;AAAA,EAClD,IAAI,IAAI,IAAI,IAAI;AAAA,EAChB,MAAM,KAAK,GAAG,KAAK,QAAQ,MAAM,GAAG,KAAK;AAAA,EACzC,IAAI,QAAQ,OAAO;AAAA,IACf,KAAK,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK;AAAA,IAC/D,IAAI,MAAM,KAAK,KAAK,MAAM,CAAC;AAAA,IAC3B,MAAM,KAAK,GAAG,MAAM,GAAG;AAAA,IACvB,MAAM,KAAK,IAAI,GAAG,MAAM,CAAC;AAAA,IACzB,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC;AAAA,IAC3B,KAAK;AAAA,IACL,SAAS,KAAI,EAAG,KAAI,MAAM,EAAE;AAAA,MACxB,MAAM,KAAK,IAAI,IAAI,IAAG,IAAI,KAAK,IAAG;AAAA,IACtC,KAAK,IAAI;AAAA,IACT,IAAI,OAAO,CAAC,MAAM,IAAI;AAAA,IACtB,SAAS,KAAK,EAAG,KAAK,GAAG,EAAE,IAAI;AAAA,MAC3B,IAAI,OAAO,KAAK;AAAA,MAChB,SAAS,KAAI,EAAG,KAAI,KAAK,QAAQ,EAAE,IAAG;AAAA,QAClC,IAAI,MAAM,KAAK,MAAK;AAAA,QACpB,MAAM,KAAK,GAAG,IAAI,IAAI,GAAG,KAAK,IAAI;AAAA,QAClC,IAAI,MAAM;AAAA,UACN,MAAM,KAAK,GAAI,KAAK,OAAM,IAAK,GAAG,GAAG,KAAK,KAAK,OAAM;AAAA,MAC7D;AAAA,IACJ;AAAA,EACJ,EACK;AAAA,IACD,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK;AAAA;AAAA,EAEvC,SAAS,KAAI,EAAG,KAAI,IAAI,EAAE,IAAG;AAAA,IACzB,IAAI,MAAM,KAAK;AAAA,IACf,IAAI,MAAM,KAAK;AAAA,MACX,IAAI,MAAO,OAAO,KAAM;AAAA,MACxB,QAAQ,KAAK,GAAG,GAAG,MAAM,IAAI,GAAG,KAAK,GAAG,MAAM;AAAA,MAC9C,IAAI,MAAM;AAAA,QACN,MAAM,KAAK,GAAI,OAAO,KAAM,EAAE,GAAG,KAAK,KAAK;AAAA,MAC/C,IAAI,MAAM,MAAM;AAAA,MAChB,QAAQ,KAAK,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG;AAAA,MAClC,IAAI,MAAM;AAAA,QACN,QAAQ,KAAK,GAAI,OAAO,IAAK,IAAI,GAAG,KAAK,KAAK;AAAA,IACtD,EACK;AAAA,MACD,QAAQ,KAAK,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG;AAAA;AAAA,EAE1C;AAAA,EACA,QAAQ,KAAK,GAAG,GAAG,IAAI;AAAA,EACvB,OAAO,IAAI,GAAG;AAAA;AAGlB,IAAI,sBAAoB,IAAI,IAAI,CAAC,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,SAAS,SAAS,OAAO,CAAC;AAE3G,IAAI,qBAAmB,IAAI,GAAG,CAAC;AAE/B,IAAI,OAAO,QAAS,CAAC,KAAK,KAAK,MAAM,KAAK,MAAM,IAAI;AAAA,EAChD,IAAI,IAAI,GAAG,KAAK,IAAI;AAAA,EACpB,IAAI,IAAI,IAAI,GAAG,MAAM,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI;AAAA,EAE7D,IAAI,IAAI,EAAE,SAAS,KAAK,EAAE,SAAS,IAAI;AAAA,EACvC,IAAI,MAAM,GAAG;AAAA,EACb,IAAI,OAAO,GAAG,KAAK,KAAK;AAAA,EACxB,IAAI,KAAK;AAAA,IACL,IAAI;AAAA,MACA,EAAE,KAAK,GAAG,KAAK;AAAA,IACnB,IAAI,MAAM,IAAI,MAAM;AAAA,IACpB,IAAI,IAAI,OAAO,IAAI,IAAI,MAAM;AAAA,IAC7B,IAAI,SAAS,KAAK,QAAQ;AAAA,IAE1B,IAAI,OAAO,GAAG,KAAK,IAAI,IAAI,KAAK,GAAG,OAAO,GAAG,KAAK,IAAI,IAAI,QAAQ,CAAC;AAAA,IACnE,IAAI,QAAQ,KAAK,KAAK,OAAO,CAAC,GAAG,QAAQ,IAAI;AAAA,IAC7C,IAAI,MAAM,QAAS,CAAC,IAAG;AAAA,MAAE,QAAQ,IAAI,MAAM,IAAI,KAAI,MAAM,QAAU,IAAI,KAAI,MAAM,SAAU;AAAA;AAAA,IAG3F,IAAI,OAAO,IAAI,IAAI,KAAK;AAAA,IAExB,IAAI,KAAK,IAAI,IAAI,GAAG,GAAG,KAAK,IAAI,IAAI,EAAE;AAAA,IAEtC,IAAI,OAAO,GAAG,KAAK,GAAG,KAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK;AAAA,IAClE,MAAO,KAAI,IAAI,GAAG,EAAE,IAAG;AAAA,MAEnB,IAAI,KAAK,IAAI,EAAC;AAAA,MAEd,IAAI,OAAO,KAAI,OAAO,QAAQ,KAAK;AAAA,MACnC,KAAK,QAAQ;AAAA,MACb,KAAK,MAAM;AAAA,MAGX,IAAI,MAAM,IAAG;AAAA,QAET,IAAI,MAAM,IAAI;AAAA,QACd,KAAK,OAAO,QAAQ,KAAK,WAAW,MAAM,OAAO,CAAC,MAAM;AAAA,UACpD,MAAM,KAAK,KAAK,GAAG,GAAG,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,KAAI,IAAI,GAAG;AAAA,UAC3D,KAAK,OAAO,KAAK,GAAG,KAAK;AAAA,UACzB,SAAS,IAAI,EAAG,IAAI,KAAK,EAAE;AAAA,YACvB,GAAG,KAAK;AAAA,UACZ,SAAS,IAAI,EAAG,IAAI,IAAI,EAAE;AAAA,YACtB,GAAG,KAAK;AAAA,QAChB;AAAA,QAEA,IAAI,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,OAAO,QAAQ;AAAA,QACjD,IAAI,MAAM,KAAK,MAAM,IAAI,KAAI,GAAG,GAAG;AAAA,UAC/B,IAAI,OAAO,KAAK,IAAI,GAAG,GAAG,IAAI;AAAA,UAC9B,IAAI,OAAO,KAAK,IAAI,OAAO,EAAC;AAAA,UAG5B,IAAI,KAAK,KAAK,IAAI,KAAK,GAAG;AAAA,UAC1B,OAAO,OAAO,QAAQ,EAAE,QAAQ,QAAQ,OAAO;AAAA,YAC3C,IAAI,IAAI,KAAI,MAAM,IAAI,KAAI,IAAI,MAAM;AAAA,cAChC,IAAI,KAAK;AAAA,cACT,MAAO,KAAK,MAAM,IAAI,KAAI,OAAO,IAAI,KAAI,KAAK,MAAM,EAAE;AAAA;AAAA,cAEtD,IAAI,KAAK,GAAG;AAAA,gBACR,IAAI,IAAI,IAAI;AAAA,gBAEZ,IAAI,KAAK;AAAA,kBACL;AAAA,gBAIJ,IAAI,MAAM,KAAK,IAAI,KAAK,KAAK,CAAC;AAAA,gBAC9B,IAAI,KAAK;AAAA,gBACT,SAAS,IAAI,EAAG,IAAI,KAAK,EAAE,GAAG;AAAA,kBAC1B,IAAI,KAAK,KAAI,MAAM,IAAI;AAAA,kBACvB,IAAI,MAAM,KAAK;AAAA,kBACf,IAAI,KAAK,KAAK,MAAM;AAAA,kBACpB,IAAI,KAAK;AAAA,oBACL,KAAK,IAAI,QAAQ;AAAA,gBACzB;AAAA,cACJ;AAAA,YACJ;AAAA,YAEA,OAAO,OAAO,QAAQ,KAAK;AAAA,YAC3B,OAAO,OAAO,QAAQ;AAAA,UAC1B;AAAA,QACJ;AAAA,QAEA,IAAI,GAAG;AAAA,UAGH,KAAK,QAAQ,YAAa,MAAM,MAAM,KAAM,MAAM;AAAA,UAClD,IAAI,MAAM,MAAM,KAAK,IAAI,MAAM,MAAM,KAAK;AAAA,UAC1C,MAAM,KAAK,OAAO,KAAK;AAAA,UACvB,EAAE,GAAG,MAAM;AAAA,UACX,EAAE,GAAG;AAAA,UACL,KAAK,KAAI;AAAA,UACT,EAAE;AAAA,QACN,EACK;AAAA,UACD,KAAK,QAAQ,IAAI;AAAA,UACjB,EAAE,GAAG,IAAI;AAAA;AAAA,MAEjB;AAAA,IACJ;AAAA,IACA,KAAK,KAAI,KAAK,IAAI,IAAG,EAAE,EAAG,KAAI,GAAG,EAAE,IAAG;AAAA,MAClC,KAAK,QAAQ,IAAI;AAAA,MACjB,EAAE,GAAG,IAAI;AAAA,IACb;AAAA,IACA,MAAM,KAAK,KAAK,GAAG,KAAK,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,KAAI,IAAI,GAAG;AAAA,IAC7D,IAAI,CAAC,KAAK;AAAA,MACN,GAAG,IAAK,MAAM,IAAK,EAAG,MAAM,IAAK,MAAM;AAAA,MAEvC,OAAO;AAAA,MACP,GAAG,IAAI,MAAM,GAAG,IAAI,MAAM,GAAG,IAAI,IAAG,GAAG,IAAI;AAAA,IAC/C;AAAA,EACJ,EACK;AAAA,IACD,SAAS,KAAI,GAAG,KAAK,EAAG,KAAI,IAAI,KAAK,MAAK,OAAO;AAAA,MAE7C,IAAI,IAAI,KAAI;AAAA,MACZ,IAAI,KAAK,GAAG;AAAA,QAER,EAAG,MAAM,IAAK,KAAK;AAAA,QACnB,IAAI;AAAA,MACR;AAAA,MACA,MAAM,MAAM,GAAG,MAAM,GAAG,IAAI,SAAS,IAAG,CAAC,CAAC;AAAA,IAC9C;AAAA,IACA,GAAG,IAAI;AAAA;AAAA,EAEX,OAAO,IAAI,GAAG,GAAG,MAAM,KAAK,GAAG,IAAI,IAAI;AAAA;AAG3C,IAAI,uBAAsB,QAAS,GAAG;AAAA,EAClC,IAAI,IAAI,IAAI,WAAW,GAAG;AAAA,EAC1B,SAAS,KAAI,EAAG,KAAI,KAAK,EAAE,IAAG;AAAA,IAC1B,IAAI,IAAI,IAAG,IAAI;AAAA,IACf,OAAO,EAAE;AAAA,MACL,KAAM,IAAI,KAAM,cAAe,MAAM;AAAA,IACzC,EAAE,MAAK;AAAA,EACX;AAAA,EACA,OAAO;AAAA,EACR;AAEH,IAAI,MAAM,QAAS,GAAG;AAAA,EAClB,IAAI,IAAI;AAAA,EACR,OAAO;AAAA,IACH,GAAG,QAAS,CAAC,GAAG;AAAA,MAEZ,IAAI,KAAK;AAAA,MACT,SAAS,KAAI,EAAG,KAAI,EAAE,QAAQ,EAAE;AAAA,QAC5B,KAAK,KAAM,KAAK,MAAO,EAAE,OAAO,OAAO;AAAA,MAC3C,IAAI;AAAA;AAAA,IAER,GAAG,QAAS,GAAG;AAAA,MAAE,OAAO,CAAC;AAAA;AAAA,EAC7B;AAAA;AA0BJ,IAAI,OAAO,QAAS,CAAC,KAAK,KAAK,KAAK,MAAM,IAAI;AAAA,EAC1C,IAAI,CAAC,IAAI;AAAA,IACL,KAAK,EAAE,GAAG,EAAE;AAAA,IACZ,IAAI,IAAI,YAAY;AAAA,MAChB,IAAI,OAAO,IAAI,WAAW,SAAS,MAAM;AAAA,MACzC,IAAI,SAAS,IAAI,GAAG,KAAK,SAAS,IAAI,MAAM;AAAA,MAC5C,OAAO,IAAI,IAAI;AAAA,MACf,OAAO,IAAI,KAAK,KAAK,MAAM;AAAA,MAC3B,MAAM;AAAA,MACN,GAAG,IAAI,KAAK;AAAA,IAChB;AAAA,EACJ;AAAA,EACA,OAAO,KAAK,KAAK,IAAI,SAAS,OAAO,IAAI,IAAI,OAAO,IAAI,OAAO,OAAQ,GAAG,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,GAAG,IAAI,KAAO,KAAK,IAAI,KAAM,KAAK,MAAM,EAAE;AAAA;AAGxL,IAAI,MAAM,QAAS,CAAC,GAAG,GAAG;AAAA,EACtB,IAAI,IAAI,CAAC;AAAA,EACT,SAAS,KAAK;AAAA,IACV,EAAE,KAAK,EAAE;AAAA,EACb,SAAS,KAAK;AAAA,IACV,EAAE,KAAK,EAAE;AAAA,EACb,OAAO;AAAA;AA2IX,IAAI,SAAS,QAAS,CAAC,GAAG,GAAG,GAAG;AAAA,EAC5B,MAAO,GAAG,EAAE;AAAA,IACR,EAAE,KAAK,GAAG,OAAO;AAAA;AAmKlB,SAAS,WAAW,CAAC,MAAM,MAAM;AAAA,EACpC,OAAO,KAAK,MAAM,QAAQ,CAAC,GAAG,GAAG,CAAC;AAAA;AA4ftC,IAAI,OAAO,QAAS,CAAC,GAAG,GAAG,GAAG,GAAG;AAAA,EAC7B,SAAS,KAAK,GAAG;AAAA,IACb,IAAI,MAAM,EAAE,IAAI,IAAI,IAAI,GAAG,KAAK;AAAA,IAChC,IAAI,MAAM,QAAQ,GAAG;AAAA,MACjB,KAAK,IAAI,GAAG,IAAI,EAAE,GAAG,MAAM,IAAI;AAAA,IACnC,IAAI,eAAe;AAAA,MACf,EAAE,KAAK,CAAC,KAAK,EAAE;AAAA,IACd;AAAA,MACD,EAAE,KAAK,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE;AAAA,MAC5B,KAAK,KAAK,GAAG,GAAG,CAAC;AAAA;AAAA,EAEzB;AAAA;AAGJ,IAAI,KAAK,OAAO,eAAe,+BAA6B,IAAI;AAEhE,IAAI,KAAK,OAAO,eAAe,+BAA6B,IAAI;AAEhE,IAAI,MAAM;AACV,IAAI;AAAA,EACA,GAAG,OAAO,IAAI,EAAE,QAAQ,KAAK,CAAC;AAAA,EAC9B,MAAM;AAAA,EAEV,OAAO,GAAG;AAwGH,SAAS,OAAO,CAAC,KAAK,QAAQ;AAAA,EACjC,IAAI,QAAQ;AAAA,IACR,IAAI,OAAO,IAAI,GAAG,IAAI,MAAM;AAAA,IAC5B,SAAS,KAAI,EAAG,KAAI,IAAI,QAAQ,EAAE;AAAA,MAC9B,KAAK,MAAK,IAAI,WAAW,EAAC;AAAA,IAC9B,OAAO;AAAA,EACX;AAAA,EACA,IAAI;AAAA,IACA,OAAO,GAAG,OAAO,GAAG;AAAA,EACxB,IAAI,IAAI,IAAI;AAAA,EACZ,IAAI,KAAK,IAAI,GAAG,IAAI,UAAU,IAAI,UAAU,EAAE;AAAA,EAC9C,IAAI,KAAK;AAAA,EACT,IAAI,IAAI,QAAS,CAAC,GAAG;AAAA,IAAE,GAAG,QAAQ;AAAA;AAAA,EAClC,SAAS,KAAI,EAAG,KAAI,GAAG,EAAE,IAAG;AAAA,IACxB,IAAI,KAAK,IAAI,GAAG,QAAQ;AAAA,MACpB,IAAI,IAAI,IAAI,GAAG,KAAK,KAAM,IAAI,MAAM,EAAE;AAAA,MACtC,EAAE,IAAI,EAAE;AAAA,MACR,KAAK;AAAA,IACT;AAAA,IACA,IAAI,IAAI,IAAI,WAAW,EAAC;AAAA,IACxB,IAAI,IAAI,OAAO;AAAA,MACX,EAAE,CAAC;AAAA,IACF,SAAI,IAAI;AAAA,MACT,EAAE,MAAO,KAAK,CAAE,GAAG,EAAE,MAAO,IAAI,EAAG;AAAA,IAClC,SAAI,IAAI,SAAS,IAAI;AAAA,MACtB,IAAI,SAAS,IAAI,QAAQ,MAAO,IAAI,WAAW,EAAE,EAAC,IAAI,MAClD,EAAE,MAAO,KAAK,EAAG,GAAG,EAAE,MAAQ,KAAK,KAAM,EAAG,GAAG,EAAE,MAAQ,KAAK,IAAK,EAAG,GAAG,EAAE,MAAO,IAAI,EAAG;AAAA,IAE7F;AAAA,QAAE,MAAO,KAAK,EAAG,GAAG,EAAE,MAAQ,KAAK,IAAK,EAAG,GAAG,EAAE,MAAO,IAAI,EAAG;AAAA,EACtE;AAAA,EACA,OAAO,IAAI,IAAI,GAAG,EAAE;AAAA;AA4CxB,IAAI,OAAO,QAAS,CAAC,IAAI;AAAA,EACrB,IAAI,KAAK;AAAA,EACT,IAAI,IAAI;AAAA,IACJ,SAAS,KAAK,IAAI;AAAA,MACd,IAAI,IAAI,GAAG,GAAG;AAAA,MACd,IAAI,IAAI;AAAA,QACJ,IAAI,CAAC;AAAA,MACT,MAAM,IAAI;AAAA,IACd;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAGX,IAAI,MAAM,QAAS,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI;AAAA,EAC3C,IAAI,MAAK,GAAG,QAAQ,KAAK,EAAE,OAAO,MAAM,MAAM,GAAG;AAAA,EACjD,IAAI,MAAM,KAAK,EAAE;AAAA,EACjB,OAAO,GAAG,GAAG,MAAM,OAAO,WAAY,QAAS,GAAG,KAAK;AAAA,EACvD,IAAI,MAAM;AAAA,IACN,EAAE,OAAO,IAAI,EAAE,OAAO,EAAE;AAAA,EAC5B,EAAE,KAAK,IAAI,KAAK;AAAA,EAChB,EAAE,OAAQ,EAAE,QAAQ,KAAM,IAAI,KAAK,IAAI,EAAE,OAAO,KAAK;AAAA,EACrD,EAAE,OAAO,EAAE,cAAc,KAAK,EAAE,OAAO,EAAE,eAAe;AAAA,EACxD,IAAI,KAAK,IAAI,KAAK,EAAE,SAAS,OAAO,KAAK,IAAI,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,YAAY,IAAI;AAAA,EAClF,IAAI,IAAI,KAAK,IAAI;AAAA,IACb,IAAI,EAAE;AAAA,EACV,OAAO,GAAG,GAAI,KAAK,KAAQ,GAAG,SAAS,IAAI,KAAM,KAAO,GAAG,QAAQ,KAAK,KAAO,GAAG,SAAS,KAAK,KAAO,GAAG,WAAW,KAAK,IAAM,GAAG,WAAW,KAAK,CAAE,GAAG,KAAK;AAAA,EAC7J,IAAI,KAAK,IAAI;AAAA,IACT,OAAO,GAAG,GAAG,EAAE,GAAG;AAAA,IAClB,OAAO,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;AAAA,IACnC,OAAO,GAAG,IAAI,GAAG,EAAE,IAAI;AAAA,EAC3B;AAAA,EACA,OAAO,GAAG,IAAI,IAAI,GAAE;AAAA,EACpB,OAAO,GAAG,IAAI,IAAI,GAAG,GAAG,KAAK;AAAA,EAC7B,IAAI,MAAM,MAAM;AAAA,IACZ,OAAO,GAAG,GAAG,GAAG;AAAA,IAChB,OAAO,GAAG,IAAI,GAAG,EAAE,KAAK;AAAA,IACxB,OAAO,GAAG,IAAI,IAAI,EAAE,GAAG,KAAK;AAAA,EAChC;AAAA,EACA,EAAE,IAAI,IAAI,CAAC;AAAA,EACX,KAAK;AAAA,EACL,IAAI,KAAK;AAAA,IACL,SAAS,KAAK,IAAI;AAAA,MACd,IAAI,MAAM,GAAG,IAAI,IAAI,IAAI;AAAA,MACzB,OAAO,GAAG,GAAG,CAAC,CAAC;AAAA,MACf,OAAO,GAAG,IAAI,GAAG,CAAC;AAAA,MAClB,EAAE,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI;AAAA,IAChC;AAAA,EACJ;AAAA,EACA,IAAI;AAAA,IACA,EAAE,IAAI,IAAI,CAAC,GAAG,KAAK;AAAA,EACvB,OAAO;AAAA;AAGX,IAAI,MAAM,QAAS,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG;AAAA,EAC/B,OAAO,GAAG,GAAG,SAAS;AAAA,EACtB,OAAO,GAAG,IAAI,GAAG,CAAC;AAAA,EAClB,OAAO,GAAG,IAAI,IAAI,CAAC;AAAA,EACnB,OAAO,GAAG,IAAI,IAAI,CAAC;AAAA,EACnB,OAAO,GAAG,IAAI,IAAI,CAAC;AAAA;AAmXhB,SAAS,OAAO,CAAC,MAAM,MAAM;AAAA,EAChC,IAAI,CAAC;AAAA,IACD,OAAO,CAAC;AAAA,EACZ,IAAI,IAAI,CAAC;AAAA,EACT,IAAI,QAAQ,CAAC;AAAA,EACb,KAAK,MAAM,IAAI,GAAG,IAAI;AAAA,EACtB,IAAI,IAAI;AAAA,EACR,IAAI,MAAM;AAAA,EACV,SAAS,MAAM,GAAG;AAAA,IACd,IAAI,MAAK,EAAE,KAAK,OAAO,IAAG,IAAI,IAAI,IAAG;AAAA,IACrC,IAAI,cAAc,EAAE,SAAS,IAAI,IAAI;AAAA,IACrC,IAAI,IAAI,QAAQ,EAAE,GAAG,IAAI,EAAE;AAAA,IAC3B,IAAI,MAAM,EAAE,SAAS,IAAI,OAAO,QAAQ,GAAG,GAAG,KAAK,KAAK,EAAE;AAAA,IAC1D,IAAI,MAAM,KAAK,EAAE,KAAK;AAAA,IACtB,IAAI,IAAI;AAAA,MACJ,IAAI,EAAE;AAAA,IACV,IAAI,IAAI,cAAc,YAAY,MAAM,CAAC,IAAI,MAAM,IAAI,EAAE;AAAA,IACzD,IAAI,IAAI,IAAI;AAAA,IACZ,EAAE,EAAE,IAAI;AAAA,IACR,MAAM,KAAK,IAAI,GAAG;AAAA,MACd,MAAM,KAAK;AAAA,MACX,KAAK,EAAE,EAAE;AAAA,MACT,GAAG;AAAA,MACH;AAAA,MACA;AAAA,MACA,GAAG,KAAK,GAAG,UAAW,KAAM,IAAI,UAAU;AAAA,MAC1C;AAAA,MACA;AAAA,IACJ,CAAC,CAAC;AAAA,IACF,KAAK,KAAK,IAAI,MAAM;AAAA,IACpB,OAAO,KAAK,KAAK,IAAI,QAAQ,MAAM,KAAK;AAAA,EAC5C;AAAA,EACA,IAAI,MAAM,IAAI,GAAG,MAAM,EAAE,GAAG,KAAK,GAAG,MAAM,MAAM;AAAA,EAChD,SAAS,KAAI,EAAG,KAAI,MAAM,QAAQ,EAAE,IAAG;AAAA,IACnC,IAAI,IAAI,MAAM;AAAA,IACd,IAAI,KAAK,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM;AAAA,IACrC,IAAI,OAAO,KAAK,EAAE,EAAE,SAAS,KAAK,EAAE,KAAK;AAAA,IACzC,IAAI,IAAI,EAAE,GAAG,EAAE,IAAI,IAAI;AAAA,IACvB,IAAI,KAAK,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,KAAK,KAAK,QAAQ,EAAE,IAAI,EAAE,EAAE,SAAS;AAAA,EACzF;AAAA,EACA,IAAI,KAAK,GAAG,MAAM,QAAQ,KAAK,EAAE;AAAA,EACjC,OAAO;AAAA;;;ACvvEJ,IAAM,6BAAkD,IAAI,IAAI;AAAA,EACnE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AAGM,IAAM,qBAAqB;AAS3B,SAAS,cAAc,CAAC,MAA2B;AAAA,EACtD,MAAM,QAAQ,IAAI;AAAA,EAClB,WAAW,WAAW,KAAK,MAAM,OAAO,GAAG;AAAA,IACvC,MAAM,OAAO,QAAQ,MAAM,GAAG,EAAE,IAAI,KAAK;AAAA,IACzC,IAAI,CAAC,MAAM;AAAA,MACP;AAAA,IACJ;AAAA,IACA,IAAI,KAAK,SAAS,GAAG,KAAK,KAAK,SAAS,IAAI,GAAG;AAAA,MAG3C;AAAA,IACJ;AAAA,IACA,MAAM,IAAI,IAAI;AAAA,EAClB;AAAA,EACA,OAAO;AAAA;AAYX,eAAsB,WAAW,CAC7B,KACA,KACA,UAAwD,CAAC,GACR;AAAA,EACjD,MAAM,QAAkB,CAAC;AAAA,EACzB,MAAM,YAAsB,CAAC;AAAA,EAE7B,MAAM,WAAW,IAAI,IAAY,0BAA0B;AAAA,EAC3D,IAAI,QAAQ,uBAAuB;AAAA,IAC/B,WAAW,QAAQ,QAAQ,uBAAuB;AAAA,MAC9C,SAAS,IAAI,IAAI;AAAA,IACrB;AAAA,EACJ;AAAA,EAEA,eAAe,IAAI,CAAC,SAAiB,QAAgC;AAAA,IACjE,MAAM,UAAU,MAAM,IAAG,QAAQ,OAAO;AAAA,IACxC,IAAI,QAAQ,WAAW,GAAG;AAAA,MACtB,IAAI,CAAC,QAAQ;AAAA,QACT,UAAU,KAAK,OAAO;AAAA,MAC1B;AAAA,MACA;AAAA,IACJ;AAAA,IACA,WAAW,aAAa,SAAS;AAAA,MAC7B,MAAM,WAAW,IAAG,KAAK,KAAK,SAAS,SAAS;AAAA,MAChD,MAAM,YAAY,MAAM,IAAG,KAAK,QAAQ;AAAA,MACxC,IAAI,WAAW,YAAY,GAAG;AAAA,QAG1B,IAAI,SAAS,IAAI,SAAS,GAAG;AAAA,UACzB;AAAA,QACJ;AAAA,QACA,MAAM,KAAK,UAAU,KAAK;AAAA,MAC9B,EAAO,SAAI,WAAW,OAAO,GAAG;AAAA,QAC5B,MAAM,KAAK,QAAQ;AAAA,MACvB;AAAA,IACJ;AAAA;AAAA,EAGJ,MAAM,KAAK,KAAK,IAAI;AAAA,EACpB,OAAO,EAAE,OAAO,UAAU;AAAA;AAM9B,eAAsB,YAAY,CAC9B,KACA,KACA,UAAwD,CAAC,GACxC;AAAA,EACjB,QAAQ,MAAM,YAAY,KAAI,KAAK,OAAO,GAAG;AAAA;AAWjD,eAAsB,gBAAgB,CAClC,KACA,KACA,UAAwD,CAAC,GACtC;AAAA,EACnB,QAAQ,OAAO,cAAc,MAAM,YAAY,KAAI,KAAK,OAAO;AAAA,EAC/D,MAAM,WAAuC,CAAC;AAAA,EAE9C,WAAW,YAAY,OAAO;AAAA,IAC1B,MAAM,UAAU,IAAG,KAAK,SAAS,KAAK,QAAQ,EAAE,QAAQ,OAAO,GAAG;AAAA,IAClE,MAAM,OAAO,MAAM,IAAG,SAAS,QAAQ;AAAA,IACvC,IAAI,MAAM;AAAA,MACN,SAAS,WAAW,IAAI,WAAW,IAAI;AAAA,IAC3C;AAAA,EACJ;AAAA,EAEA,WAAW,YAAY,WAAW;AAAA,IAC9B,MAAM,UAAU,IAAG,KAAK,SAAS,KAAK,QAAQ,EAAE,QAAQ,OAAO,GAAG;AAAA,IAClE,IAAI,CAAC,SAAS;AAAA,MACV;AAAA,IACJ;AAAA,IACA,SAAS,GAAG,cAAc,IAAI,WAAW,CAAC;AAAA,EAC9C;AAAA,EAEA,OAAO,QAAQ,UAAU,EAAE,OAAO,EAAE,CAAC;AAAA;;;AC/HzC,eAAe,aAAa,CACxB,KACA,KACoB;AAAA,EACpB,MAAM,aAAa,IAAG,KAAK,KAAK,KAAK,kBAAkB;AAAA,EACvD,IAAI,CAAE,MAAM,IAAG,OAAO,UAAU,GAAI;AAAA,IAChC,OAAO,IAAI;AAAA,EACf;AAAA,EACA,IAAI;AAAA,IACA,MAAM,OAAO,MAAM,IAAG,SAAS,YAAY,OAAO;AAAA,IAClD,IAAI,CAAC,MAAM;AAAA,MACP,OAAO,IAAI;AAAA,IACf;AAAA,IACA,OAAO,eAAe,IAAI;AAAA,IAC5B,OAAO,MAAK;AAAA,IACV,OAAO,KACH,kBAAkB,oCAAoC,OAAO,IAAG,GACpE;AAAA,IACA,OAAO,IAAI;AAAA;AAAA;AAWnB,eAAe,qBAAqB,CAChC,KACA,aACA,cACA,qBACoB;AAAA,EACpB,MAAM,eAAe,MAAM,cAAc,KAAI,WAAW;AAAA,EACxD,IAAI,aAAa,SAAS,GAAG;AAAA,IACzB,OAAO;AAAA,EACX;AAAA,EACA,MAAM,SAAS,IAAI,IAAY,mBAAmB;AAAA,EAClD,WAAW,QAAQ,cAAc;AAAA,IAC7B,OAAO,IAAI,IAAI;AAAA,EACnB;AAAA,EACA,OAAO,KACH,IAAI,0BAA0B,aAAa,sCAAsC,uBAAuB,CAAC,GAAG,YAAY,EAAE,KAAK,IAAI,GACvI;AAAA,EACA,OAAO;AAAA;AAIX,IAAM,iBAAiB,CAAC,MAAc,EAAE,QAAQ,OAAO,GAAG;AAa1D,eAAe,UAAU,CACrB,KACA,QACA,cACA,aACA,uBACa;AAAA,EACb,QAAQ,OAAO,cAAc,MAAM,YAAY,KAAI,QAAQ;AAAA,IACvD;AAAA,EACJ,CAAC;AAAA,EAED,IAAI,MAAM,WAAW,KAAK,UAAU,WAAW,GAAG;AAAA,IAC9C,MAAM,UAAU,IAAG,KAAK,SAAS,cAAc,MAAM;AAAA,IACrD,IAAI,SAAS;AAAA,MACT,MAAM,IAAG,MAAM,IAAG,KAAK,KAAK,aAAa,OAAO,CAAC;AAAA,IACrD;AAAA,IACA;AAAA,EACJ;AAAA,EAEA,WAAW,KAAK,OAAO;AAAA,IACnB,MAAM,UAAU,IAAG,KAAK,SAAS,cAAc,CAAC;AAAA,IAChD,MAAM,WAAW,IAAG,KAAK,KAAK,aAAa,OAAO;AAAA,IAClD,MAAM,OAAO,MAAM,IAAG,SAAS,CAAC;AAAA,IAChC,IAAI,MAAM;AAAA,MACN,MAAM,IAAG,UAAU,UAAU,IAAI;AAAA,IACrC,EAAO;AAAA,MACH,OAAO,KAAK,sCAAsC,GAAG;AAAA;AAAA,EAE7D;AAAA,EAEA,WAAW,OAAO,WAAW;AAAA,IACzB,MAAM,UAAU,IAAG,KAAK,SAAS,cAAc,GAAG;AAAA,IAClD,IAAI,CAAC,SAAS;AAAA,MACV;AAAA,IACJ;AAAA,IACA,MAAM,IAAG,MAAM,IAAG,KAAK,KAAK,aAAa,OAAO,CAAC;AAAA,EACrD;AAAA;AASJ,eAAe,iBAAiB,CAC5B,KACA,eACA,gBACA,uBACa;AAAA,EACb,MAAM,IAAG,MAAM,cAAc;AAAA,EAO7B,MAAM,kBAAkB,IAAI,IAAY,0BAA0B;AAAA,EAClE,IAAI,uBAAuB;AAAA,IACvB,WAAW,QAAQ,uBAAuB;AAAA,MACtC,gBAAgB,IAAI,IAAI;AAAA,IAC5B;AAAA,EACJ;AAAA,EAEA,MAAM,UAAU,MAAM,IAAG,QAAQ,aAAa;AAAA,EAC9C,WAAW,aAAa,SAAS;AAAA,IAC7B,MAAM,UAAU,IAAG,KAAK,KAAK,eAAe,SAAS;AAAA,IACrD,MAAM,YAAY,MAAM,IAAG,KAAK,OAAO;AAAA,IACvC,IAAI,CAAC,WAAW;AAAA,MACZ;AAAA,IACJ;AAAA,IACA,IAAI,UAAU,OAAO,GAAG;AAAA,MACpB,MAAM,OAAO,MAAM,IAAG,SAAS,OAAO;AAAA,MACtC,IAAI,MAAM;AAAA,QACN,MAAM,IAAG,UACL,IAAG,KAAK,KAAK,gBAAgB,SAAS,GACtC,IACJ;AAAA,MACJ;AAAA,IACJ,EAAO,SAAI,UAAU,YAAY,GAAG;AAAA,MAGhC,IAAI,gBAAgB,IAAI,SAAS,GAAG;AAAA,QAChC;AAAA,MACJ;AAAA,MACA,IAAI,cAAc,aAAa,cAAc,cAAc;AAAA,QACvD,MAAM,WACF,KACA,SACA,SACA,gBACA,qBACJ;AAAA,MACJ,EAAO;AAAA,QACH,MAAM,WACF,KACA,SACA,eACA,gBACA,qBACJ;AAAA;AAAA,IAER;AAAA,EACJ;AAAA;AAUJ,eAAsB,cAAc,CAChC,KACA,aACA,WACA,YACqB;AAAA,EACrB,MAAM,eAAe,IAAG,KAAK,QAAQ,WAAW;AAAA,EAEhD,MAAM,UAAU,MAAM,IAAG,KAAK,YAAY;AAAA,EAC1C,IAAI,CAAC,SAAS;AAAA,IACV,MAAM,IAAI,MAAM,mBAAmB,cAAc;AAAA,EACrD;AAAA,EAEA,IAAI,CAAC,QAAQ,YAAY,GAAG;AAAA,IACxB,MAAM,IAAI,MACN,oBAAoB,uEACxB;AAAA,EACJ;AAAA,EAEA,QAAQ,MAAM,iBAAiB,MAAM,aAAa,KAAI,YAAY;AAAA,EAClE,MAAM,wBAAwB,MAAM,cAAc,KAAI,YAAY;AAAA,EAClE,IAAI,sBAAsB,OAAO,GAAG;AAAA,IAChC,OAAO,KACH,YAAY,sBAAsB,0CAA0C,CAAC,GAAG,qBAAqB,EAAE,KAAK,IAAI,GACpH;AAAA,EACJ;AAAA,EASA,MAAM,mBAAmB,IAAI,IAAY,0BAA0B;AAAA,EACnE,WAAW,QAAQ,uBAAuB;AAAA,IACtC,iBAAiB,IAAI,IAAI;AAAA,EAC7B;AAAA,EAGA,WAAW,WAAW,KAAK,UAAU;AAAA,IACjC,QAAQ,sBAAsB,eAC1B,QAAQ,mBACZ;AAAA,EACJ;AAAA,EAEA,MAAM,kBAAkB;AAAA,IACpB,YAAY,KAAK;AAAA,IACjB,UAAU,KAAK,SAAS,IAAI,CAAC,OAAO;AAAA,MAChC,WAAW,EAAE;AAAA,MACb,qBAAqB,EAAE;AAAA,IAC3B,EAAE;AAAA,EACN;AAAA,EAEA,MAAM,eAAe,cAAc,IAAG,KAAK,SAAS,cAAc,OAAO;AAAA,EACzE,MAAM,aAAa,IAAG,KAAK,KAAK,cAAc,gBAAgB,KAAK,IAAI,GAAG;AAAA,EAC1E,MAAM,IAAG,MAAM,UAAU;AAAA,EAEzB,IAAI;AAAA,IACA,MAAM,IAAG,UACL,IAAG,KAAK,KAAK,YAAY,sBAAsB,GAC/C,KAAK,UAAU,eAAe,CAClC;AAAA,IAEA,MAAM,IAAG,UACL,IAAG,KAAK,KAAK,YAAY,YAAY,GACrC,KAAK,UAAU,IAAI,CACvB;AAAA,IAEA,WAAW,WAAW,KAAK,UAAU;AAAA,MACjC,MAAM,aAAa,IAAG,KAAK,QAAQ,QAAQ,mBAAmB;AAAA,MAC9D,MAAM,iBAAiB,IAAG,KAAK,KAAK,cAAc,UAAU;AAAA,MAE5D,MAAM,cAAc,MAAM,IAAG,KAAK,cAAc;AAAA,MAChD,IAAI,CAAC,aAAa;AAAA,QACd,MAAM,IAAI,MACN,gCAAgC,gBACpC;AAAA,MACJ;AAAA,MAIA,MAAM,qBAAqB,MAAM,sBAC7B,KACA,gBACA,YACA,qBACJ;AAAA,MAEA,MAAM,kBACF,KACA,gBACA,IAAG,KAAK,KAAK,YAAY,UAAU,GACnC,kBACJ;AAAA,IACJ;AAAA,IAEA,MAAM,gBAAgB,IAAG,KAAK,KAAK,cAAc,WAAW;AAAA,IAC5D,IACI,CAAC,iBAAiB,IAAI,WAAW,KAChC,MAAM,IAAG,OAAO,aAAa,GAChC;AAAA,MACE,MAAM,WACF,KACA,eACA,cACA,YACA,qBACJ;AAAA,IACJ;AAAA,IAEA,MAAM,kBAAkB,IAAG,KAAK,KAAK,cAAc,aAAa;AAAA,IAChE,IACI,CAAC,iBAAiB,IAAI,aAAa,KAClC,MAAM,IAAG,OAAO,eAAe,GAClC;AAAA,MACE,MAAM,WACF,KACA,iBACA,cACA,YACA,qBACJ;AAAA,IACJ;AAAA,IAEA,MAAM,oBAAoB,IAAG,KAAK,QAAQ,SAAS;AAAA,IACnD,IAAI,CAAE,MAAM,IAAG,OAAO,iBAAiB,GAAI;AAAA,MACvC,MAAM,IAAG,MAAM,iBAAiB;AAAA,IACpC;AAAA,IACA,MAAM,UAAU,IAAG,KAAK,KAAK,mBAAmB,GAAG,kBAAkB;AAAA,IAErE,MAAM,UAAU,MAAM,iBAAiB,KAAI,UAAU;AAAA,IACrD,MAAM,IAAG,UAAU,SAAS,OAAO;AAAA,IAEnC,MAAM,WAAW,IAAG,KAAK,KAAK,cAAc,YAAY;AAAA,IAExD,OAAO;AAAA,MACH;AAAA,MACA;AAAA,MACA,YAAY,KAAK;AAAA,MACjB;AAAA,MACA,UAAU,KAAK,SAAS,IAAI,CAAC,OAAO;AAAA,QAChC,MAAM,IAAG,KAAK,QAAQ,EAAE,mBAAmB;AAAA,QAC3C,MAAM,EAAE;AAAA,MACZ,EAAE;AAAA,IACN;AAAA,YACF;AAAA,IACE,MAAM,IAAG,GAAG,UAAU;AAAA;AAAA;AAY9B,eAAsB,2BAA2B,CAC7C,KACA,aACe;AAAA,EACf,MAAM,sBAAsB,IAAG,KAAK,QAAQ,WAAW;AAAA,EACvD,MAAM,eAAe,IAAG,KAAK,SAAS,mBAAmB,KAAK;AAAA,EAG9D,MAAM,SAAS,IAAG,IAAI,OAAO;AAAA,EAC7B,MAAM,aAAa,IAAG,KAAK,KAAK,QAAQ,mBAAmB,KAAK,IAAI,GAAG;AAAA,EACvE,MAAM,IAAG,MAAM,UAAU;AAAA,EAEzB,IAAI;AAAA,IAEA,MAAM,WACF,KACA,qBACA,qBACA,UACJ;AAAA,IAGA,MAAM,cAAc,IAAG,KAAK,KAAK,YAAY,sBAAsB;AAAA,IACnE,MAAM,aAAa,MAAM,IAAG,QAAQ,UAAU,GAAG,OAAO,CAAC,MACrD,EAAE,SAAS,OAAO,CACtB;AAAA,IACA,IAAI,UAAU,SAAS,GAAG;AAAA,MACtB,MAAM,WAAW,UAAU;AAAA,MAC3B,MAAM,cAAc,MAAM,IAAG,SACzB,IAAG,KAAK,KAAK,YAAY,QAAQ,GACjC,OACJ;AAAA,MACA,IAAI,CAAC,aAAa;AAAA,QACd,MAAM,IAAI,MACN,kBAAkB,kDACtB;AAAA,MACJ;AAAA,MAEA,OAAO,YAAY,QAAQ,WACvB,MACI,KAAK,MAAM,WAAW,CAO9B;AAAA,MACA,IAAI,YAAY;AAAA,QACZ,MAAM,IAAI,MACN,mBAAmB,oDAAoD,WAAW,SACtF;AAAA,MACJ;AAAA,MAEA,MAAM,cAAc;AAAA,QAChB,YAAY,KAAK,cAAc,OAAO,WAAW;AAAA,QACjD,WAAW,KAAK,YAAY,CAAC,GAAG,IAAI,CAAC,OAAO;AAAA,UACxC,WAAW,EAAE,MAAM,OAAO,WAAW;AAAA,UACrC,qBAAqB,EAAE,uBAAuB;AAAA,QAClD,EAAE;AAAA,MACN;AAAA,MACA,MAAM,IAAG,UAAU,aAAa,KAAK,UAAU,WAAW,CAAC;AAAA,IAC/D,EAAO,SAAI,CAAE,MAAM,IAAG,OAAO,WAAW,GAAI;AAAA,MACxC,MAAM,IAAI,MACN,kEAAkE,iKACtE;AAAA,IACJ;AAAA,IAGA,MAAM,UAAU,IAAG,KAAK,KACpB,QACA,GAAG,gBAAgB,KAAK,IAAI,OAChC;AAAA,IACA,MAAM,UAAU,MAAM,iBAAiB,KAAI,UAAU;AAAA,IACrD,MAAM,IAAG,UAAU,SAAS,OAAO;AAAA,IAEnC,OAAO;AAAA,YACT;AAAA,IACE,MAAM,IAAG,GAAG,UAAU,EAAE,MAAM,MAAM,EAAE;AAAA;AAAA;;ACxavC,IAAM,aAAY,2CAA2C,QAAQ,QAAQ,EAAE;AAAA;AAe/E,MAAM,eAAc;AAAA,EACH;AAAA,EAApB,WAAW,CAAS,gBAAyC,CAAC,GAAG;AAAA,IAA7C;AAAA;AAAA,MAEhB,MAAM,CAAC,eAA8B;AAAA,IACrC,KAAK,gBAAgB;AAAA;AAAA,MAGrB,QAAQ,GAAW;AAAA,IACnB,OAAO,KAAK,cAAc,YAAY,OAAO,KAAK,cAAc,WAAW;AAAA;AAAA,MAG3E,QAAQ,GAAyB;AAAA,IACjC,OAAO,KAAK,cAAc;AAAA;AAAA,MAG1B,UAAU,GAAiB;AAAA,IAC3B,OAAO,KAAK,cAAc,cAAc,CAAC;AAAA;AAAA,MAGzC,oBAAoB,GAAkC;AAAA,IACtD,OAAO,KAAK,cAAc,wBAAwB;AAAA;AAAA,MAGlD,QAAQ,GAAuB;AAAA,IAC/B,OAAO,KAAK,cAAc;AAAA;AAAA,MAG1B,QAAQ,GAAuB;AAAA,IAC/B,OAAO,KAAK,cAAc;AAAA;AAAA,MAG1B,MAAM,GAA6D;AAAA,IACnE,MAAM,SAAS,KAAK,cAAc;AAAA,IAClC,IAAI,QAAQ;AAAA,MACR,OAAO,OAAO,WAAW,aAAa,SAAS,MAAM;AAAA,IACzD;AAAA,IACA;AAAA;AAAA,MAGA,WAAW,GAAiF;AAAA,IAC5F,MAAM,cAAc,KAAK,cAAc;AAAA,IACvC,IAAI,aAAa;AAAA,MACb,OAAO,OAAO,gBAAgB,aAAa,cAAc,YAAY;AAAA,IACzE;AAAA,IACA;AAAA;AAAA,MAGA,OAAO,GAA4B;AAAA,IACnC,OAAO,KAAK,cAAc;AAAA;AAAA,MAG1B,WAAW,GAAmC;AAAA,IAC9C,OAAO,KAAK,cAAc;AAAA;AAElC;AAEO,IAAM,iBAAgB,IAAI;AAAA;AAK1B,MAAM,SAAQ;AAAA,EAKK;AAAA,SAHE,YAAY,IAAI,OAAO,mEAAqE,GAAG;AAAA,EAC/G;AAAA,EAER,WAAW,CAAW,gBAAgB,gBAAe;AAAA,IAA/B;AAAA,IAClB,KAAK,aAAa,cAAc;AAAA;AAAA,EAGpC,cAAiC,IAAa,aAA2B;AAAA,IACrE,MAAM,OAAO,KAAK,MAAS;AAAA,IAC3B,KAAK,aAAa,KAAK,WAAW,OAAO,GAAG,WAAW;AAAA,IACvD,OAAO;AAAA;AAAA,EAGX,iBAAoC,IAAa,gBAA0C;AAAA,IACvF,MAAM,cAAc,eAAe,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE;AAAA,IACzD,OAAO,KAAK,eAAkB,GAAG,WAAW;AAAA;AAAA,EAGhD,kBAAqC,IAAa,iBAA4C;AAAA,IAC1F,MAAM,cAAc,gBAAgB,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE;AAAA,IAC5D,OAAO,KAAK,eAAkB,GAAG,WAAW;AAAA;AAAA,EAatC,UAAU,CAAC,MAA0C;AAAA,IAC3D,IAAI,CAAC,MAAM;AAAA,MACP,OAAO;AAAA,IACX;AAAA,IACA,OAAO,SAAQ,UAAU,KAAK,IAAI;AAAA;AAAA,OAGtB,QAAO,CAAC,SAAsB,eAAuE;AAAA,IACjH,QAAQ,KAAK,SAAS,MAAM,KAAK,kBAAkB,SAAS,aAAa;AAAA,IACzE,MAAM,WAAW,MAAM,KAAK,SAAS,KAAK,IAAI;AAAA,IAC9C,IAAI,aAAa,SAAS,UAAU,OAAO,SAAS,SAAS,MAAM;AAAA,MAC/D,OAAO;AAAA,IACX;AAAA,IACA,MAAM,IAAI,eAAc,UAAU,iCAAiC;AAAA;AAAA,OAGzD,kBAAiB,CAAC,SAAsB,eAAoD;AAAA,IACtG,IAAI,MAAM,KAAK,cAAc,WAAW,QAAQ;AAAA,IAChD,IAAI,QAAQ,UAAU,aAAa,OAAO,KAAK,QAAQ,KAAK,EAAE,WAAW,GAAG;AAAA,MAIxE,OAAO,MAAM,KAAK,cAAc,qBAAqB,QAAQ,KAAK;AAAA,IACtE;AAAA,IAEA,MAAM,UAAU,OAAO,OAAO,CAAC,GAAG,KAAK,cAAc,SAAS,QAAQ,OAAO;AAAA,IAC7E,OAAO,KAAK,OAAO,EAAE,QAAQ,SAAO,QAAQ,SAAS,YAAY,OAAO,QAAQ,OAAO,CAAC,CAAC;AAAA,IAEzF,MAAM,iBACF,OAAO,kBAAkB,aACnB,gBACA,YAAY;AAAA,IAEtB,MAAM,aAAa;AAAA,MACf,QAAQ,QAAQ;AAAA,MAChB;AAAA,MACA,MAAM,QAAQ;AAAA,MACd,aAAa,KAAK,cAAc;AAAA,IACpC;AAAA,IAEA,MAAM,iBAA8B;AAAA,SAC7B;AAAA,SACC,MAAM,eAAe;AAAA,QACrB,MAAM;AAAA,QACN;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,IAEA,IAAI;AAAA,IACJ,IAAI,YAAW,eAAe,IAAI,KAC1B,eAAe,gBAAgB,mBAChC,QAAO,eAAe,IAAI,GAAG;AAAA,MAClC,OAAO,eAAe;AAAA,IACxB,EAAO,SAAI,KAAK,WAAW,QAAQ,eAAe,GAAG;AAAA,MACnD,OAAO,KAAK,UAAU,eAAe,IAAI;AAAA,IAC3C,EAAO;AAAA,MACL,OAAO,eAAe;AAAA;AAAA,IAGxB,MAAM,OAAoB;AAAA,SACnB;AAAA,MACH;AAAA,IACJ;AAAA,IAEA,OAAO,EAAE,KAAK,KAAK;AAAA;AAAA,EAGf,WAAW,OAAO,KAAa,SAAsB;AAAA,IACzD,IAAI,cAAc,EAAE,KAAK,KAAK;AAAA,IAC9B,WAAW,cAAc,KAAK,YAAY;AAAA,MACtC,IAAI,WAAW,KAAK;AAAA,QAChB,cAAc,MAAM,WAAW,IAAI;AAAA,UAC/B,OAAO,KAAK;AAAA,aACT;AAAA,QACP,CAAC,KAAK;AAAA,MACV;AAAA,IACJ;AAAA,IACA,IAAI,WAAiC;AAAA,IACrC,IAAI;AAAA,MACA,WAAW,OAAO,KAAK,cAAc,YAAY,OAAO,YAAY,KAAK,YAAY,IAAI;AAAA,MAC3F,OAAO,GAAG;AAAA,MACR,WAAW,cAAc,KAAK,YAAY;AAAA,QACtC,IAAI,WAAW,SAAS;AAAA,UACpB,WAAW,MAAM,WAAW,QAAQ;AAAA,YAChC,OAAO,KAAK;AAAA,YACZ,KAAK,YAAY;AAAA,YACjB,MAAM,YAAY;AAAA,YAClB,OAAO;AAAA,YACP,UAAU,WAAW,SAAS,MAAM,IAAI;AAAA,UAC5C,CAAC,KAAK;AAAA,QACV;AAAA,MACJ;AAAA,MACA,IAAI,aAAa,WAAW;AAAA,QAC1B,IAAI,aAAa,OAAO;AAAA,UACtB,MAAM,IAAI,YAAW,GAAG,gFAAgF;AAAA,QAC1G,EAAO;AAAA,UACL,MAAM;AAAA;AAAA,MAEV;AAAA;AAAA,IAEJ,WAAW,cAAc,KAAK,YAAY;AAAA,MACtC,IAAI,WAAW,MAAM;AAAA,QACjB,WAAW,MAAM,WAAW,KAAK;AAAA,UAC7B,OAAO,KAAK;AAAA,UACZ,KAAK,YAAY;AAAA,UACjB,MAAM,YAAY;AAAA,UAClB,UAAU,SAAS,MAAM;AAAA,QAC7B,CAAC,KAAK;AAAA,MACV;AAAA,IACJ;AAAA,IACA,OAAO;AAAA;AAAA,EAOH,KAAwB,GAAa;AAAA,IACzC,MAAM,cAAc,KAAK;AAAA,IACzB,MAAM,OAAO,IAAI,YAAY,KAAK,aAAa;AAAA,IAC/C,KAAK,aAAa,KAAK,WAAW,MAAM;AAAA,IACxC,OAAO;AAAA;AAEf;AAEA,SAAS,OAAM,CAAC,OAA2B;AAAA,EACvC,OAAO,OAAO,SAAS,eAAe,iBAAiB;AAAA;AAG3D,SAAS,WAAU,CAAC,OAA+B;AAAA,EAC/C,OAAO,OAAO,aAAa,eAAe,iBAAiB;AAAA;AAAA;AAGxD,MAAM,uBAAsB,MAAM;AAAA,EAElB;AAAA,EADV,OAAwB;AAAA,EACjC,WAAW,CAAQ,UAAoB,KAAc;AAAA,IACjD,MAAM,GAAG;AAAA,IADM;AAAA;AAGvB;AAAA;AAEO,MAAM,oBAAmB,MAAM;AAAA,EAEf;AAAA,EADV,OAAqB;AAAA,EAC9B,WAAW,CAAQ,OAAc,KAAc;AAAA,IAC3C,MAAM,GAAG;AAAA,IADM;AAAA;AAGvB;AAAA;AAEO,MAAM,uBAAsB,MAAM;AAAA,EAElB;AAAA,EADV,OAAwB;AAAA,EACjC,WAAW,CAAQ,OAAe,KAAc;AAAA,IAC5C,MAAM,GAAG;AAAA,IADM;AAAA;AAGvB;AAkCO,SAAS,YAAW,CAAC,QAAmB,SAAiB,IAAY;AAAA,EACxE,OAAO,OAAO,KAAK,MAAM,EACpB,IAAI,SAAO,sBAAqB,KAAK,OAAO,MAAM,MAAM,CAAC,EACzD,OAAO,UAAQ,KAAK,SAAS,CAAC,EAC9B,KAAK,GAAG;AAAA;AAGjB,SAAS,qBAAoB,CAAC,KAAa,OAAmJ,YAAoB,IAAY;AAAA,EAC1N,MAAM,UAAU,aAAa,UAAU,SAAS,IAAI,SAAS;AAAA,EAC7D,IAAI,iBAAiB,OAAO;AAAA,IACxB,MAAM,aAAa,MAAM,IAAI,iBAAe,mBAAmB,OAAO,WAAW,CAAC,CAAC,EAC9E,KAAK,IAAI,mBAAmB,OAAO,IAAI;AAAA,IAC5C,OAAO,GAAG,mBAAmB,OAAO,KAAK;AAAA,EAC7C;AAAA,EACA,IAAI,iBAAiB,KAAK;AAAA,IACtB,MAAM,eAAe,MAAM,KAAK,KAAK;AAAA,IACrC,OAAO,sBAAqB,KAAK,cAAc,SAAS;AAAA,EAC5D;AAAA,EACA,IAAI,iBAAiB,MAAM;AAAA,IACvB,OAAO,GAAG,mBAAmB,OAAO,KAAK,mBAAmB,MAAM,YAAY,CAAC;AAAA,EACnF;AAAA,EACA,IAAI,iBAAiB,QAAQ;AAAA,IACzB,OAAO,aAAY,OAAoB,OAAO;AAAA,EAClD;AAAA,EACA,OAAO,GAAG,mBAAmB,OAAO,KAAK,mBAAmB,OAAO,KAAK,CAAC;AAAA;AAgBtE,SAAS,eAAc,CAAC,UAA8B;AAAA,EACzD,WAAW,WAAW,UAAU;AAAA,IAC5B,IAA8B,QAAQ,gBAAlC,uBAA+C;AAAA,MAC/C,OAAO;AAAA,IACX;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAAA;AA2CJ,MAAM,iBAAmB;AAAA,EACT;AAAA,EAAuB;AAAA,EAA1C,WAAW,CAAQ,KAAuB,cAAsC,CAAC,cAAmB,WAAW;AAAA,IAA5F;AAAA,IAAuB;AAAA;AAAA,OAEpC,MAAK,GAAe;AAAA,IACtB,OAAO,KAAK,YAAY,MAAM,KAAK,IAAI,KAAK,CAAC;AAAA;AAErD;;AChXO,SAAS,oBAAoB,CAAC,MAAyB;AAAA,EAC1D,OAAO,0BAA0B,MAAM,KAAK;AAAA;AAGzC,SAAS,yBAAyB,CAAC,MAAW,qBAA4C;AAAA,EAC7F,OAAO;AAAA;;ACwBJ,SAAS,qBAAqB,CAAC,MAA0B;AAAA,EAC5D,OAAO,2BAA2B,MAAM,KAAK;AAAA;AAG1C,SAAS,0BAA0B,CAAC,MAAW,qBAA6C;AAAA,EAC/F,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,IAAM,KAAK,SAAS,OAAO,YAAY,KAAK;AAAA,IAC5C,kBAAoB,KAAK,uBAAuB,OAAO,YAAY,KAAK;AAAA,IACxE,QAAU,KAAK,aAAa,OAAO,YAAY,KAAK;AAAA,IACpD,cAAgB,KAAK,mBAAmB,OAAO,YAAa,IAAI,KAAK,KAAK,eAAe;AAAA,IACzF,SAAW,KAAK,cAAc,OAAO,YAAY,uBAAuB,KAAK,UAAU;AAAA,EAC3F;AAAA;;;AC1CG,SAAS,wBAAwB,CAAC,MAA6B;AAAA,EAClE,OAAO,8BAA8B,MAAM,KAAK;AAAA;AAG7C,SAAS,6BAA6B,CAAC,MAAW,qBAAgD;AAAA,EACrG,OAAO;AAAA;;;AC6BJ,SAAS,kCAAkC,CAAC,MAAuC;AAAA,EACtF,OAAO,wCAAwC,MAAM,KAAK;AAAA;AAGvD,SAAS,uCAAuC,CAAC,MAAW,qBAA0D;AAAA,EACzH,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,IAC5D,eAAiB,KAAK,oBAAoB,OAAO,YAAY,KAAK;AAAA,IAClE,SAAW,KAAK,cAAc,OAAO,YAAY,uBAAuB,KAAK,UAAU;AAAA,IACvF,SAAW,KAAK,cAAc,OAAO,YAAY,gCAAgC,KAAK,UAAU;AAAA,EACpG;AAAA;;;ACEG,SAAS,4BAA4B,CAAC,MAAiC;AAAA,EAC1E,OAAO,kCAAkC,MAAM,KAAK;AAAA;AAGjD,SAAS,iCAAiC,CAAC,MAAW,qBAAoD;AAAA,EAC7G,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,IAAM,KAAK,SAAS,OAAO,YAAY,KAAK;AAAA,IAC5C,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,IAC5D,eAAiB,KAAK,oBAAoB,OAAO,YAAY,KAAK;AAAA,IAClE,cAAgB,KAAK,mBAAmB,OAAO,YAAY,KAAK;AAAA,IAChE,cAAgB,KAAK,mBAAmB,OAAO,YAAY,KAAK;AAAA,IAChE,aAAe,KAAK,kBAAkB,OAAO,YAAY,KAAK;AAAA,IAC9D,eAAiB,KAAK,oBAAoB,OAAO,YAAY,KAAK;AAAA,IAClE,SAAW,KAAK,cAAc,OAAO,YAAY,gCAAgC,KAAK,UAAU;AAAA,EACpG;AAAA;;;ACLG,SAAS,+BAA+B,CAAC,MAAoC;AAAA,EAChF,OAAO,sCAAqC,MAAM,KAAK;AAAA;AAGpD,SAAS,qCAAoC,CAAC,MAAW,qBAAuD;AAAA,EACnH,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,IAAM,KAAK,SAAS,OAAO,YAAY,KAAK;AAAA,IAC5C,QAAU,KAAK,aAAa,OAAO,YAAY,KAAK;AAAA,IACpD,UAAY,KAAK,eAAe,OAAO,YAAY,KAAK;AAAA,IACxD,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,IAC5D,cAAgB,KAAK,mBAAmB,OAAO,YAAY,KAAK;AAAA,IAChE,sBAAwB,KAAK,2BAA2B,OAAO,YAAc,KAAK,wBAAuC,IAAI,4BAA4B;AAAA,IACzJ,SAAW,KAAK,cAAc,OAAO,YAAY,uBAAuB,KAAK,UAAU;AAAA,IACvF,WAAa,KAAK,gBAAgB,OAAO,YAAY,mCAAmC,KAAK,YAAY;AAAA,EAC7G;AAAA;;;ACzDG,SAAS,uBAAuB,CAAC,MAA4B;AAAA,EAChE,OAAO,6BAA6B,MAAM,KAAK;AAAA;AAG5C,SAAS,4BAA4B,CAAC,MAAW,qBAA+C;AAAA,EACnG,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,IAAM,KAAK,SAAS,OAAO,YAAY,KAAK;AAAA,IAC5C,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,OAAS,KAAK,YAAY,OAAO,YAAY,KAAK;AAAA,IAClD,qBAAuB,KAAK,0BAA0B,OAAO,YAAY,KAAK;AAAA,IAC9E,SAAW,KAAK,cAAc,OAAO,YAAY,uBAAuB,KAAK,UAAU;AAAA,EAC3F;AAAA;;;ACHG,SAAS,wBAAwB,CAAC,MAA6B;AAAA,EAClE,OAAO,8BAA8B,MAAM,KAAK;AAAA;AAG7C,SAAS,6BAA6B,CAAC,MAAW,qBAAgD;AAAA,EACrG,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,KAAO,KAAK,UAAU,OAAO,YAAY,KAAK;AAAA,IAC9C,QAAU,KAAK,aAAa,OAAO,YAAY,KAAK;AAAA,IACpD,gBAAkB,KAAK,qBAAqB,OAAO,YAAa,IAAI,KAAK,KAAK,iBAAiB;AAAA,IAC/F,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,IAC5D,SAAW,KAAK,cAAc,OAAO,YAAY,uBAAuB,KAAK,UAAU;AAAA,IACvF,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,EAChE;AAAA;;;AC7BG,SAAS,gCAAgC,CAAC,MAAqC;AAAA,EAClF,OAAO,sCAAsC,MAAM,KAAK;AAAA;AAGrD,SAAS,qCAAqC,CAAC,MAAW,qBAAwD;AAAA,EACrH,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,IAAM,KAAK,SAAS,OAAO,YAAY,KAAK;AAAA,IAC5C,oBAAsB,KAAK,yBAAyB,OAAO,YAAY,KAAK;AAAA,IAC5E,SAAW,KAAK,cAAc,OAAO,YAAY,uBAAuB,KAAK,UAAU;AAAA,IACvF,sBAAwB,KAAK,2BAA2B,OAAO,YAAY,KAAK;AAAA,IAChF,cAAgB,KAAK,mBAAmB,OAAO,YAAa,IAAI,KAAK,KAAK,eAAe;AAAA,EAC7F;AAAA;;;AC7CG,SAAS,uBAAuB,CAAC,MAA4B;AAAA,EAChE,OAAO,6BAA6B,MAAM,KAAK;AAAA;AAG5C,SAAS,4BAA4B,CAAC,MAAW,qBAA+C;AAAA,EACnG,OAAO;AAAA;;;ACJJ,SAAS,qBAAqB,CAAC,MAA0B;AAAA,EAC5D,OAAO,2BAA2B,MAAM,KAAK;AAAA;AAG1C,SAAS,0BAA0B,CAAC,MAAW,qBAA6C;AAAA,EAC/F,OAAO;AAAA;;;ACJJ,SAAS,0BAA0B,CAAC,MAA+B;AAAA,EACtE,OAAO,gCAAgC,MAAM,KAAK;AAAA;AAG/C,SAAS,+BAA+B,CAAC,MAAW,qBAAkD;AAAA,EACzG,OAAO;AAAA;;;ACwDJ,SAAS,qBAAqB,CAAC,MAA0B;AAAA,EAC5D,OAAO,2BAA2B,MAAM,KAAK;AAAA;AAG1C,SAAS,0BAA0B,CAAC,MAAW,qBAA6C;AAAA,EAC/F,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,IAAM,KAAK,SAAS,OAAO,YAAY,KAAK;AAAA,IAC5C,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,UAAY,KAAK,eAAe,OAAO,YAAY,KAAK;AAAA,IACxD,gBAAkB,KAAK,qBAAqB,OAAO,YAAY,KAAK;AAAA,IACpE,UAAY,KAAK,eAAe,OAAO,YAAY,KAAK;AAAA,IACxD,cAAgB,KAAK,mBAAmB,OAAO,YAAa,IAAI,KAAK,KAAK,eAAe;AAAA,IACzF,SAAW,KAAK,cAAc,OAAO,YAAY,KAAK;AAAA,IACtD,aAAe,KAAK,kBAAkB,OAAO,YAAY,2BAA2B,KAAK,cAAc;AAAA,IACvG,SAAW,KAAK,cAAc,OAAO,YAAY,uBAAuB,KAAK,UAAU;AAAA,EAC3F;AAAA;;;ACpDG,SAAS,0BAA0B,CAAC,MAA+B;AAAA,EACtE,OAAO,gCAAgC,MAAM,KAAK;AAAA;AAG/C,SAAS,+BAA+B,CAAC,MAAW,qBAAkD;AAAA,EACzG,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,IAAM,KAAK,SAAS,OAAO,YAAY,KAAK;AAAA,IAC5C,SAAW,KAAK,cAAc,OAAO,YAAY,KAAK;AAAA,IACtD,cAAgB,KAAK,mBAAmB,OAAO,YAAa,IAAI,KAAK,KAAK,eAAe;AAAA,IACzF,kBAAoB,KAAK,uBAAuB,OAAO,YAAY,KAAK;AAAA,IACxE,SAAW,KAAK,cAAc,OAAO,YAAY,uBAAuB,KAAK,UAAU;AAAA,EAC3F;AAAA;;;ACHG,SAAS,8BAA8B,CAAC,MAAmC;AAAA,EAC9E,OAAO,oCAAoC,MAAM,KAAK;AAAA;AAGnD,SAAS,mCAAmC,CAAC,MAAW,qBAAsD;AAAA,EACjH,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,cAAgB,KAAK,mBAAmB,OAAO,YAAY,KAAK;AAAA,IAChE,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,SAAW,KAAK,cAAc,OAAO,YAAY,uBAAuB,KAAK,UAAU;AAAA,IACvF,gBAAkB,KAAK,qBAAqB,OAAO,YAAY,KAAK;AAAA,IACpE,eAAiB,KAAK,oBAAoB,OAAO,YAAY,KAAK;AAAA,IAClE,gBAAkB,KAAK,qBAAqB,OAAO,YAAY,KAAK;AAAA,EACxE;AAAA;;;ACSG,SAAS,4BAA4B,CAAC,MAAiC;AAAA,EAC1E,OAAO,kCAAkC,MAAM,KAAK;AAAA;AAGjD,SAAS,iCAAiC,CAAC,MAAW,qBAAoD;AAAA,EAC7G,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,cAAgB,KAAK,mBAAmB,OAAO,YAAY,KAAK;AAAA,IAChE,YAAc,KAAK,iBAAiB,OAAO,YAAY,gCAAgC,KAAK,aAAa;AAAA,IACzG,mBAAqB,KAAK,wBAAwB,OAAO,YAAY,+BAA+B,KAAK,oBAAoB;AAAA,IAC7H,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,oBAAsB,KAAK,yBAAyB,OAAO,YAAY,KAAK;AAAA,IAC5E,aAAe,KAAK,kBAAkB,OAAO,YAAY,KAAK;AAAA,IAC9D,SAAW,KAAK,cAAc,OAAO,YAAY,uBAAuB,KAAK,UAAU;AAAA,EAC3F;AAAA;;;ACxDG,SAAS,+BAA+B,CAAC,MAAoC;AAAA,EAChF,OAAO,sCAAqC,MAAM,KAAK;AAAA;AAGpD,SAAS,qCAAoC,CAAC,MAAW,qBAAuD;AAAA,EACnH,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,cAAgB,KAAK,mBAAmB,OAAO,YAAY,KAAK;AAAA,IAChE,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,UAAY,KAAK,eAAe,OAAO,YAAc,KAAK,YAA2B,IAAI,sBAAsB;AAAA,IAC/G,UAAY,KAAK,eAAe,OAAO,YAAc,KAAK,YAA2B,IAAI,4BAA4B;AAAA,EACzH;AAAA;;;ACfG,SAAS,4BAA4B,CAAC,MAAiC;AAAA,EAC1E,OAAO,kCAAkC,MAAM,KAAK;AAAA;AAGjD,SAAS,iCAAiC,CAAC,MAAW,qBAAoD;AAAA,EAC7G,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,cAAgB,KAAK,mBAAmB,OAAO,YAAY,KAAK;AAAA,IAChE,oBAAsB,KAAK,yBAAyB,OAAO,YAAa,IAAI,KAAK,KAAK,qBAAqB;AAAA,IAC3G,cAAgB,KAAK,mBAAmB,OAAO,YAAa,IAAI,KAAK,KAAK,eAAe;AAAA,IACzF,SAAW,KAAK,cAAc,OAAO,YAAY,uBAAuB,KAAK,UAAU;AAAA,EAC3F;AAAA;;;AC7CG,SAAS,qBAAqB,CAAC,MAA0B;AAAA,EAC5D,OAAO,2BAA2B,MAAM,KAAK;AAAA;AAG1C,SAAS,0BAA0B,CAAC,MAAW,qBAA6C;AAAA,EAC/F,OAAO;AAAA;;;ACsEJ,SAAS,0BAA0B,CAAC,MAA+B;AAAA,EACtE,OAAO,gCAAgC,MAAM,KAAK;AAAA;AAG/C,SAAS,+BAA+B,CAAC,MAAW,qBAAkD;AAAA,EACzG,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,IAAM,KAAK,SAAS,OAAO,YAAY,KAAK;AAAA,IAC5C,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,cAAgB,KAAK,mBAAmB,OAAO,YAAa,IAAI,KAAK,KAAK,eAAe;AAAA,IACzF,QAAU,KAAK,aAAa,OAAO,YAAY,sBAAsB,KAAK,SAAS;AAAA,IACnF,SAAW,KAAK,cAAc,OAAO,YAAY,KAAK;AAAA,IACtD,UAAY,KAAK,eAAe,OAAO,YAAY,KAAK;AAAA,IACxD,QAAU,KAAK,aAAa,OAAO,YAAY,KAAK;AAAA,IACpD,SAAW,KAAK,cAAc,OAAO,YAAY,KAAK;AAAA,IACtD,QAAU,KAAK,aAAa,OAAO,YAAY,KAAK;AAAA,IACpD,SAAW,KAAK,cAAc,OAAO,YAAY,uBAAuB,KAAK,UAAU;AAAA,IACvF,SAAW,KAAK,cAAc,OAAO,YAAY,KAAK;AAAA,EAC1D;AAAA;;;ACtDG,SAAS,kBAAkB,CAAC,MAAuB;AAAA,EACtD,OAAO,wBAAwB,MAAM,KAAK;AAAA;AAGvC,SAAS,uBAAuB,CAAC,MAAW,qBAA0C;AAAA,EACzF,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,IAAM,KAAK,SAAS,OAAO,YAAY,KAAK;AAAA,IAC5C,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,UAAY,KAAK,eAAe,OAAO,YAAY,KAAK;AAAA,IACxD,kBAAoB,KAAK,uBAAuB,OAAO,YAAY,KAAK;AAAA,IACxE,mBAAqB,KAAK,wBAAwB,OAAO,YAAY,KAAK;AAAA,IAC1E,kBAAoB,KAAK,uBAAuB,OAAO,YAAY,KAAK;AAAA,IACxE,SAAW,KAAK,cAAc,OAAO,YAAY,uBAAuB,KAAK,UAAU;AAAA,EAC3F;AAAA;;;ACnCG,SAAS,2BAA2B,CAAC,MAAgC;AAAA,EACxE,OAAO,iCAAiC,MAAM,KAAK;AAAA;AAGhD,SAAS,gCAAgC,CAAC,MAAW,qBAAmD;AAAA,EAC3G,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,IAAM,KAAK,SAAS,OAAO,YAAY,KAAK;AAAA,IAC5C,MAAQ,KAAK,WAAW,OAAO,YAAY,KAAK;AAAA,IAChD,SAAW,KAAK,cAAc,OAAO,YAAY,KAAK;AAAA,IACtD,SAAW,KAAK,cAAc,OAAO,YAAY,uBAAuB,KAAK,UAAU;AAAA,EAC3F;AAAA;;;ACsYG,SAAS,sBAAsB,CAAC,MAA2B;AAAA,EAC9D,OAAO,8BAA4B,MAAM,KAAK;AAAA;AAG3C,SAAS,6BAA2B,CAAC,MAAW,qBAA8C;AAAA,EACjG,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,IAAM,KAAK,SAAS,OAAO,YAAY,KAAK;AAAA,IAC5C,UAAY,KAAK,eAAe,OAAO,YAAY,KAAK;AAAA,IACxD,mBAAqB,KAAK,wBAAwB,OAAO,YAAY,KAAK;AAAA,IAC1E,QAAU,KAAK,aAAa,OAAO,YAAY,KAAK;AAAA,IACpD,gBAAkB,KAAK,qBAAqB,OAAO,YAAY,KAAK;AAAA,IACpE,MAAQ,KAAK,WAAW,OAAO,YAAY,KAAK;AAAA,IAChD,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,IAC5D,cAAgB,KAAK,mBAAmB,OAAO,YAAa,IAAI,KAAK,KAAK,eAAe;AAAA,IACzF,QAAU,KAAK,aAAa,OAAO,YAAY,sBAAsB,KAAK,SAAS;AAAA,IACnF,yBAA2B,KAAK,8BAA8B,OAAO,YAAY,KAAK;AAAA,IACtF,UAAY,KAAK,eAAe,OAAO,YAAY,KAAK;AAAA,IACxD,iBAAmB,KAAK,sBAAsB,OAAO,YAAY,wBAAwB,KAAK,kBAAkB;AAAA,IAChH,aAAe,KAAK,kBAAkB,OAAO,YAAY,KAAK;AAAA,IAC9D,cAAgB,KAAK,mBAAmB,OAAO,YAAa,IAAI,KAAK,KAAK,eAAe;AAAA,IACzF,kBAAoB,KAAK,uBAAuB,OAAO,YAAa,IAAI,KAAK,KAAK,mBAAmB;AAAA,IACrG,oBAAsB,KAAK,yBAAyB,OAAO,YAAY,KAAK;AAAA,IAC5E,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,aAAe,KAAK,kBAAkB,OAAO,YAAY,KAAK;AAAA,IAC9D,kBAAoB,KAAK,uBAAuB,OAAO,YAAY,KAAK;AAAA,IACxE,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,IAC5D,cAAgB,KAAK,mBAAmB,OAAO,YAAc,KAAK,gBAA+B,IAAI,2BAA2B;AAAA,IAChI,SAAW,KAAK,cAAc,OAAO,YAAa,IAAI,KAAK,KAAK,UAAU;AAAA,IAC1E,MAAQ,KAAK,WAAW,OAAO,YAAY,yBAAyB,KAAK,OAAO;AAAA,IAChF,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,IAC5D,UAAY,KAAK,eAAe,OAAO,YAAY,KAAK;AAAA,IACxD,YAAc,KAAK,iBAAiB,OAAO,YAAY,mBAAmB,KAAK,aAAa;AAAA,IAC5F,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,IAC5D,4BAA8B,KAAK,iCAAiC,OAAO,YAAa,IAAI,KAAK,KAAK,6BAA6B;AAAA,IACnI,WAAa,KAAK,gBAAgB,OAAO,YAAY,yBAAyB,KAAK,YAAY;AAAA,IAC/F,aAAe,KAAK,kBAAkB,OAAO,YAAY,2BAA2B,KAAK,cAAc;AAAA,IACvG,aAAe,KAAK,kBAAkB,OAAO,YAAY,KAAK;AAAA,IAC9D,SAAW,KAAK,cAAc,OAAO,YAAY,6BAA6B,KAAK,UAAU;AAAA,IAC7F,aAAe,KAAK,kBAAkB,OAAO,YAAc,KAAK,eAA8B,IAAI,+BAA+B;AAAA,IACjI,MAAQ,KAAK,WAAW,OAAO,YAAc,KAAK,QAAuB,IAAI,qBAAqB;AAAA,IAClG,iBAAmB,KAAK,sBAAsB,OAAO,YAAc,KAAK,mBAAkC,IAAI,+BAA+B;AAAA,IAC7I,sBAAwB,KAAK,2BAA2B,OAAO,YAAY,KAAK;AAAA,IAChF,oBAAsB,KAAK,yBAAyB,OAAO,YAAY,gCAAgC,KAAK,qBAAqB;AAAA,IACjI,gBAAkB,KAAK,qBAAqB,OAAO,YAAY,KAAK;AAAA,IACpE,wBAA0B,KAAK,6BAA6B,OAAO,YAAc,KAAK,0BAAyC,IAAI,kCAAkC;AAAA,IACrK,oBAAsB,KAAK,yBAAyB,OAAO,YAAc,KAAK,sBAAqC,IAAI,8BAA8B;AAAA,IACrJ,6BAA+B,KAAK,kCAAkC,OAAO,YAAc,KAAK,+BAA8C,IAAI,mCAAmC;AAAA,IACrL,gBAAkB,KAAK,qBAAqB,OAAO,YAAc,KAAK,kBAAiC,IAAI,0BAA0B;AAAA,IACrI,oBAAsB,KAAK,yBAAyB,OAAO,YAAY,wBAAwB,KAAK,qBAAqB;AAAA,IACzH,qBAAuB,KAAK,0BAA0B,OAAO,YAAY,iCAAiC,KAAK,sBAAsB;AAAA,IACrI,QAAU,KAAK,aAAa,OAAO,YAAc,KAAK,UAAyB,IAAI,qBAAqB;AAAA,IACxG,UAAY,KAAK,eAAe,OAAO,YAAY,6BAA6B,KAAK,WAAW;AAAA,IAChG,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,sBAAwB,KAAK,2BAA2B,OAAO,YAAY,KAAK;AAAA,IAChF,cAAgB,KAAK,mBAAmB,OAAO,YAAY,KAAK;AAAA,EACpE;AAAA;;;ACpcG,SAAS,mCAAmC,CAAC,MAAwC;AAAA,EACxF,OAAO,0CAAyC,MAAM,KAAK;AAAA;AAGxD,SAAS,yCAAwC,CAAC,MAAW,qBAA2D;AAAA,EAC3H,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,SAAW,KAAK,cAAc,OAAO,YAAY,uBAAuB,KAAK,UAAU;AAAA,IACvF,gBAAkB,KAAK,qBAAqB,OAAO,YAAY,KAAK;AAAA,IACpE,cAAgB,KAAK,mBAAmB,OAAO,YAAY,KAAK;AAAA,IAChE,aAAe,KAAK,kBAAkB,OAAO,YAAY,KAAK;AAAA,IAC9D,SAAW,KAAK,cAAc,OAAO,YAAY,KAAK;AAAA,EAC1D;AAAA;;ACpCG,SAAS,sCAAsC,CAAC,MAA2C;AAAA,EAC9F,OAAO,4CAA4C,MAAM,KAAK;AAAA;AAG3D,SAAS,2CAA2C,CAAC,MAAW,qBAA8D;AAAA,EACjI,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,cAAgB,KAAK,mBAAmB,OAAO,YAAY,KAAK;AAAA,IAChE,aAAe,KAAK,kBAAkB,OAAO,YAAY,KAAK;AAAA,IAC9D,SAAW,KAAK,cAAc,OAAO,YAAY,KAAK;AAAA,IACtD,gBAAkB,KAAK,qBAAqB,OAAO,YAAY,KAAK;AAAA,EACxE;AAAA;;AC/BG,SAAS,oBAAoB,CAAC,MAAyB;AAAA,EAC1D,OAAO,0BAA0B,MAAM,KAAK;AAAA;AAGzC,SAAS,yBAAyB,CAAC,MAAW,qBAA4C;AAAA,EAC7F,OAAO;AAAA;;ACJJ,SAAS,gBAAgB,CAAC,MAAqB;AAAA,EAClD,OAAO,sBAAsB,MAAM,KAAK;AAAA;AAGrC,SAAS,qBAAqB,CAAC,MAAW,qBAAwC;AAAA,EACrF,OAAO;AAAA;;;ACyDJ,SAAS,eAAe,CAAC,MAAoB;AAAA,EAChD,OAAO,qBAAqB,MAAM,KAAK;AAAA;AAGpC,SAAS,oBAAoB,CAAC,MAAW,qBAAuC;AAAA,EACnF,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,IAAM,KAAK,SAAS,OAAO,YAAY,KAAK;AAAA,IAC5C,MAAQ,KAAK,WAAW,OAAO,YAAY,KAAK;AAAA,IAChD,QAAU,KAAK,aAAa,OAAO,YAAY,KAAK;AAAA,IACpD,UAAY,KAAK,eAAe,OAAO,YAAY,iBAAiB,KAAK,WAAW;AAAA,IACpF,cAAgB,KAAK,mBAAmB,OAAO,YAAY,KAAK;AAAA,IAChE,oBAAsB,KAAK,yBAAyB,OAAO,YAAY,KAAK;AAAA,IAC5E,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,sBAAwB,KAAK,2BAA2B,OAAO,YAAY,KAAK;AAAA,IAChF,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,IAC5D,kBAAoB,KAAK,uBAAuB,OAAO,YAAY,KAAK;AAAA,EAC5E;AAAA;;ACzEG,SAAS,yBAAyB,CAAC,MAA8B;AAAA,EACpE,OAAO,+BAA+B,MAAM,KAAK;AAAA;AAG9C,SAAS,8BAA8B,CAAC,MAAW,qBAAiD;AAAA,EACvG,OAAO;AAAA;;;ACyBJ,SAAS,iBAAiB,CAAC,MAAsB;AAAA,EACpD,OAAO,uBAAuB,MAAM,KAAK;AAAA;AAGtC,SAAS,sBAAsB,CAAC,MAAW,qBAAyC;AAAA,EACvF,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,IAAM,KAAK,SAAS,OAAO,YAAY,KAAK;AAAA,IAC5C,MAAQ,KAAK,WAAW,OAAO,YAAY,KAAK;AAAA,IAChD,SAAW,KAAK,cAAc,OAAO,YAAc,KAAK,WAA0B,IAAI,iBAAiB;AAAA,IACvG,OAAS,KAAK,YAAY,OAAO,YAAc,KAAK,SAAwB,IAAI,eAAe;AAAA,IAC/F,YAAc,KAAK,iBAAiB,OAAO,YAAY,0BAA0B,KAAK,aAAa;AAAA,EACvG;AAAA;;ACtCG,SAAS,6BAA6B,CAAC,MAAkC;AAAA,EAC5E,OAAO,mCAAmC,MAAM,KAAK;AAAA;AAGlD,SAAS,kCAAkC,CAAC,MAAW,qBAAqD;AAAA,EAC/G,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,cAAgB,KAAK,mBAAmB,OAAO,YAAY,KAAK;AAAA,IAChE,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,SAAW,KAAK,cAAc,OAAO,YAAY,KAAK;AAAA,IACtD,gBAAkB,KAAK,qBAAqB,OAAO,YAAY,KAAK;AAAA,EACxE;AAAA;;ACAG,SAAS,0BAA0B,CAAC,MAA+B;AAAA,EACtE,OAAO,gCAAgC,MAAM,KAAK;AAAA;AAG/C,SAAS,+BAA+B,CAAC,MAAW,qBAAkD;AAAA,EACzG,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,YAAc,KAAK,iBAAiB,OAAO,YAAY,8BAA8B,KAAK,aAAa;AAAA,IACvG,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,oBAAsB,KAAK,yBAAyB,OAAO,YAAY,KAAK;AAAA,IAC5E,aAAe,KAAK,kBAAkB,OAAO,YAAY,KAAK;AAAA,EAClE;AAAA;;ACjCG,SAAS,kBAAkB,CAAC,MAAuB;AAAA,EACtD,OAAO,wBAAwB,MAAM,KAAK;AAAA;AAGvC,SAAS,uBAAuB,CAAC,MAAW,qBAA0C;AAAA,EACzF,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,MAAQ,KAAK;AAAA,IACb,SAAW,KAAK;AAAA,IAChB,cAAgB,KAAK,mBAAmB,OAAO,YAAY,KAAK;AAAA,EACpE;AAAA;;ACrBG,SAAS,8BAA8B,CAAC,MAAmC;AAAA,EAC9E,OAAO,oCAAoC,MAAM,KAAK;AAAA;AAGnD,SAAS,mCAAmC,CAAC,MAAW,qBAAsD;AAAA,EACjH,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,sBAAwB,KAAK,2BAA2B,OAAO,YAAY,KAAK;AAAA,IAChF,cAAgB,KAAK,mBAAmB,OAAO,YAAa,IAAI,KAAK,KAAK,eAAe;AAAA,EAC7F;AAAA;;;ACuBG,SAAS,wBAAwB,CAAC,MAA6B;AAAA,EAClE,OAAO,8BAA8B,MAAM,KAAK;AAAA;AAG7C,SAAS,6BAA6B,CAAC,MAAW,qBAAgD;AAAA,EACrG,OAAO;AAAA;;;ACZJ,SAAS,+BAA+B,CAAC,MAAoC;AAAA,EAChF,OAAO,qCAAqC,MAAM,KAAK;AAAA;AAGpD,SAAS,oCAAoC,CAAC,MAAW,qBAAuD;AAAA,EACnH,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,WAAa,KAAK,gBAAgB,OAAO,YAAY,yBAAyB,KAAK,YAAY;AAAA,IAC/F,UAAY,KAAK,eAAe,OAAO,YAAY,KAAK;AAAA,IACxD,cAAgB,KAAK,mBAAmB,OAAO,YAAY,KAAK;AAAA,IAChE,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,IAC5D,mBAAqB,KAAK,wBAAwB,OAAO,YAAY,KAAK;AAAA,EAC9E;AAAA;;;ACrCG,SAAS,qBAAqB,CAAC,MAA0B;AAAA,EAC5D,OAAO,2BAA2B,MAAM,KAAK;AAAA;AAG1C,SAAS,0BAA0B,CAAC,MAAW,qBAA6C;AAAA,EAC/F,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,UAAY,KAAK,eAAe,OAAO,YAAY,KAAK;AAAA,IACxD,kBAAoB,KAAK,uBAAuB,OAAO,YAAY,KAAK;AAAA,IACxE,mBAAqB,KAAK,wBAAwB,OAAO,YAAY,KAAK;AAAA,EAC9E;AAAA;;;ACPG,SAAS,uBAAuB,CAAC,MAA4B;AAAA,EAChE,OAAO,6BAA6B,MAAM,KAAK;AAAA;AAG5C,SAAS,4BAA4B,CAAC,MAAW,qBAA+C;AAAA,EACnG,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,IAAM,KAAK,SAAS,OAAO,YAAY,KAAK;AAAA,IAC5C,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,IAC5D,MAAQ,KAAK,WAAW,OAAO,YAAY,KAAK;AAAA,IAChD,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,EAC9D;AAAA;;;AC/BG,SAAS,sBAAsB,CAAC,MAA2B;AAAA,EAC9D,OAAO,4BAA4B,MAAM,KAAK;AAAA;AAG3C,SAAS,2BAA2B,CAAC,MAAW,qBAA8C;AAAA,EACjG,OAAO;AAAA;;;ACyZJ,SAAS,mBAAkB,CAAC,MAAuB;AAAA,EACtD,OAAO,yBAAwB,MAAM,KAAK;AAAA;AAGvC,SAAS,wBAAuB,CAAC,MAAW,qBAA0C;AAAA,EACzF,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,IAAM,KAAK,SAAS,OAAO,YAAY,KAAK;AAAA,IAC5C,UAAY,KAAK,eAAe,OAAO,YAAY,KAAK;AAAA,IACxD,oBAAsB,KAAK,yBAAyB,OAAO,YAAY,KAAK;AAAA,IAC5E,aAAe,KAAK,kBAAkB,OAAO,YAAY,KAAK;AAAA,IAC9D,MAAQ,KAAK,WAAW,OAAO,YAAY,KAAK;AAAA,IAChD,aAAe,KAAK,kBAAkB,OAAO,YAAY,KAAK;AAAA,IAC9D,UAAY,KAAK,eAAe,OAAO,YAAY,KAAK;AAAA,IACxD,QAAU,KAAK,aAAa,OAAO,YAAY,sBAAsB,KAAK,SAAS;AAAA,IACnF,SAAW,KAAK,cAAc,OAAO,YAAY,KAAK;AAAA,IACtD,kBAAoB,KAAK,uBAAuB,OAAO,YAAa,IAAI,KAAK,KAAK,mBAAmB;AAAA,IACrG,SAAW,KAAK,cAAc,OAAO,YAAa,IAAI,KAAK,KAAK,UAAU;AAAA,IAC1E,aAAe,KAAK,kBAAkB,OAAO,YAAY,KAAK;AAAA,IAC9D,SAAW,KAAK,cAAc,OAAO,YAAY,2BAA2B,KAAK,UAAU;AAAA,IAC3F,aAAe,KAAK,kBAAkB,OAAO,YAAc,KAAK,eAA8B,IAAI,6BAA6B;AAAA,IAC/H,UAAY,KAAK,eAAe,OAAO,YAAY,KAAK;AAAA,IACxD,cAAgB,KAAK,mBAAmB,OAAO,YAAY,KAAK;AAAA,IAChE,gBAAkB,KAAK,qBAAqB,OAAO,YAAY,KAAK;AAAA,IACpE,cAAgB,KAAK,mBAAmB,OAAO,YAAY,KAAK;AAAA,IAChE,8BAAgC,KAAK,mCAAmC,OAAO,YAAY,KAAK;AAAA,IAChG,SAAW,KAAK,cAAc,OAAO,YAAY,KAAK;AAAA,IACtD,YAAc,KAAK,iBAAiB,OAAO,YAAY,sBAAsB,KAAK,aAAa;AAAA,IAC/F,gBAAkB,KAAK,qBAAqB,OAAO,YAAY,KAAK;AAAA,IACpE,WAAa,KAAK,gBAAgB,OAAO,YAAc,KAAK,aAA4B,IAAI,+BAA+B;AAAA,IAC3H,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,IAC5D,qBAAuB,KAAK,0BAA0B,OAAO,YAAY,+BAA+B,KAAK,sBAAsB;AAAA,IACnI,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,sBAAwB,KAAK,2BAA2B,OAAO,YAAY,2BAA2B,KAAK,uBAAuB;AAAA,IAClI,kBAAoB,KAAK,uBAAuB,OAAO,YAAY,KAAK;AAAA,IACxE,WAAa,KAAK,gBAAgB,OAAO,YAAY,KAAK;AAAA,IAC1D,cAAgB,KAAK,mBAAmB,OAAO,YAAY,KAAK;AAAA,IAChE,OAAS,KAAK,YAAY,OAAO,YAAY,KAAK;AAAA,IAClD,gBAAkB,KAAK,qBAAqB,OAAO,YAAY,uBAAuB,KAAK,iBAAiB;AAAA,IAC5G,cAAgB,KAAK,mBAAmB,OAAO,YAAa,IAAI,KAAK,KAAK,eAAe;AAAA,IACzF,QAAU,KAAK,aAAa,OAAO,YAAY,KAAK;AAAA,IACpD,YAAc,KAAK,iBAAiB,OAAO,YAAY,kBAAkB,KAAK,aAAa;AAAA,IAC3F,cAAgB,KAAK,mBAAmB,OAAO,YAAc,KAAK,gBAA+B,IAAI,kBAAkB;AAAA,IACvH,kBAAoB,KAAK,uBAAuB,OAAO,YAAc,KAAK,oBAAmC,IAAI,uBAAuB;AAAA,IACxI,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,IAC5D,mBAAqB,KAAK,wBAAwB,OAAO,YAAY,KAAK;AAAA,IAC1E,kBAAoB,KAAK,uBAAuB,OAAO,YAAY,qBAAqB,KAAK,mBAAmB;AAAA,IAChH,iBAAmB,KAAK,sBAAsB,OAAO,YAAY,KAAK;AAAA,IACtE,aAAe,KAAK,kBAAkB,OAAO,YAAY,KAAK;AAAA,IAC9D,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,IAC5D,SAAW,KAAK,cAAc,OAAO,YAAY,KAAK;AAAA,IACtD,6BAA+B,KAAK,kCAAkC,OAAO,YAAc,KAAK,+BAA8C,IAAI,sCAAsC;AAAA,IACxL,qBAAuB,KAAK,0BAA0B,OAAO,YAAY,KAAK;AAAA,IAC9E,sBAAwB,KAAK,2BAA2B,OAAO,YAAY,KAAK;AAAA,IAChF,aAAe,KAAK,kBAAkB,OAAO,YAAY,2BAA2B,KAAK,cAAc;AAAA,IACvG,gBAAkB,KAAK,qBAAqB,OAAO,YAAY,KAAK;AAAA,IACpE,cAAgB,KAAK,mBAAmB,OAAO,YAAY,qBAAqB,KAAK,eAAe;AAAA,IACpG,iBAAmB,KAAK,sBAAsB,OAAO,YAAY,KAAK;AAAA,IACtE,YAAc,KAAK,iBAAiB,OAAO,YAAY,KAAK;AAAA,EAChE;AAAA;;AC3dG,SAAS,sBAAsB,CAAC,MAA2B;AAAA,EAC9D,OAAO,4BAA4B,MAAM,KAAK;AAAA;AAG3C,SAAS,2BAA2B,CAAC,MAAW,qBAA8C;AAAA,EACjG,OAAO;AAAA;;;ACLJ,SAAS,6BAA6B,CAAC,MAAkC;AAAA,EAC5E,OAAO,mCAAmC,MAAM,KAAK;AAAA;AAGlD,SAAS,kCAAkC,CAAC,MAAW,qBAAqD;AAAA,EAC/G,OAAO;AAAA;;;ACkHJ,SAAS,mBAAmB,CAAC,MAAwB;AAAA,EACxD,OAAO,yBAAyB,MAAM,KAAK;AAAA;AAGxC,SAAS,wBAAwB,CAAC,MAAW,qBAA2C;AAAA,EAC3F,IAAI,QAAQ,MAAM;AAAA,IACd,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IAEH,IAAM,KAAK,SAAS,OAAO,YAAY,KAAK;AAAA,IAC5C,MAAQ,KAAK,WAAW,OAAO,YAAY,KAAK;AAAA,IAChD,aAAe,KAAK,kBAAkB,OAAO,YAAY,KAAK;AAAA,IAC9D,QAAU,KAAK,aAAa,OAAO,YAAY,KAAK;AAAA,IACpD,gBAAkB,KAAK,qBAAqB,OAAO,YAAY,KAAK;AAAA,IACpE,QAAU,KAAK,aAAa,OAAO,YAAY,uBAAuB,KAAK,SAAS;AAAA,IACpF,UAAY,KAAK,eAAe,OAAO,YAAc,KAAK,YAA2B,IAAI,mBAAkB;AAAA,IAC3G,gBAAkB,KAAK,qBAAqB,OAAO,YAAY,KAAK;AAAA,IACpE,cAAgB,KAAK,mBAAmB,OAAO,YAAY,KAAK;AAAA,IAChE,aAAe,KAAK,kBAAkB,OAAO,YAAY,2BAA2B,KAAK,cAAc;AAAA,IACvG,kBAAoB,KAAK,uBAAuB,OAAO,YAAa,IAAI,KAAK,KAAK,mBAAmB;AAAA,IACrG,2BAA6B,KAAK,gCAAgC,OAAO,YAAa,IAAI,KAAK,KAAK,4BAA4B;AAAA,IAChI,eAAiB,KAAK,oBAAoB,OAAO,YAAY,KAAK;AAAA,IAClE,eAAiB,KAAK,oBAAoB,OAAO,YAAY,8BAA8B,KAAK,gBAAgB;AAAA,IAChH,sBAAwB,KAAK,2BAA2B,OAAO,YAAY,KAAK;AAAA,IAChF,sBAAwB,KAAK,2BAA2B,OAAO,YAAY,KAAK;AAAA,EACpF;AAAA;;ACtIG,MAAM,oBAA4B,SAAQ;AAAA,OAKvC,uBAAsB,CAAC,mBAA+C,eAAuG;AAAA,IAC/K,IAAI,kBAAkB,iBAAiB,MAAM;AAAA,MACzC,MAAM,IAAY,eACd,cACA,2FACJ;AAAA,IACJ;AAAA,IAEA,MAAM,kBAAuB,CAAC;AAAA,IAE9B,IAAI,kBAAkB,mCAAmC,MAAM;AAAA,MAC3D,gBAAgB,kCAAkC,kBAAkB;AAAA,IACxE;AAAA,IAEA,IAAI,kBAAkB,iBAAiB,MAAM;AAAA,MACzC,gBAAgB,iBAAiB,kBAAkB;AAAA,IACvD;AAAA,IAEA,MAAM,mBAAwC,CAAC;AAAA,IAE/C,IAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AAAA,MACtD,MAAM,QAAQ,KAAK,cAAc;AAAA,MACjC,MAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAAA,MAE5C,IAAI,aAAa;AAAA,QACb,iBAAiB,mBAAmB,UAAU;AAAA,MAClD;AAAA,IACJ;AAAA,IAEA,IAAI,UAAU;AAAA,IACd,UAAU,QAAQ,QAAQ,IAAI,iBAAiB,mBAAmB,OAAO,kBAAkB,aAAa,CAAC,CAAC;AAAA,IAE1G,MAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAAA,IAEhB,OAAO,IAAY,iBAAgB,UAAU,CAAC,cAAc,oBAAoB,SAAS,CAAC;AAAA;AAAA,OAMxF,oBAAmB,CAAC,mBAA+C,eAAkF;AAAA,IACvJ,MAAM,WAAW,MAAM,KAAK,uBAAuB,mBAAmB,aAAa;AAAA,IACnF,OAAO,MAAM,SAAS,MAAM;AAAA;AAAA,OAM1B,0BAAyB,CAAC,mBAAkD,eAAuG;AAAA,IACrL,IAAI,kBAAkB,iBAAiB,MAAM;AAAA,MACzC,MAAM,IAAY,eACd,cACA,8FACJ;AAAA,IACJ;AAAA,IAEA,MAAM,kBAAuB,CAAC;AAAA,IAE9B,IAAI,kBAAkB,iBAAiB,MAAM;AAAA,MACzC,gBAAgB,iBAAiB,kBAAkB;AAAA,IACvD;AAAA,IAEA,MAAM,mBAAwC,CAAC;AAAA,IAE/C,IAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AAAA,MACtD,MAAM,QAAQ,KAAK,cAAc;AAAA,MACjC,MAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAAA,MAE5C,IAAI,aAAa;AAAA,QACb,iBAAiB,mBAAmB,UAAU;AAAA,MAClD;AAAA,IACJ;AAAA,IACA,MAAM,WAA8B;AAAA,MAChC,EAAE,aAAa,sBAAsB;AAAA,IACzC;AAAA,IAEA,MAAM,kBAAyB,gBAAe,QAAQ;AAAA,IAEtD,IAAI;AAAA,IACJ,IAAI,UAAU;AAAA,IAEd,UAAU;AAAA,IACV,IAAI,SAAS;AAAA,MACT,aAAa,IAAI;AAAA,IACrB,EAAO;AAAA,MACH,aAAa,IAAI;AAAA;AAAA,IAGrB,IAAI,kBAAkB,iBAAiB,MAAM;AAAA,MACzC,WAAW,OAAO,cAAc,kBAAkB,aAAoB;AAAA,IAC1E;AAAA,IAEA,IAAI,kBAAkB,eAAe,MAAM;AAAA,MACvC,WAAW,OAAO,YAAY,kBAAkB,WAAkB;AAAA,IACtE;AAAA,IAEA,IAAI,kBAAkB,qBAAqB,MAAM;AAAA,MAC7C,WAAW,OAAO,kBAAkB,kBAAkB,iBAAwB;AAAA,IAClF;AAAA,IAGA,IAAI,UAAU;AAAA,IAEd,MAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,IACV,GAAG,aAAa;AAAA,IAEhB,OAAO,IAAY,iBAAgB,UAAU,CAAC,cAAc,oBAAoB,SAAS,CAAC;AAAA;AAAA,OAMxF,uBAAsB,CAAC,mBAAkD,eAAkF;AAAA,IAC7J,MAAM,WAAW,MAAM,KAAK,0BAA0B,mBAAmB,aAAa;AAAA,IACtF,OAAO,MAAM,SAAS,MAAM;AAAA;AAAA,OAM1B,6BAA4B,CAAC,mBAAqD,eAAuG;AAAA,IAC3L,IAAI,kBAAkB,iBAAiB,MAAM;AAAA,MACzC,MAAM,IAAY,eACd,cACA,iGACJ;AAAA,IACJ;AAAA,IAEA,IAAI,kBAAkB,iBAAiB,MAAM;AAAA,MACzC,MAAM,IAAY,eACd,cACA,iGACJ;AAAA,IACJ;AAAA,IAEA,MAAM,kBAAuB,CAAC;AAAA,IAE9B,IAAI,kBAAkB,iBAAiB,MAAM;AAAA,MACzC,gBAAgB,iBAAiB,kBAAkB;AAAA,IACvD;AAAA,IAEA,MAAM,mBAAwC,CAAC;AAAA,IAE/C,IAAI,kBAAkB,uBAAuB,MAAM;AAAA,MAC/C,iBAAiB,yBAAyB,OAAO,kBAAkB,mBAAmB;AAAA,IAC1F;AAAA,IAEA,IAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AAAA,MACtD,MAAM,QAAQ,KAAK,cAAc;AAAA,MACjC,MAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAAA,MAE5C,IAAI,aAAa;AAAA,QACb,iBAAiB,mBAAmB,UAAU;AAAA,MAClD;AAAA,IACJ;AAAA,IACA,MAAM,WAA8B;AAAA,MAChC,EAAE,aAAa,sBAAsB;AAAA,IACzC;AAAA,IAEA,MAAM,kBAAyB,gBAAe,QAAQ;AAAA,IAEtD,IAAI;AAAA,IACJ,IAAI,UAAU;AAAA,IAEd,UAAU;AAAA,IACV,IAAI,SAAS;AAAA,MACT,aAAa,IAAI;AAAA,IACrB,EAAO;AAAA,MACH,aAAa,IAAI;AAAA;AAAA,IAGrB,IAAI,kBAAkB,iBAAiB,MAAM;AAAA,MACzC,WAAW,OAAO,cAAc,kBAAkB,aAAoB;AAAA,IAC1E;AAAA,IAEA,IAAI,kBAAkB,eAAe,MAAM;AAAA,MACvC,WAAW,OAAO,YAAY,kBAAkB,WAAkB;AAAA,IACtE;AAAA,IAEA,IAAI,kBAAkB,qBAAqB,MAAM;AAAA,MAC7C,WAAW,OAAO,kBAAkB,kBAAkB,iBAAwB;AAAA,IAClF;AAAA,IAGA,IAAI,UAAU;AAAA,IACd,UAAU,QAAQ,QAAQ,IAAI,iBAAiB,mBAAmB,OAAO,kBAAkB,aAAa,CAAC,CAAC;AAAA,IAE1G,MAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,IACV,GAAG,aAAa;AAAA,IAEhB,OAAO,IAAY,iBAAgB,UAAU,CAAC,cAAc,oBAAoB,SAAS,CAAC;AAAA;AAAA,OAMxF,0BAAyB,CAAC,mBAAqD,eAAkF;AAAA,IACnK,MAAM,WAAW,MAAM,KAAK,6BAA6B,mBAAmB,aAAa;AAAA,IACzF,OAAO,MAAM,SAAS,MAAM;AAAA;AAGpC;;AC5PO,SAAS,iBAAiB,CAC7B,QACA,kBACM;AAAA,EACN,OAAO,GAAG,OAAO,WAAW;AAAA;AAQzB,SAAS,2BAA2B,CACvC,QACA,kBACa;AAAA,EACb,MAAM,UAAkC,CAAC;AAAA,EACzC,IAAI,OAAO,UAAU;AAAA,IACjB,QAAQ,uBAAuB,OAAO;AAAA,EAC1C;AAAA,EACA,OAAO,IAAI,eAAc;AAAA,IACrB,UAAU,kBAAkB,QAAQ,gBAAgB;AAAA,IACpD,aAAa,OAAO;AAAA,IACpB;AAAA,EACJ,CAAC;AAAA;AAME,SAAS,iBAAiB,CAC7B,QACA,kBACW;AAAA,EACX,OAAO,IAAI,YACP,4BAA4B,QAAQ,gBAAgB,CACxD;AAAA;;AC1CJ,MAAM,kBAAkB,MAAM;AAAA,EAEN;AAAA,EADpB,WAAW,CACS,QAChB,SACF;AAAA,IACE,MAAM,OAAO;AAAA,IAHG;AAAA;AAKxB;AAcA,eAAsB,yBAAyB,CAC3C,QACA,kBACA,YACgB;AAAA,EAChB,MAAM,MAAM,kBAAkB,QAAQ,gBAAgB;AAAA,EACtD,IAAI;AAAA,IACA,MAAM,IAAI,uBAAuB,EAAE,WAAW,CAAC;AAAA,IAC/C,OAAO;AAAA,IACT,OAAO,OAAO;AAAA,IACZ,IAAI,iBAAiB,gBAAe;AAAA,MAChC,IAAI,MAAM,SAAS,WAAW,KAAK;AAAA,QAC/B,OAAO;AAAA,MACX;AAAA,MACA,MAAM,OAAO,MAAM,MAAM,SAAS,KAAK,EAAE,MAAM,MAAM,EAAE;AAAA,MACvD,MAAM,IAAI,UACN,MAAM,SAAS,QACf,+CAA+C,MAAM,SAAS,YAAY,MAC9E;AAAA,IACJ;AAAA,IACA,MAAM;AAAA;AAAA;AAOd,eAAsB,cAAc,CAChC,QACA,kBACA,YACA,UAC+B;AAAA,EAC/B,MAAM,YAAY,GAAG,OAAO,WAAW;AAAA,EAEvC,MAAM,WAAW,IAAI;AAAA,EACrB,MAAM,WAAW,IAAI,KAAK,CAAC,UAAU,GAAG;AAAA,IACpC,MAAM;AAAA,EACV,CAAC;AAAA,EACD,SAAS,OAAO,cAAc,UAAU,QAAQ;AAAA,EAChD,SAAS,OAAO,iBAAiB,KAAK,UAAU,EAAE,UAAU,MAAM,CAAC,CAAC;AAAA,EAEpE,MAAM,UAAkC,sBACpC;AAAA,IACI,eAAe,UAAU,OAAO;AAAA,EACpC,GACA,cACJ;AAAA,EACA,IAAI,OAAO,UAAU;AAAA,IACjB,QAAQ,uBAAuB,OAAO;AAAA,EAC1C;AAAA,EAEA,MAAM,WAAW,MAAM,MAAM,WAAW;AAAA,IACpC,QAAQ;AAAA,IACR;AAAA,IACA,MAAM;AAAA,EACV,CAAC;AAAA,EAED,IAAI,CAAC,SAAS,IAAI;AAAA,IACd,MAAM,OAAO,MAAM,SAAS,KAAK;AAAA,IACjC,MAAM,IAAI,UACN,SAAS,QACT,kBAAkB,SAAS,YAAY,MAC3C;AAAA,EACJ;AAAA,EAEA,OAAQ,MAAM,SAAS,KAAK;AAAA;AAMhC,eAAsB,iBAAiB,CACnC,QACA,kBACA,YACA,UACA,YAC+B;AAAA,EAC/B,MAAM,eAAe,GAAG,OAAO,WAAW,iDAAiD;AAAA,EAE3F,MAAM,WAAW,IAAI;AAAA,EACrB,MAAM,WAAW,IAAI,KAAK,CAAC,UAAU,GAAG;AAAA,IACpC,MAAM;AAAA,EACV,CAAC;AAAA,EACD,SAAS,OAAO,cAAc,UAAU,QAAQ;AAAA,EAEhD,MAAM,UAAkC,sBACpC;AAAA,IACI,eAAe,UAAU,OAAO;AAAA,EACpC,GACA,cACJ;AAAA,EACA,IAAI,OAAO,UAAU;AAAA,IACjB,QAAQ,uBAAuB,OAAO;AAAA,EAC1C;AAAA,EAEA,MAAM,WAAW,MAAM,MAAM,cAAc;AAAA,IACvC,QAAQ;AAAA,IACR;AAAA,IACA,MAAM;AAAA,EACV,CAAC;AAAA,EAED,IAAI,CAAC,SAAS,IAAI;AAAA,IACd,MAAM,OAAO,MAAM,SAAS,KAAK;AAAA,IACjC,MAAM,IAAI,UACN,SAAS,QACT,qBAAqB,SAAS,YAAY,MAC9C;AAAA,EACJ;AAAA,EAEA,OAAQ,MAAM,SAAS,KAAK;AAAA;AAShC,eAAsB,yBAAyB,CAC3C,QACA,kBACA,kBACA,YACA,KAC+B;AAAA,EAC/B,IAAI;AAAA,EACJ,IAAI;AAAA,EAEJ,IAAI,OAAO,qBAAqB,UAAU;AAAA,IACtC,IAAI,CAAC,KAAI;AAAA,MACL,MAAM,IAAI,MACN,+EACJ;AAAA,IACJ;AAAA,IACA,MAAM,UAAU,MAAM,IAAG,SAAS,gBAAgB;AAAA,IAClD,IAAI,YAAY,MAAM;AAAA,MAClB,MAAM,IAAI,MAAM,wBAAwB,kBAAkB;AAAA,IAC9D;AAAA,IACA,aAAa,IAAI,WAAW,OAAO;AAAA,IACnC,WAAW,IAAG,KAAK,SAAS,gBAAgB;AAAA,EAChD,EAAO;AAAA,IACH,aAAa;AAAA,IACb,WAAW;AAAA;AAAA,EAGf,IAAI,YAAY;AAAA,IACZ,OAAO,KACH,6CAA6C,6BACjD;AAAA,IACA,OAAO,gBAAgB,mBAAmB,MAAM,WAC5C,kBACI,QACA,kBACA,YACA,UACA,UACJ,CACJ;AAAA,IACA,IAAI,CAAC,gBAAgB;AAAA,MACjB,OAAO,KAAK,oCAAoC;AAAA,MAChD,OAAO;AAAA,IACX;AAAA,IACA,IACI,0BAA0B,aAC1B,eAAe,WAAW,KAC5B;AAAA,MACE,OAAO,KACH,YAAY,kEAChB;AAAA,IACJ,EAAO;AAAA,MACH,MAAM;AAAA;AAAA,EAEd;AAAA,EAEA,OAAO,KAAK,yCAAyC;AAAA,EACrD,OAAO,eAAe,QAAQ,kBAAkB,YAAY,QAAQ;AAAA;",
|
|
157
|
+
"debugId": "CB6049DB0A6A8E7064756E2164756E21",
|
|
158
|
+
"names": []
|
|
159
|
+
}
|